# Custom Shell
A fully-featured custom command-line shell written in C, demonstrating system-level programming with features like piping, input/output redirection, command history with SQLite database support, command aliases, and tab completion.
---
## Features
- Execute commands with support for I/O redirection (`>`, `<`) and pipes (`|`)
- Background job execution with `&`
- Command history stored persistently using SQLite
- User-defined command aliases
- Tab completion using GNU Readline
- Signal handling for clean interruption (Ctrl+C)
- Modular codebase for easy maintenance and extensibility
---
## Prerequisites
- Linux environment (Recommended: WSL on Windows, Ubuntu, etc.)
- GCC compiler
- GNU Readline library
- SQLite3 development libraries
- Make
---
## Installation & Build
1. Clone the repository:
```bash
git clone https://github.com/yourusername/custom-shell.git
cd custom-shell
-
Build the project:
make
-
Run the shell:
./shell
Type commands as you would in a regular shell.
Use arrow keys for command history navigation.
Press Tab
for auto-completion of commands and aliases.
src/
— Source code filesinclude/
— Header filesMakefile
— Build instructionsREADME.md
— This file
Contributions are welcome! Feel free to open issues or submit pull requests.
This project is licensed under the MIT License. See the LICENSE file for details.