A shell implemented in C. Written as a part of Operating Systems (CS39002) coursework.
The following functions have been written explicitly in C.
cd - Change directory
pwd - Present Working directory
mkdir- Make a directory (Alerts if already exists)
rmdir- Remove the directory (Alerts if no such file or directory)
ls - List contents of pwd
- ls -l - List the contents in long listing format
cp - Copy contents of file1 to file2; only if file1 was more recently modified. Create file2 if not present already.
exit - Exit the shell ; also works for z
Supports running the execuables (predominanatly, ./a.out and scripting commands, like touch, cat, python notif.py )
Any path added to your
$PATHfolder will work. [Refer to function runprocess in shell.c]
Support background execution such as
python notif.py &- returns its PID.
Input from and output to files, such as
./d < in.txtand
./inc > in.txtsupported. (Both can work simultaneously.)
Support piping upto 2 levels - such as
./inc | ./dand
./inc | ./d | ./t
make clean make ./Cshell
The test cases are present in tests folder.
run.c creates a child process to execute
shell.c in a gnome-terminal, suited for debuggging. In case the terminal session is to be viewed in the continuing session, execution is as :
make clean make ./myshell
grepdon't work for some freaking reason. Most of the other commands like cat, touc, gedit, atom work but these 2 seem to hold a grudge against me.
support piping with system calls.