2.8 KiB
2.8 KiB
42sh
42sh school project.
Mandatory part:
- Prompt without line edition.
- Builtins
cd,echo,exit,env,setenv,unsetenvwith there options. - Executing simple commands with there parameters using
PATH. - Support for redirection
>,>>,<and|. - Logical operand
&&and||. - Separator
;.
Optional feature (five of theses are mandatory to validate the project):
- Inhibitors
",'and\. - Advanced redirections: aggregation of file output and heredoc
<<. - Globbing:
*,?,[],{}, etc. - Backquotes `.
- Subshell with operand
(). - Local variable and builtin
unsetandexport. - History with builtin
historyand!with options. - Advanced line edition.
- File descriptors and builtin
readwith options. - Dynamical autocompletion.
Optional feature highly appreciated:
- Job Control and builtins
job,fg,bgand operand&. - Shell Scripting.
Shell / Subshell
Line editing
| Keys | Functions |
|---|---|
| Opt+C Opt+X Opt+V |
Copy Cut Paste |
| Opt+< Opt+> |
Move per words. |
| Opt+^ Opt+v |
Move per line. |
| Ctrl+L | Clear screen. |
| Ctrl+C | Terminate/Kill current foreground process. |
| Ctrl+Z | Suspend/Stop current foreground process. |
History
| Keys | Functions |
|---|---|
| ^ v |
Browse the history. |
| Ctrl+R | Research function. |
!! |
Retype the last command. |
!n |
Retype the n(numerical value) command from the begin of history. |
!-n |
Retype the -n(numerical value) command from the last command. |
!name |
Search for a command beginning with name. |
!?name |
Search for a command which contain name. |
Autocompletion
Autocompletion works with binary, path and env variable. Output is colored upon type. Using arrows to navigate is supported. Autorefreshing with a new input from the user: modification of the list of possibility.
| Commands | Functions |
|---|---|
$> l[tab] |
Search for binary. |
$> ls s[tab] |
Search for path/files. |
$> $[tab] |
Search for variables in env. |
Globbing
| Pattern | Behavior |
|---|---|
* |
Everything. |
** |
Match directory and sub-directory. |
? |
Single char. |
[a-z] |
Match range from a to z. |
[!a-z] [^a-z] |
Exclude range from a to z. |
{ab, ac} |
Match ab or ac. |
Hash table
| Commands | Functions |
|---|---|
hash |
List the content of the hash table. |
hash -r |
Clear the memory of the hash table. |
Job Control
| Commands | Functions |
|---|---|
jobs |
List all the current running jobs. |
fg |
Bring the most recent process to foreground. |
fg n |
Bring the specified jobs to foreground where n is the numerical value of the process found in jobs. |