Skip to content

Minishell allows to relive the challenges of the past, experiencing firsthand the problems faced when Windows was non-existent. Dive into the realm of interactive command lines, understanding the essence of this fundamental form of communication. With Minishell, we are exploring the past and the art of command-line mastery.

Notifications You must be signed in to change notification settings

Nicktvdd/MiniShell

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MiniShell

✅ Project successfully completed with a score of 101/100!

minishell

Introduction

Minishell is a lightweight Unix-like shell meticulously crafted in C, offering users a fundamental command-line interface. Developed as part of the demanding 42 curriculum, Minishell encapsulates the essence of interactive command lines, taking you back to the era when Windows was but a distant dream. Dive into the world of command-line mastery and experience the challenges of a bygone era with Minishell.

This project adheres to the stringent requirements and limitations of the 42 norm, which entails a restricted set of allowed library functions and the absence of constructs like 'for' loops. Consequently, we constructed most components from scratch, embracing a low-level approach. Our guiding reference throughout this endeavor was Bash.

Minishell was a collaborative effort, with contributions from Rasmus, Juan, Jun, and myself. We collectively tackled the project, ensured a comprehensive understanding of each facet, and conducted knowledge-sharing sessions to enhance our grasp of the intricate workings.

My primary focus areas:

  • Leading architectural design
  • Facilitating group communication
  • Implementing the pipe functionality
  • Vigilant bug hunting

Key Features

  • Comprehensive Shell Commands: Minishell boasts support for a wide array of essential shell commands, including ls, cd, pwd, echo, and exit.

  • Piping and Stream Redirection: Seamlessly chain commands using pipes (|) and manage input and output streams with redirection operators (>, >>, <).

  • Environment and Shell Variables: Manipulate environment variables like PATH and define user-specific variables using export, set, and unset.

  • Inhibitors Handling: Minishell efficiently deals with inhibitors, both single (' ') and double (" ") quotation marks.

  • History Management: The shell diligently records all executed commands, allowing users to navigate command history using arrow keys.

Getting Started

Prerequisites

To run Minishell, ensure you have the following prerequisites:

  • C compiler (e.g., GCC)
  • Unix-like operating system (Linux or macOS)

Installation

  1. Clone the Minishell repository:
git clone https://github.com/Nicktvdd/minishell.git
  1. Build the Minishell executable:
cd minishell
make

Usage

Run Minishell:

./minishell

You are now ready to explore Minishell's capabilities. Experiment with basic shell commands, piping, and redirection. Minishell is rigorously designed to be robust, free from crashes (e.g., segmentation faults or bus errors), memory leaks, freezes, or infinite loops. If you encounter any such issues, please report them to us promptly.

Contact

If you have any questions, feedback, or inquiries, feel free to reach out to me at nicktvdd@gmail.com.

Happy coding!

About

Minishell allows to relive the challenges of the past, experiencing firsthand the problems faced when Windows was non-existent. Dive into the realm of interactive command lines, understanding the essence of this fundamental form of communication. With Minishell, we are exploring the past and the art of command-line mastery.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 97.6%
  • Makefile 2.4%