Skip to content

LeonardoDevelopper/minishell

Repository files navigation

Minishell Badge GitHub Stars Badge C Language Badge

🐚 Minishell

A simplified shell project by Armando Borges & Leonardo Jorge πŸ› οΈ

🌟

Introduction

The existence of shells is deeply connected to the history of computing itself. Back in the early days, developers communicated with computers using 1/0 switches, which was tedious and frustrating.

To simplify this interaction, shells were created: programs that interpret commands entered by users, enabling them to perform tasks in a more human-readable way.

With Minishell, you'll travel back in time and explore the challenges faced by developers before graphical interfaces (like Windows) existed. It's a hands-on experience with the foundations of modern computing.

🧰

Description

Minishell is a command-line interface (CLI) inspired by popular shells like Bash, Zsh, and Fish.

Here’s what you’ll learn by building or using it:

How a terminal works πŸ–₯️ How commands are executed πŸ—οΈ Environment variables and PATH πŸ—ΊοΈ Redirections and pipes πŸ”„ System-level programming concepts βš™οΈ While this is a simplified version of a shell, it covers the essential features and mechanics, giving you a deeper understanding of Unix systems.

✨

Key Skills Gained

Skills

Pts

πŸ”’ Algorithm Design

10/10

πŸ§‘β€πŸ’» Interactive Programming

10/10

🐧 Unix System Programming

10/10

βš™οΈ

Setup

Prerequisites

Ensure you have the following before getting started:

  • A Linux-based operating system 🐧
  • Libraries and tools Required by readline library
  • The make utility

πŸš€

How to Compile

# Clone the repository:
git clone https://github.com/LeonardoDevelopper/minishell
# turn in directory:
cd minishell
# Install dependencies:
sudo apt-get install libreadline-dev make
# Build the project:
make
# Run the shell:
./minishell

πŸ“‚

Project Structure

    
        minishell/
        β”œβ”€β”€ include/         # Header files
        β”œβ”€β”€ libs/            # Static libraries
        β”œβ”€β”€ obj/             # Object files
        β”œβ”€β”€ src/             # Source files
        β”œβ”€β”€ Makefile         # Build script
        └── README.md        # Project documentation
    

🐧

Usage Example

Shell Demo

Once the shell is running, you can:

Navigate with cd

navigation usage example


List directory

list directory usage example


execute others commands

other example


commands with redirections

redirection usage example


commands in pipeline

pipeline usage example


🚧

Important Notes

This project is Linux-only. The binary produced (minishell) is specific to Linux environments.
πŸ‘₯

Authors

Armando Borges
Armando Borges
Leonardo Jorge
Leonardo Jorge
Built with ❀️ for educational purposes.

πŸ“œ License This project is licensed under the global License.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published