🐍 SnakeShell: A Bash-like Unix Shell in Python
Welcome to SnakeShell! 🎉
This project aims to develop a Unix shell similar to Bash, written in Python and utilizing the PEG parser TatSu. SnakeShell is designed to replicate core functionalities of traditional Unix shells while incorporating modern features.
📚 Table of Contents
🌟 Features
- Process Management: Forking, executing, and waiting for processes
- File Redirection and Pipes: Input/output redirection and command pipelines
- Job Control: Background processes and signal handling
- Quoting and Expansion: Variable expansion and globbing
- Interactive Features: Command history and auto-completion
📋 Roadmap
Development Stages
Stage 1: Fork/Exec/Wait ✅
- Basics of Unix processes
- Implement the simplest possible shell
- Support built-in commands like
cd,exec, etc. - Search for commands in
PATH - Handle exit statuses and the
!operator - Support command lists using
;,&&, and|| - Support subshells and line continuation
Stage 2: Files and Pipes ✅
- Implement file descriptor redirection (
<,>,>>,<>) - Support pipes between commands (
|) - Handle file descriptor duplication (
<&,>&) - Implement process and command substitution (
<(...),$(...)) - Ensure proper handling of file descriptors and inheritance
Stage 3: Job Control and Signals 🚧
- Discuss signals and support for keyboard shortcuts like
Ctrl+C,Ctrl+\, andCtrl+Z - Implement background processes and job control (
&,jobs,fg,bg) - Ensure proper handling of sessions and process groups
Stage 4: Quoting and Expansion ⏳
- Handle environments and variables
- Implement globbing (wildcard matching)
- Support quoting and character escaping
- Handle alias and function expansions
Stage 5: Interactivity ⏳
- Enhance the shell for interactive work
- Support command history
- Implement auto-completion
- Customize prompts and themes
🚀 Installation
To install SnakeShell, follow these steps:
-
Clone the repository
git clone https://github.com/G000D1ESS/snakeshell.git
-
Navigate to the project directory
cd snakeshell
-
Run the installation
python3 -m pip install .
🎮 Usage
To use this Unix Shell, follow these steps:
-
Start the shell by executing the command:
snake
-
Enter commands in the interactive shell and press Enter to execute them.
Example commands:
ls -l cd /path/to/directory mkdir new_directory
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
Feel free to ⭐ star the repository if you find it interesting!
Metadata
Release files for cobrashell 0.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cobrashell-0.0.2.tar.gz | 10.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cobrashell-0.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 21.5 kB
Release files / cobrashell-0.0.2.tar.gz
| Download URL | cobrashell-0.0.2.tar.gz |
|---|---|
| Size | 10.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6a9f49e1710294cec3e86903178fe02ed4eec220a4f407846f4e59993ce802a0
|
|
BLAKE2b-256 checksum How to use checksums |
664b158ff9251e986a280671d7a8b7c216edc8e599920e5ff3c6f68c0d666e32
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.8.4 CPython/3.12.6 Darwin/23.6.0
|
Release files / cobrashell-0.0.2-py3-none-any.whl
| Download URL | cobrashell-0.0.2-py3-none-any.whl |
|---|---|
| Size | 11.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d72ac2e6ad1dd5b5cb7a89ee2bc489bafdb48fae9a70c9ad0f41a31c4a38ca33
|
|
BLAKE2b-256 checksum How to use checksums |
fb896e2addafb7ce10d82edc9c71a8112d44d4641f978da98c2e6450a5fa5e35
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.8.4 CPython/3.12.6 Darwin/23.6.0
|