Code Monkey home page Code Monkey logo

simple_shell's Introduction

A simple Unix command line interpreter

Table of contents What is the shell? About this project Essential Functionalities of the Simple Shell File description List of allowed functions and system calls for this project USAGE Example of Usage Bugs TEAM What is the shell? The shell is a program that takes commands from the keyboard via the terminal, and gives them to the operating system to perform. To better understand how the shell actually works, you can read our [Article].

About this project This project is a simple version of the linux shell made for [ALX SOFTWARE ENGINERRING] taking part of the "Simple Shell - Linux and Unix system programming" Project. It is created using the C programming Language and it can do many functionalities that a real shell does.

Essential Functionalities of the Simple Shell: Displays a prompt "#cisfun$ " and waits for user input. Runs all commands of type "executable program" (ls and /bin/ls). Runs the following build_in commands: exit, env, setenv and unsetenv. Handles commands with arguments. Handles the PATH global variable. Handles The EOF (End Of File) condition. Handles the Ctrl + C signal -> It doesn't exit the shell

Files description AUTHORS -> List of contributors to this repository man_1_simple_shell -> Manual page for the simple_shell shell.h -> Header file shell.c -> main function sig_handler -> handles the Ctrl + C signal _EOF -> handles the End Of File condition string.c _putchar -> prints a character _puts -> prints a string _strlen -> gives the length of a string _strdup -> copies a string in a newly allocated memory concat_all -> concatenates 3 strings in a newly allocated memory line_exec.c splitstring -> splits a string into an array of words execute -> executes a command using execve realloc -> reallocates a memory block freearv -> frees a 2 dimensional array linkpath.c _getenv -> returns the value of a global variable add_node_end -> adds a node in a singly linked list linkpath -> creates a singly linked list for PATH directories _which -> finds the pathname of a command free_list -> frees the linked list of PATH value checkbuild.c checkbuild -> checks if a command is a build-in command buildin.c exitt -> handles the exit buildin command _atoi -> converts a string into an integer env -> prints the current environment _setenv -> Initialize a new global variable, or modify an existing one _unsetenv -> remove a global variable List of allowed functions and system calls for this project access (man 2 access) chdir (man 2 chdir) close (man 2 close) closedir (man 3 closedir) execve (man 2 execve) exit (man 3 exit) _exit (man 2 _exit) fflush (man 3 fflush) fork (man 2 fork) free (man 3 free) getcwd (man 3 getcwd) getline (man 3 getline) isatty (man 3 isatty) kill (man 2 kill) malloc (man 3 malloc) open (man 2 open) opendir (man 3 opendir) perror (man 3 perror) read (man 2 read) readdir (man 3 readdir) signal (man 2 signal) stat (__xstat) (man 2 stat) lstat (__lxstat) (man 2 lstat) fstat (__fxstat) (man 2 fstat) strtok (man 3 strtok) wait (man 2 wait) waitpid (man 2 waitpid) wait3 (man 2 wait3) wait4 (man 2 wait4) write (man 2 write) USAGE You can try our shell by following these steps:

Step 1: Clone our repository using this command, (you need to have git installed on your machine first)

git clone https://github.com/tecnophille/simple_shell Step 2: Change directory to simple_shell:

cd simple_shell Step 3: Compile the C files in this way:

gcc -Wall -Werror -Wextra -pedantic *.c -o hsh Step 4: Run the shell

./hsh Exiting the shell When you want to exit the shell, you can use one of the following methods:

1: Type the command "exit"

exit 2: Press on Ctrl + D

Example of Usage ubunto@ubuntu:/OS/simple_shell$ gcc -Wall -Wextra -Werror -pedantic *.c -o hsh ubunto@ubuntu:/OS/simple_shell$ ./hsh #cisfun$ echo Hello, This is an example Hello, This is an example #cisfun$ ls README.md checkbuild.c line_exec.c shell.c string.c buildin.c hsh linkpath.c shell.h #cisfun$ ^C #cisfun$ ls -l total 52 -rw-r--r-- 1 ubunto ubunto 3067 Aug 9 04:22 README.md -rw-r--r-- 1 ubunto ubunto 2183 Aug 9 16:17 buildin.c -rw-r--r-- 1 ubunto ubunto 574 Aug 9 15:59 checkbuild.c -rwxr-xr-x 1 ubunto ubunto 18144 Aug 9 04:22 hsh -rw-r--r-- 1 ubunto ubunto 2091 Aug 9 14:49 line_exec.c -rw-r--r-- 1 ubunto ubunto 199 Aug 9 14:30 linkpath.c -rw-r--r-- 1 ubunto ubunto 951 Aug 9 16:09 shell.c -rw-r--r-- 1 ubunto ubunto 1351 Aug 9 15:58 shell.h -rw-r--r-- 1 ubunto ubunto 1727 Aug 9 14:30 string.c #cisfun$ exit ubunto@ubuntu:~/OS/simple_shell$

this project was done by ogbugo ifeanyi and

simple_shell's People

Contributors

sceng avatar dannysoft-code avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.