This project is about creating a Bourne-Again Shell (BASH) replica for the minishell project at Codam. Minishell is therefore a user-mode program that implements a Command Line Interface (CLI).
In general terms what this program does is:
- Print a prompt
- Read a line
- Parse
- Execute
- Repeat
Features
options
minishell:~$ pgrm -r -f path/to/file
i/o redirections
minishell:~$ pgrm < infile > outfile
minishell:~$ pgrm < infile >> outfile
pipes
minishell:~$ pgrm | pgrm2 | pgrm3
enviroment variables
minishell:~$ARG=something
minishell:~$ pgrm $ARG
previous foreground exit status
minishell:~$ pgrm $?
single quotes
minishell:~$ pgrm '$ARG $ARG2'
double quotes
minishell:~$ pgrm "$ARG $ARG2"
key bindings
- arrow up / down for history.
- ctrl-C displays a new prompt on a new line.
- ctrl-D exits the shell.
- ctrl-\ does nothing.
Built-ins
- echo with option -n
- cd with only a relative or absolute path
- pwd with no options
- export with no options
- unset with no options
- env with no options or arguments
- exit with no options
Missing
- scripting control
- command / filename completion
- background control
- initialization / startup files
system calls
- fork
- exec
- exit
- wait
- open
- close
- read
- write
- pipe
- dup
- chdir
- Clone the repo
git clone https://github.com/Chr-ss/minishell.git
- cd into directory
cd minishell
- Call the Makefile
make
In addition to the README you're reading right now, there are other documents which describe more about this project: