πŸ’» 42sh 🐚

42sh

Description πŸ“

The 42sh is a project carried out by groups of 5, during our 1st year in EPITECH Grand Ecole program.
Its purpose is to recreate in C a Unix shell based on TCSH.
In addition, we’ve taken inspiration from Powerlevel10k for our shell prompt.

Usage βš”οΈ

You can run 42sh like this :

./42sh

You can execute script with 42sh like this :

./42sh [script]

You can also add the 42sh to the shebang of a script, and when you run the script it will use the 42sh.

For more information, please see the help section.

> ./42sh --help
USAGE
     ./42sh
     ./42sh [script]
DESCRIPTION
     A Unix shell based on TCSH.
     You can execute the help command to see the list of available builtins.

Features list πŸ“‹

Our 42sh includes many of the features found in TCSH :

Result 🚩

The result of this project is a almost perfect shell, very similar to TCSH.
If you discover a problem or an error, don’t hesitate to create an issue and report it to us as soon as possible.

my.epitech.eu result

Category Percentage Numbers of tests Crash
basic tests 100% 4/4 No
path handling 100% 5/5 No
setenv and unsetenv 100% 2/2 No
builtin cd 100% 3/3 No
line formatting (space and tabs) 100% 8/8 No
error handling 100% 6/6 No
separator 100% 1/1 No
simple pipes 100% 3/3 No
advanced pipes 100% 6/6 No
redirections 100% 5/5 No
advanced manipulations 100% 3/3 No
&& and || tests 100% 3/3 No
globbing 100% 1/1 No
var interpreter 66,7% 2/3 No
inhibitor 100% 2/2 No
magic quotes 0% 0/3 No
alias 100% 4/4 No
scripting 0% 0/1 No
foreach 0% 0/1 No
which 100% 2/2 No
where 100% 2/2 No
if 0% 0/2 No
repeat 100% 1/1 No
parenthesis 0% 0/1 No
Results 87,5% 63/72 No

Tests and code coverage

Functional tests were carried out with a bash tester and unit tests using criterion.
Unit tests are still to be performed, but a large part of the code is already covered:

You can run the tester with this command :

./tester.sh

You can compile the project and run the tester with this command :

make tests

You can compile the project and run the unit tests with this command :

make tests_run

For more details, please click here.

Compilation πŸ› οΈ

You can compile the project with this command :

make

If you want to debug the program, you can compile the project with this :

make debug

If you want clean the project, you can run this command :

make fclean

You can clean and compile the project with make re and for debugging make re_debug

You can compile the unit tests with this command :

make unit_tests

Documentation πŸ“š

The documentation is accessible here.

You can generate the documentation with this command :

make doc

You need multiple package for generate them :

Code mandatory πŸ“¦

Of course, in exceptional cases, we may depart from these rules.

Contributors πŸ‘₯

For this project, we were a group of 5 people. Here are the people in the group: