A simple Unix-like shell implemented in C with basic file system operations, directory management, and file manipulation commands.
- About
- Features
- Installation
- Usage
- Available Commands
- File Structure
- Known Issues
- Contributing
- Author
- License
This project is a custom shell written in C, designed to mimic basic Unix shell functionalities. It supports file operations, directory manipulation, and essential shell commands like ls, cd, cp, mv, rm, and more.
The goal of this project is to enhance understanding of:
- System calls
- File handling
- Process management in C
- File and Directory Management – Create, delete, and navigate directories and files.
- File Copy and Move – Copy and move files between directories.
- Ownership Management – Change file permissions.
- Recursive Directory Deletion – Delete directories and their contents recursively.
- View Current Directory – Display the present working directory.
- Basic Command Execution – Execute a set of predefined commands.
- Screen Clearing – Clear the terminal screen with the
clrcommand. - Graceful Exit – Exit the shell cleanly.
-
Clone the repository:
git clone https://github.com/nasrlol/unixshell cd unixshell -
Compile the shell:
gcc -o custom_shell main.c
-
Run the shell:
./custom_shell
After running the shell (./custom_shell), you can execute the following commands:
| Command | Description |
|---|---|
ls [directory] |
List files in a directory |
mkdir [directory_name] |
Create a new directory |
rmdir [directory_name] |
Recursively delete a directory and its contents |
rm [file_name] |
Delete a file |
cp [source] [destination] |
Copy files from source to destination |
mv [source] [destination] |
Move files from source to destination |
chown [file] |
Change file ownership (permissions) |
pwd |
Print the current working directory |
cd [directory] |
Change the working directory |
clr |
Clear the terminal |
echo [message] |
Display a message |
exit |
Exit the shell |
unixshell
├── main.c # Main source file for the shell
├── shell.h # Header file (definitions & prototypes)
├── commands.c # Functions handling shell commands
├── utils.c # Utility functions
├── README.md # Documentation
├── LICENSE # License information
- Some commands may not fully replicate the behavior of a standard Unix shell.
- Does not support piping (
|) and complex command chaining.
Contributions are welcome! If you’d like to improve this project, follow these steps:
- Fork the repository
- Create a new branch
- Make your changes and test them
- Submit a pull request
Appie (nasrlol)
- GitHub: @nasrlol
- Website: nasrlol.dev
This project is licensed under the MIT License. See the LICENSE file for details.