aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
blob: 6bb9fdad4851584310cb6eefdd5b2d9112235f6a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# 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](#about)
- [Installation](#installation)
- [Usage](#usage)
- [Available Commands](#available-commands)
- [File Structure](#file-structure)
- [License](#license)

## About

This project is a custom shell written in C, designed to mimic basic Unix shell functionality. 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

## Installation

1. Clone the repository:
   ```sh
   git clone https://github.com/nasrlol/basic_unix_shell
   cd basic_unix_shell
   ```

2. Compile the shell:
   ```sh
   gcc -o custom_shell source/shell.c
   ```

3. Run the shell:
   ```sh
   ./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

```
 basic_unix_shell
 ├── source
 │   └── shell.c     # The whole shell: command parsing and all commands
 └── README.md       # Documentation
```
## License

This project is licensed under the **MIT License**. See the [LICENSE](LICENSE) file for details.