/minishell

This project is all about recreating your very own (mini)shell, taking bash (Bourne Again SHell) as reference

Primary LanguageC

How to use it

Using make will create the minishell executable.

Simply run it with :

./minishell

Available options

Minishell runs executables from an absolute, relative or environment PATH (/bin/ls or ls), including arguments or options. ' and " work the same as bash, except for multiline commands.

You can separate commands with ;, as well as use redirections > >> < and pipes |.

Finally, you can use Ctrl-C to interrupt and Ctrl-\ to quit a program, as well as Ctrl-D to throw an EOF, same as in bash.

A few of the functions are "built-in", meaning we don't call the executable, we re-coded them directly. It's the case for echo, pwd, cd, env, export, unset and exit.

PROJECT FILE STRUCTURE

minishell  
├── includes  
│   └── minishell.h  
├── libs  
│   ├── garbage_collector  
│   └── libftprintf  
│       ├── includes  
│       ├── libft-------------->// LIBFT library  
│       ├── Makefile  
│       ├── srcs  ------------->// ft_printf + get_next_line
├── README.md  
└── srcs  
    ├── executor ------------->//STEP 4: execute commandlist  
    │   └── README.md  
    ├── expander-------------->//STEP 3: expand variables and wildcards  
    │   └── README.md  
    ├── lexer------------------>//STEP 1: split input string into tokens  
    │   └── README.md  
    ├── minishell.c  
    └── parser----------------->//STEP 2: parse tokens into valid command list  
        └── README.md  

Resources

Shell architecture "Lexer->Parser->Expander->Executor"