This project has been created as part of the 42 curriculum by nclavel, thlibers
Minishell is a shell coded in C. To do this project we have reused the project called pipex done earlier on the 42 curriculum.
A shell is a CommandLine user Interface (CLI) that bridges between the user and the system by interpreting the command typed by the user in his terminal. A lot of different shells are available, like sh, bash, zsh, fish and many more.
This project deepened our understanding of how UNIX systems work and how a program can parse and process a command string to execute what the user wants to do.
- Build the project using
make
make
# OR
make minishell- Launch the shell
./minishell- Remove every compilation object file
make clean- Remove every compilation object file and remove the compiled file
make fclean- Remove every compilation object file, remove the compiled file and rebuild the project
make re- Use minishell on a non tty mode (partial support)
- Fully fonctional piping system
- Fully functional history
- Fully fonctional builtin
- Complete expand token
- File redirection
- Heredoc support
- Condition priority
- Wildcard expand
A lexer (also called a tokenizer) reads raw text one character at a time and splits it into meaningful pieces called tokens. After the user types a command line, the lexer processes that input and produces tokens labeled with their exact types (see the list of operators in the "Available features" section).
An Abstract Syntax Tree (AST) is a tree-shaped data structure used to represent commands for execution. It has a top node called a root, intermediate nodes called branches (subnodes), and leaf nodes where data are stored.- Bash documentation
- Readline documentation
- Tokenize a string
- AST wikipedia
- Inode wikipedia
- Lexer analysis wikipedia
- Piping in UNIX/Linux




