/42sh

Primary LanguageC

#42SH - 42School's project - 88/100 ###Creating a bash-like shell

  • Compulsory part

    • Builtins
      • cd echo exit env setenv unsetenv
    • Command line
      • Prompt
      • Line editing (stdin)
    • Executing simple commands
      • Binaries
      • Builtins
      • PATH management
    • Redirections
      • > >> < |
    • Logical Operators
      • && || ;
    • Error handling
      • Commands status
      • Segfault-proof
      • NO LEAKS
  • Bonus

    • Termcaps management
    • Signals and EOF
      • ctrl+C ctrl+D
    • Edit the line where the cursor is located
    • Moving the cursor in the terminal
      • shift+← shift+→
      • home end
    • Multiline edition
      • shift+↑ shift+↓
    • Resize the terminal
    • Browse the history and edit the selected line
    • Copy / Cut / Paste
      • ctrl+E + ctrl+K / ctrl+H / ctrl+T / ctrl+U / ctrl+P
    • Autocompletion
      • tab
    • File descriptor
      • n>&n
      • n>&- (close the file descriptor 'n')
    • Inhibitors
      • " ' \
    • Builtins
      • history, read
    • events designators
      • !! !n !-n !string !?string[?] !# ^string1^string2^
    • Subommands
      • ls `echo $HOME`
    • Subshells - env | grep toto && (setenv toto 123 && env | grep toto) && env | grep toto
    • Globbing - ls */*.[ch]
    • Hash table