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
- Function manual provided by linux
- Tokenize a string
- AST wikipedia
- Lexer analysis wikipedia
- Piping in UNIX/Linux



