116 行
2.4 KiB
Markdown
116 行
2.4 KiB
Markdown
# psh - A minimal bash-like shell in pure C
|
|
|
|
A lightweight POSIX shell implementation featuring:
|
|
|
|
- Command execution via fork/exec (Windows: CreateProcess)
|
|
- Built-in commands: `cd`, `pwd`, `echo`, `exit`, `help`, `env`
|
|
- Input/output redirection (`<`, `>`, `>>`)
|
|
- Piping (`|`)
|
|
- Background execution (`&`)
|
|
- Command history with up/down arrows
|
|
- Tab completion
|
|
- `&&` and `||` operators
|
|
- Basic environment variable support
|
|
- Tilde expansion (`~`)
|
|
|
|
## Building
|
|
|
|
```bash
|
|
make
|
|
```
|
|
|
|
Requires:
|
|
- GCC or compatible C compiler
|
|
- GNU Readline library (for line editing)
|
|
|
|
## Running
|
|
|
|
```bash
|
|
./psh
|
|
```
|
|
|
|
## Features
|
|
|
|
### Built-ins
|
|
- `cd [dir]` - Change directory
|
|
- `pwd` - Print working directory
|
|
- `echo [args]` - Print text (supports `$VAR` expansion)
|
|
- `exit` - Exit shell
|
|
- `help` - Show help
|
|
- `env [var=val]` - Show or set environment variables
|
|
- `history` - Show command history
|
|
|
|
### Redirection
|
|
```bash
|
|
ls > output.txt # Redirect output
|
|
cat < input.txt # Redirect input
|
|
echo hi >> log.txt # Append output
|
|
```
|
|
|
|
### Piping
|
|
```bash
|
|
ps aux | grep python | wc -l
|
|
```
|
|
|
|
### Background
|
|
```bash
|
|
sleep 100 &
|
|
```
|
|
|
|
### Logical Operators
|
|
```bash
|
|
cmd1 && cmd2 # Execute cmd2 only if cmd1 succeeds
|
|
cmd1 || cmd2 # Execute cmd2 only if cmd1 fails
|
|
```
|
|
|
|
### Tab Completion
|
|
Press `Tab` to complete commands:
|
|
- Built-in commands (cd, pwd, echo, etc.)
|
|
- Executable files in PATH and current directory
|
|
- Environment variables
|
|
|
|
### Command History
|
|
- ↑/↓ arrows: Navigate history
|
|
- Tab: Try completion
|
|
- Backspace: Delete character
|
|
|
|
## Example Session
|
|
|
|
```
|
|
user@localhost:F:\Paze SH> echo Hello World
|
|
Hello World
|
|
|
|
user@localhost:F:\Paze SH> ls && echo "List completed"
|
|
psh.c README.md Makefile
|
|
List completed
|
|
|
|
user@localhost:F:\Paze SH> false || echo "Fallback executed"
|
|
Fallback executed
|
|
|
|
user@localhost:F:\Paze SH> help
|
|
psh - minimal bash-like shell (Windows)
|
|
|
|
Built-in commands:
|
|
cd [dir] Change directory
|
|
pwd Print working directory
|
|
echo [args] Print arguments
|
|
exit Exit shell
|
|
env [var=val] Show/set environment
|
|
help Show this help
|
|
|
|
Features:
|
|
cmd1 | cmd2 Pipe output
|
|
cmd > file Redirect output
|
|
cmd >> file Append output
|
|
cmd < file Redirect input
|
|
cmd & Run in background
|
|
cmd1 && cmd2 Execute cmd2 if cmd1 succeeds
|
|
cmd1 || cmd2 Execute cmd2 if cmd1 fails
|
|
history View command history
|
|
Tab Try command completion
|
|
```
|
|
|
|
## License
|
|
|
|
MIT
|