Skip to content

cainiaogoroad/Cshell

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

A basic shell. Written in C

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 86.4%
  • Python 12.3%
  • Other 1.3%