Skip to content

aliBenhenia/minishell

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Certainly! Here's a complete README.md file for your Minishell project:

# Minishell

Minishell is a simple Unix shell implementation, aiming to replicate basic functionalities similar to bash.

## Summary

The project focuses on creating a command-line interpreter (CLI) shell that supports various commands, manages processes, and handles input/output redirection.

## Table of Contents

1. [Introduction](#introduction)
2. [Features](#features)
3. [Installation](#installation)
4. [Usage](#usage)
5. [Contributing](#contributing)
6. [Credits](#credits)
7. [License](#license)

## Introduction

The Minishell project provides a foundational understanding of shell operations, including process management, command execution, and input/output handling in Unix-like systems. It is a part of the curriculum designed to enhance proficiency in C programming and Unix system calls.

## Features

- **Command Execution**: Execute commands using `execve` based on the PATH variable.
- **Built-in Commands**: Implement shell built-ins such as `cd`, `echo`, `pwd`, `export`, `unset`, `env`, and `exit`.
- **Redirections**: Support input and output redirection (`<`, `>`, `<<`, `>>`).
- **Pipelines**: Implement command pipelines using the `|` character.
- **Signal Handling**: Manage signals like `ctrl-C`, `ctrl-D`, and `ctrl-\`.
- **Quoting**: Handle single quotes (`'`) and double quotes (`"`) appropriately.
- **Environment Variables**: Expand environment variables (`$VAR`) and special variables like `$?`.
- **History**: Maintain a command history and support navigating through it using arrow keys.
- **Error Handling**: Handle errors gracefully and ensure no memory leaks.
- **Makefile**: Provided Makefile with `all`, `clean`, `fclean`, and `re` rules for easy compilation and cleanup.

## Installation

1. Clone the repository:

   ```bash
   git clone https://github.com/yourusername/minishell.git
   cd minishell
  1. Compile the program:

    make
  2. Run the Minishell:

    ./minishell

Usage

  • After launching Minishell, you will see a prompt awaiting your commands.
  • Enter commands and press Enter to execute them.
  • Use cd, echo, pwd, export, unset, env, exit built-ins as per shell requirements.
  • Explore input/output redirection, command pipelines, and signal handling functionalities.

Contributing

Contributions are welcome! If you have any suggestions, enhancements, or bug fixes, feel free to submit a pull request.

Credits

  • Developed by Your Name
  • Inspired by similar projects and Unix shell functionalities.

License

This project is licensed under the MIT License.


Replace placeholders such as `yourusername`, `Your Name`, and adjust the URLs and content to fit your actual project details. This README.md provides a comprehensive overview of your Minishell project, covering its purpose, features, installation instructions, usage guidelines, contribution guidelines, credits, and licensing information.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published