Skip to content

cr4sh_ (pronounced crash, because it crashes all the time) is a Linux shell fully written with Rust. This can be used for educational purposes and is a great intro to Systems Programming

Notifications You must be signed in to change notification settings

bexxmodd/cr4sh_

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cr4sh_ 0.0.1

cr4sh_ (pronounced crash, because it crashes all the time) is a UNIX mini-shell implemented with Rust. This shell is a great for educational purposes. You can learn about Linux system, processes, stdio, signals and much more.

You can follow blog posts which I wrote while building this shell:



Currently, cr4sh_ provides the following functionality:

  • Multiprocessing
  • SIGINT and SIGKILL signal handling
  • Execution of OS executables
  • Redirection of standard input & output
  • Appending stdout to the file
  • Piping commands and combining with redirection
  • cd command to change directories
  • touch for creating files and updating accessed & modified dates
  • && calls to chain multiple commands

Demo:

asciicast


Installation

To run the cr4sh_ shell copy following code in your terminal:

git clone https://github.com/bexxmodd/cr4sh_.git && \
cd cr4sh_ && \
cargo run

Plans


Currently I'm looking to add other custom shell functions (which are listed in the TODO list) and if you want to contribute looking into the `customs` directory inside the `src` directory is a great start. If you want just add any of the functionality and I'll take of gluing with the rest of the program. Also, if you have design skills some 80's style logo can be a great contribution!

Main priority right now is to add cursor and history function.

TODO:

  • Create a logo
  • Allow piping of the commands
  • Add personalized color printing of the terminal user
  • Allow execution of local executables properly
  • Allow chain of commands when && is supplied
  • Handle append (>>) directive
  • Handle & symbol to send command as a background process
  • Expend signal handling capabilities
  • Implement cursor to handle arrow, home, end keyboard inputs and cursor movement
  • Usage of Tab to autocomplete commands and file/directory names
  • Implement touch function:
  • Implement history function
  • Implement dot/source function
  • Implement redirection for custom functions:
    • add additional argument to functions for stdout file
  • Implement piping for custom functions
  • Add customization of colors and style for a shell-name

About

cr4sh_ (pronounced crash, because it crashes all the time) is a Linux shell fully written with Rust. This can be used for educational purposes and is a great intro to Systems Programming

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages