Skip to content
A basic shell. Written in C
Branch: master
Clone or download
Latest commit c2fa8ba Feb 1, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
images Update description in general as well as tests Feb 3, 2017
tests Update description in general as well as tests Feb 3, 2017
Cshell Push submitted version Jan 30, 2017
LICENSE Create LICENSE Feb 1, 2018
Makefile
README.md
myshell
run.c
shell.c

README.md

Cshell

A shell implemented in C. Written as a part of Operating Systems (CS39002) coursework.

Cshell_about

Functionalities

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

images/ls

  • ls -l - List the contents in long listing format

images/ls_l

  • 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 $PATH folder 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.txt and ./inc > in.txt supported. (Both can work simultaneously.)

  • Support piping upto 2 levels - such as ./inc | ./d and ./inc | ./d | ./t

Execution

make clean
make
./Cshell

Output : images/exec

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

Known issues

  • gcc and grep don'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.

You can’t perform that action at this time.