Skip to content

Repository files navigation

🐚✨ MiniShell - A Tiny Shell with Big Ambitions ✨🐚

Welcome to our MiniShell project! This is a 42 school project that involves reimplementing a "mini" bash terminal. A program capable of parsing a prompt and launching executables with arguments, along with a few built-in functions.

🌟 Features 🌟

  • Interactive Prompt: Display a prompt while waiting for a new command.
  • 📜 Command History: Keep track of command history using readline.
  • 🚀 Command Execution: Execute binaries found in the PATH, relative, or absolute paths.
  • 🛡️ Signal Handling: Graceful handling of ctrl-C, ctrl-D, and ctrl-\ like in bash.
  • 💬 Quoting: Handle single (') and double (") quotes to prevent shell interpretation of meta-characters.
  • 🔄 Redirections: Implement input (<), output (>), append (>>), and here-document (<<) redirections.
  • 🔗 Pipes: Support for pipes (|) to pass output of one command as input to another.
  • 🌐 Environment Variables: Expand environment variables and handle special $? variable.
  • 🔧 Built-in Commands: Includes echo, cd, pwd, export, unset, env, and exit.

🚀 Getting Started 🚀

Prerequisites 📋

  • CC: Ensure you have CC installed to compile the project.
  • Make: A make utility to build the project.
  • Valgrind: For checking memory leaks and ensuring there are no errors

Building MiniShell 🛠️

🚧 In progress 👷🏻‍♀️

About

A minimalistic shell implementation in C, replicating features of basic Unix shells. Supports command execution, built-in commands, and basic command-line parsing with options handling.

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages