Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/omar7001-b/shellx

A basic shell interface that supports the execution of a series of commands.
https://github.com/omar7001-b/shellx

Last synced: 20 days ago
JSON representation

A basic shell interface that supports the execution of a series of commands.

Awesome Lists containing this project

README

        




SIMPLE-SHELL-AND-FILE-SYSTEM-FAT


version
last-commit
repo-top-language
stars
forks
watchers

## Table of Contents

- [Overview](#overview) πŸ“œ
- [Installation](#installation) πŸ”§
- [Usage](#usage) βš™οΈ
- [Commands](#commands) πŸ’»
- [General](#general) ℹ️
- [Directory](#directory) πŸ“
- [File](#file) πŸ“„
- [Debug](#debug) πŸ› οΈ
- [Repo Structure](#repo-structure) πŸ—οΈ
- [Modules](#modules) 🧩
- [ShellSystem](#shellsystem) πŸ’Ό
- [Disk](#disk) πŸ’Ύ
- [Entry](#entry) πŸ“
- [Lessons Learned](#lessons-learned) πŸ“š
- [Demo Video](#demo-video) πŸŽ₯
- [Contribution](#contribution-) 🀝

## Overview

Simple Shell and File System Program offers efficient file system management and navigation. It provides a range of commands for directory manipulation, file handling, and debugging tasks. Users can easily execute commands, access detailed help, and exit the shell.

## Installation

1. Clone the repository:
~~~bash
git clone https://github.com/Omar7001-B/ShellX.git
~~~

2. Navigate to the project directory:
~~~bash
cd ShellX
~~~

3. Compile and run the program:
~~~bash
dotnet run
~~~

## Usage

1. After running the program, you'll be prompted with a shell interface.
2. Enter a command followed by any required arguments.
3. Use the `help` command to see detailed information about each command.
4. Use the `quit` command to exit the shell.

# Commands

### General

| Command | Description |
| ------- | --------------------------------------------- |
| help | Provides Help information for commands. |
| cls | Clear the screen. |
| quit | Quit the shell. |

### Directory

| Command | Description |
| ------- | --------------------------------------------- |
| cd | Changes the current directory. |
| dir | List the contents of directory. |
| copy | Copies one or more entry to another location.|
| cut | Cut one or more entry to another location. |
| md | Creates a directory. |
| rd | Removes a directory. |
| rename | Renames a file. |

### File

| Command | Description |
| ------- | --------------------------------------------- |
| echo | Displays text or variables, write or append to files.|
| type | Displays the contents of a text file. |
| del | Deletes one or more files. |
| import | Import text file(s) from your computer. |
| export | Export text file(s) to your computer. |

### Debug

| Command | Description |
| ------- | --------------------------------------------- |
| meta | Show meta data of a file. |
| tree | List the tree of a directory. |
| fat | Shows The Fat File System. |
| mds | Creates n directories. |
| rds | Removes n directories. |

## Repo Structure
~~~
β”œβ”€β”€ Program.cs
β”‚
β”œβ”€β”€ πŸ“ Disk
β”‚ β”œβ”€ FatTable.cs
β”‚ └─ VirtualDisk.cs
β”‚
β”œβ”€β”€ πŸ“ Entry
β”‚ β”œβ”€ Directory.cs
β”‚ β”œβ”€ DirectoryEntry.cs
β”‚ └─ FileEntry.cs
β”‚
β”œβ”€β”€ πŸ“ ShellSystem
β”‚ β”œβ”€ FileSystem.cs
β”‚ └─ Shell.cs
β”‚
└── πŸ“ bin
└── πŸ“ Debug
└── πŸ“ net6.0
β”œβ”€ Disk.txt
β”œβ”€ πŸ“Exports
└─ πŸ“Imports
~~~

## Modules

| Module | Summary | Documentation |
| ---------------------------------------------------------------------------------------------------------------------- | -------------------------------- | ---------------------------------------------------------------------------------------------------- |
| [ShellSystem](https://github.com/Omar7001-B/ShellX/tree/master/ShellSystem) | Handles shell and file system operations. | [Documentation](https://github.com/Omar7001-B/ShellX/blob/master/ShellSystem/) |
| [Disk](https://github.com/Omar7001-B/ShellX/tree/master/Disk) | Manages virtual disk and FAT operations. | [Documentation](https://github.com/Omar7001-B/ShellX/blob/master/Disk/) |
| [Entry](https://github.com/Omar7001-B/ShellX/tree/master/Entry) | Handles directory and file entries. | [Documentation](https://github.com/Omar7001-B/ShellX/blob/master/Entry/) |

## Lessons Learned
- Object-oriented programming (OOP)
- Constructors
- Inheritance
- Virtual Classes
- Override
- Overload
- Recursive algorithms (e.g., BFS)
- Data structures (e.g., dictionaries, lists)
- File system management
- String manipulation
- File I/O operations
- Directory and file manipulation
- Software testing (unit testing)

## Demo Video

https://github.com/Omar7001-B/ShellX/assets/115028809/54d1e2e2-63f5-4bbb-92bd-08e9aeae2d55

# Contribution 🀝

We welcome contributions from the community. Please fork the repository and submit pull requests for any improvements or bug fixes.