a toy shell (no programming feature)
- subshell : ()
- pipeline : |
- background : &
- exec in order : ;
- built-in commands
- redirection
- expansion
- jobs
- fg
- bg
- umask (no arg to see the current value, or 0000~0777 to set)
- cd (no arg to go to home directory)
- >file, >>file, fd>file, fd>>file, fd>&fd, >&file, <file
- command substitution:
- cd /usr/src/kernels/$(uname -r)
- arithmetic expansion:
- echo $((3+4*5))
- tilde expansion:
- cd ~/bin
CmdLine = CmdList ENDOFLINE
CmdList = Pipe
| Pipe Delim CmdList
| Pipe Delim
Delim = ; | &
Pipe = Redirected
| Redirected '|' Pipe
Redirected = Primary
| Primary [redirectflags]
Primary = Exec
| (CmdList)
make