https://github.com/marcusvinix/minishell
The objective of this project is for you to create a simple shell. Yes, your little bash or zsh. You will learn a lot about processes and file descriptors.
https://github.com/marcusvinix/minishell
42school c minishell
Last synced: 8 days ago
JSON representation
The objective of this project is for you to create a simple shell. Yes, your little bash or zsh. You will learn a lot about processes and file descriptors.
- Host: GitHub
- URL: https://github.com/marcusvinix/minishell
- Owner: MarcusVinix
- Created: 2021-09-21T20:04:56.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2021-11-27T01:22:33.000Z (over 4 years ago)
- Last Synced: 2025-11-10T18:02:50.638Z (8 months ago)
- Topics: 42school, c, minishell
- Language: C
- Homepage:
- Size: 1.39 MB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# MiniShell
My 8th project at the 42sp and the most huge one rsrs. This is the first project that i do with a partner, that was [Jhonatam estevam lima](https://github.com/jhonatan229), and was so cool training my teamwork skills with him.
# Introduction
The existence of shells is linked to the very existence of IT. At the time, all coders agreed
that communicating with a computer using aligned 1/0 switches was seriously
irritating. It was only logical that they came up with the idea to communicate with
a computer using interactive lines of commands in a language somewhat close
to english.
With Minishell, you’ll be able to travel through time and come back to problems
people faced when Windows didn’t exist.
# Builtins Implemented
| Command | Description |
|:--------:|:---------------------------------------------------------------:|
| *echo* | Print the string in standart output. Flag -n remove break line. |
| *cd* | Change the current directory to the path passed. |
| *pwd* | Print the current directory in standart output. |
| *export* | Create or change an environment variable. |
| *unset* | Remove an environment or local variable. |
| *env* | Print all environment variable in standart output. |
| *exit* | Close the shell with the exit status specified. |
## Signals
| Signal | Description |
|:---------:|:-----------------------------------------------------:|
| *CTRL-C* | Print a new prompt on a newline. |
| *CTRL-D* | Exit the shell when the command line is empty. |
| *CTRL-\\* | Quit a process in execution with `quit (core dumped)` |
## Redirections
| Side | description |
|:----:|:--------------------------------------------------------------:|
| *<* | Redirect input. |
| *>* | Redirect output. |
| *<<* | Read input until a line containing only the delimiter is seen. |
| *>>* | Redirect output with append mode. |
## MindMap(Flux)
My partner [Jhonatam estevam lima](https://github.com/jhonatan229) make a flux in the miro to this project, [click here](https://miro.com/app/board/o9J_lghFXQU=/?invite_link_id=874120899640) if you fell interesting.
# How use
> Clone the repository
>
> Install `libreadline` with `make install`
>
> Compile the shell with `make`
>
> Execute the project `./minishell`
>
> Have fun!