/21sh

UNIX shell - a simple command-line interpreter

Primary LanguageC

21sh

Mini UNIX command interpreter.

Demo

21sh uses my own implementation of libc's functions, most of them start with ft_

21sh implements:

  • A series of builtins
  • echo
  • cd
  • setenv
  • unsetenv
  • env
  • exit
  • History
  • history n
  • history -c
  • ^string^string^
  • !string
  • !n
  • !! and !-1
  • CTRL+R (reverse-i-search)
  • ⬆️ UP or ⬇️ DOWN
  • Copy and Paste
  • CTRL-W - Copy what is currently in front of the cursor.
  • CTRL-G - Copy the entire line.
  • CTRL-K - Cut or delete what is currently in front of the cursor.
  • CTRL-X - Cut or delete the entire line.
  • CTRL-V - Paste the last thing you deleted (using CTRL-K, CTRL-W, CTRL-G or CTRL-X ).
  • Auto complete
  • unset
  • export
  • line edition
  • the “;” command line separator
  • pipes “|”
  • redirections “<”, “>”, “<<” & “>>”
  • file descriptor aggregation (e.g. 2>&- & 1>&2)
  • Go directly to the beginning or the end of a line by pressing home and end.
  • Move directly by word towards the left or the right using ctrl+LEFT and ctrl+RIGHT.
  • Simple logical operators (&& and ||)
  • CTRL+T for swapping characters.
  • CTRL+P get previous history.
  • CTRL+H delete character from cmd
  • ls alias (l || ll)

Installation

$ git clone https://github.com/julekgwa/21sh.git

Usage

$ cd 21sh
$ make && ./21sh

Authors

License

MIT