https://github.com/teresa-chow/42-minishell
Minishell is about creating a simple shell, learning more about processes and file descriptors along the way.
https://github.com/teresa-chow/42-minishell
42born2code 42porto 42school bash file-descriptors processes shell tokenization
Last synced: about 1 month ago
JSON representation
Minishell is about creating a simple shell, learning more about processes and file descriptors along the way.
- Host: GitHub
- URL: https://github.com/teresa-chow/42-minishell
- Owner: teresa-chow
- Created: 2025-02-12T13:14:46.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-08-04T08:50:57.000Z (2 months ago)
- Last Synced: 2025-08-04T12:13:49.106Z (2 months ago)
- Topics: 42born2code, 42porto, 42school, bash, file-descriptors, processes, shell, tokenization
- Language: C
- Homepage:
- Size: 2.37 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Minishell - Command Parsing and Process Management
[](https://www.42network.org/)_Minishell is a project about creating a simple custom UNIX shell in C, focusing on process control, file descriptor management, and command parsing._
___
### Table of contents
[Features](#features) · [Usage](#usage) · [License](#license) · [Study Notes](#study-notes)___
## Features
- Lexical analysis and tokenization of command-line input
- Parsing and syntax interpretation for complex command structures, using an Abstract Syntax Tree (AST), represented as a binary tree
- Process creation and management for command execution
- Environment state management with variable expansion
- Inter-process communication via pipes
- Input/output redirection and here-document handling
- Pattern matching for dynamic filename expansion (wildcards)
- Conditional and grouped command execution with logical operators
- Quoting support (single and double) for argument grouping and literal treatment of special characters
- Signal handling for interactive session control
- Robust error handling and resource management
## Usage
### Setup and compilation1. Clone repository
```bash
git clone git@github.com:teresa-chow/42-minishell.git minishell
```2. Go inside project directory and run `make`
```bash
cd minishell
make
```3. Execute `minishell` program
```bash
./minishell
```### Testing
Test minishell against bash with tmux, while monitoring memleaks
```bash
make test
```___
### Team
Carlos Teixeira [@Carlos688940](https://github.com/Carlos688940)
Teresa Chow (me)
### License
This work is published under the terms of [MIT License](./LICENSE).#### Study notes
Further reading : [Wiki](https://github.com/teresa-chow/42-minishell/wiki)
[⬆ back to top](#minishell---command-parsing-and-process-management)