Minimalist, customizable shell written in C99 with syntax highlighting and no dependency
.gitignore | ||
color.c | ||
color.h | ||
commands.c | ||
commands.h | ||
constants.h | ||
history.c | ||
history.h | ||
job.c | ||
job.h | ||
LICENSE | ||
Makefile | ||
README.md | ||
rush.1 | ||
rush.c | ||
rush.h |
rush
rush is a minimalistic shell for Unix systems written in C.
- Disclaimer: This project is for me to learn to write Unix syscalls, code might be inefficient, feel free to point out the mistakes and open a issue for that!
Preview
Dependencies
None
Building
$ make
# make install
Usage
$ ./rush
# > to redirect stdout
# < to redirect stdin
# 2> to redirect stderr
# >> to append to file
# & to run command in background
# | to pipe
# !! to repeat last command
# >& to redirect both stdout and stderr
Features
- No dependencies except a compiler
- Showing current time and directory with custom color
- Syntax highlighting on valid commands using ANSI colors
- History navigation using up and down keys with history command
- Support for environment variables
- Editing using left and right arrow keys
- !! to repeat last command
- Pipes
- autojump to directorys
- stdin, stdout, stderr redirect
- Background jobs
Built in commands
- cd
- help
- exit
- history
- export
- source
- j
- bg
Notes
- History is either saved in HOME or XDG_CONFIG_HOME if it is defined
Todo Features
- Tab completion
- Git integration
- Allow arguments with space in double quotes
- Underline file path if it exists
echo -e "\033[4mabc\033[0m"
- Aliases
Contributions
Contributions are welcomed, feel free to open a pull request.
License
This project is licensed under the GNU Public License v3.0. See LICENSE for more information.