https://github.com/goldenthrust/simple_shell
Simple Shell is a custom implementation of a Unix shell built in C. This project provides a minimalistic, yet functional command-line interpreter that can execute commands, handle input/output redirection, and manage processes. It serves as an educational tool for understanding how shells work.
https://github.com/goldenthrust/simple_shell
alx-africa simple-shell
Last synced: about 2 months ago
JSON representation
Simple Shell is a custom implementation of a Unix shell built in C. This project provides a minimalistic, yet functional command-line interpreter that can execute commands, handle input/output redirection, and manage processes. It serves as an educational tool for understanding how shells work.
- Host: GitHub
- URL: https://github.com/goldenthrust/simple_shell
- Owner: GoldenThrust
- Created: 2023-05-13T00:15:23.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2023-05-25T00:43:08.000Z (almost 2 years ago)
- Last Synced: 2025-01-17T23:24:12.378Z (4 months ago)
- Topics: alx-africa, simple-shell
- Language: C
- Homepage:
- Size: 26.4 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Authors: AUTHORS
Awesome Lists containing this project
README
# C - Simple Shell
> Group project by Adeniji Olajide and Olayemi Samson
# Output
```
Example of error with sh:$ echo "qwerty" | /bin/sh
/bin/sh: 1: qwerty: not found
$ echo "qwerty" | /bin/../bin/sh
/bin/../bin/sh: 1: qwerty: not found
$
Same error with your program hsh:$ echo "qwerty" | ./hsh
./hsh: 1: qwerty: not found
$ echo "qwerty" | ./././hsh
./././hsh: 1: qwerty: not found
$
```
List of allowed functions and system calls
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)
getpid (man 2 getpid)
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)
Compilation
Your shell will be compiled this way:gcc -Wall -Werror -Wextra -pedantic -std=gnu89 *.c -o hsh
Testing
Your shell should work like this in interactive mode:$ ./hsh
($) /bin/ls
hsh main.c shell.c
($)
($) exit
$
But also in non-interactive mode:$ echo "/bin/ls" | ./hsh
hsh main.c shell.c test_ls_2
$
$ cat test_ls_2
/bin/ls
/bin/ls
$
$ cat test_ls_2 | ./hsh
hsh main.c shell.c test_ls_2
hsh main.c shell.c test_ls_2
$