https://github.com/deryaxacar/42-minishell
This project aims to create a basic command-line shell. The shell processes user inputs to execute commands, handle file redirection, and perform pipe operations. Minishell serves as an excellent tool for understanding how a shell works by implementing fundamental shell functionalities.
https://github.com/deryaxacar/42-minishell
42 42-cursus 42-minishell 42-school 42born2code 42cursus 42minishell 42projects 42school bash minishell minishell-42 minishell42 shell terminal
Last synced: 4 months ago
JSON representation
This project aims to create a basic command-line shell. The shell processes user inputs to execute commands, handle file redirection, and perform pipe operations. Minishell serves as an excellent tool for understanding how a shell works by implementing fundamental shell functionalities.
- Host: GitHub
- URL: https://github.com/deryaxacar/42-minishell
- Owner: deryaxacar
- License: mit
- Created: 2024-04-14T11:15:24.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-25T16:11:37.000Z (8 months ago)
- Last Synced: 2025-03-30T02:22:35.427Z (7 months ago)
- Topics: 42, 42-cursus, 42-minishell, 42-school, 42born2code, 42cursus, 42minishell, 42projects, 42school, bash, minishell, minishell-42, minishell42, shell, terminal
- Language: C
- Homepage: https://github.com/deryaxacar/42-Minishell
- Size: 314 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
42 - Minishell ⌨️
This project aims to build a basic command-line shell. The shell processes user input, executes commands, handles file redirection, and manages pipes. Minishell is a great tool for understanding how a shell works by implementing core shell functionalities.## Project Goal 🎯
The goal of the Minishell project is to create a simple UNIX-like shell. It involves handling user input, parsing and executing commands, implementing file redirection and pipe operations. This project provides in-depth knowledge on system calls, memory management, and string manipulation in the C programming language.
## Usage Scenarios 🖥️
Minishell operates similarly to a standard shell and supports various functionalities. Here are some usage examples:
- **Command Execution**: Type simple commands and press Enter.
- Example: `ls -l`
- **File Redirection**: Use '>' or '>>' to redirect output to a file, and '<' to read input from a file.
- Example: `echo "Hello World" > output.txt`
- **Pipe Operations**: Use '|' to pass the output of one command as input to another.
- Example: `ls -l | grep minishell`
- **Check Command Result**: `$?` returns the exit status of the last executed command.
- Example: `ls -l; echo $?` (Checks if the last command succeeded.)
- **Background Processes**: Use '&' to run a command in the background.
- Example: `./script.sh &`## Requirements 📋
To build and run the Minishell project, the following requirements must be met:
- **A Unix-based operating system** (Linux, macOS) or a terminal emulator.
- **GCC compiler**: The project should be compiled with the GNU C Compiler.
- **Bash or a similar shell**: For testing and executing commands.
- **C libraries**: Access to standard C libraries and system calls is required.
- **Make utility**: A Makefile is used to build and manage the project.## Project Structure 📁
In addition to the main shell functionality, the project includes various helper functions and structures. Key components include:
- **Makefile**: Used to compile and build the project.
- **minishell.h**: Header file containing structure definitions and function prototypes.
- **minishell.c**: Contains the core shell logic.
- **executor.c**: Handles command execution and redirection operations.
- **parser.c**: Parses user input and processes commands.
- **signals.c**: Manages signal handling and control logic.
- **utils.c**: Includes helper functions for string manipulation and memory management.## Contributing and Feedback 🤝
If you'd like to contribute or provide feedback:
1. Fork the repository.
2. Make your changes and submit a pull request.
3. Open an issue on GitHub or join the discussion for suggestions and improvements.## License 📜
This project is licensed under the MIT License. You are free to use, modify, and distribute the code. For detailed license terms, please refer to the `LICENSE` file.
---
2025 This project was created by Derya ACAR.