This project is the most important of the first trimester of Holberton School, is the consolidation of everything we learned in the quarter about System engineering & DevOps and Low-level programming & Algorithm. Using C programming language, we develop our own Shell.
The shell is a command-line interpreter or shell that provides a command line user interface for Unix-like operating systems. The shell is both an interactive command language and a scripting language, and is used by the operating system to control the execution of the system using shell scripts.
You can install the simple shell cloning this repo:
$ git clone https://github.com/andreammgcol/simple_shell.gitNext you can compile the files with this command:
$ gcc -Wall -Werror -Wextra -pedantic *.c -o hshfinally you can run our Shell writing:
./hshvagrant@vagrant-ubuntu-trusty-64:~/simple_shell$ ./hsh
($) ls -l
total 72
-rw-rw-r-- 1 vagrant vagrant 1054 Nov 26 01:42 builtin_commands.c
drwxrwxr-x 3 vagrant vagrant 4096 Nov 26 01:42 concepts
-rw-rw-r-- 1 vagrant vagrant 890 Nov 26 01:42 counters.c
-rw-rw-r-- 1 vagrant vagrant 1940 Nov 26 01:42 exec.c
-rw-rw-r-- 1 vagrant vagrant 372 Nov 26 01:42 frees.c
-rwxrwxr-x 1 vagrant vagrant 23170 Nov 26 01:43 hsh
-rw-rw-r-- 1 vagrant vagrant 876 Nov 26 01:42 main.c
-rw-rw-r-- 1 vagrant vagrant 812 Nov 26 01:41 README.md
-rw-rw-r-- 1 vagrant vagrant 304 Nov 26 01:42 remove_new_line.c
-rw-rw-r-- 1 vagrant vagrant 786 Nov 26 01:42 shell.h
-rw-rw-r-- 1 vagrant vagrant 253 Nov 26 01:42 signal_handler.c
-rw-rw-r-- 1 vagrant vagrant 606 Nov 26 01:42 tokenize.c
-rw-rw-r-- 1 vagrant vagrant 1041 Nov 26 01:42 utilities.c
($)Holbertons-iMac-9:simple_shell holberton$ ./hsh
($) pwd
/Users/holberton/simple_shell($) cat signal_handler.c
#include "shell.h"
/**
* signal_handler - Handles the signals
* @sig_id: The identifier of the signal to handle
*
* Return: Nothing to returns
*/
void signal_handler(int sig_id)
{
if (sig_id == SIGINT)
write(STDOUT_FILENO, "\n($) ", 5);
}
($)| File Name | Description |
|---|---|
| main.c | Executes programs, verify the locations and handles all functions. |
| _exit.c | The exit built-in function |
| _getenv.c | Function to gets an environment variable |
| _open_help.c | Function to print env and help |
| builtin_commands.c | Handle all built-ins |
| counters.c | function to count delims of string |
| exec.c | Executes programs, verify the locations and handles all functions |
| frees.c | functions to free memory |
| utilities.c | Contain 5 functions: _strcat (Concatenates two strings), _strlen (Counts the length of a string), _strcmp (Compares two strings), _strdup (Duplicate a string), _atoi (Convert a string to an integer). |
| more_utilities.c | 2 more functions: _putchar ()writes the character c to stdout), _puts (Prints a string) |
| remove_new_line.c | function to remove a new line char from string |
| shell.h | Libraries and prototypes of functions |
| signal_handler.c | handle the Ctrl + C |
| tokenize.c | function to extract tokens from string |
This project was built and development with:
-
C programming language:is a general-purpose, procedural computer programming language supporting structured programming, lexical variable scope, and recursion, while a static type system prevents unintended operations. -
VirtualBox:VirtualBox is a general-purpose full virtualizer for x86 hardware, targeted at server, desktop and embedded use. -
Vagrant:Managing virtual machine environments. -
Ubuntu 14.04 LTS:Operating system tester and working. -
GCC:GNU Compiler version 4.8.4
- Marlon Santiago Arboleda - Development and documentation
- Andrea Méndez Mesias - Development and documentation