Skip to content

nasrlol/UnixShell

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Custom C Shell

A simple Unix-like shell implemented in C with basic file system operations, directory management, and file manipulation commands.

Table of Contents

About

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

Features

  • 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.

Installation

  1. Clone the repository:

    git clone https://github.com/nasrlol/unixshell
    cd unixshell
  2. Compile the shell:

    gcc -o custom_shell main.c
  3. Run the shell:

    ./custom_shell

Usage

After running the shell (./custom_shell), you can execute the following commands:

Available 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

File Structure

 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

Known Issues

  • Some commands may not fully replicate the behavior of a standard Unix shell.
  • Does not support piping (|) and complex command chaining.

Contributing

Contributions are welcome! If you’d like to improve this project, follow these steps:

  1. Fork the repository
  2. Create a new branch
  3. Make your changes and test them
  4. Submit a pull request

Author

Appie (nasrlol)

License

This project is licensed under the MIT License. See the LICENSE file for details.

About

Making a unix shell from scratch in C

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages