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
clr
command. - 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.