https://github.com/soptikha2/desed
Debugger for Sed: demystify and debug your sed scripts, from comfort of your terminal.
https://github.com/soptikha2/desed
rust sed tui-rs unix
Last synced: about 1 month ago
JSON representation
Debugger for Sed: demystify and debug your sed scripts, from comfort of your terminal.
- Host: GitHub
- URL: https://github.com/soptikha2/desed
- Owner: SoptikHa2
- License: gpl-3.0
- Created: 2020-04-20T00:05:05.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2025-01-12T11:55:52.000Z (5 months ago)
- Last Synced: 2025-04-03T08:03:26.621Z (3 months ago)
- Topics: rust, sed, tui-rs, unix
- Language: Rust
- Homepage: https://soptik.tech/articles/building-desed-the-sed-debugger.html
- Size: 11.1 MB
- Stars: 1,173
- Watchers: 13
- Forks: 26
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Desed
Demystify and debug your sed scripts, from comfort of your terminal.
Desed is a command line tool with beautiful TUI that provides users with comfortable interface and practical debugger, used to step through complex sed scripts.
Some of the notable features include:
- Preview variable values, both of them!
- See how will a substitute command affect pattern space before it runs
- Step through sed script - both forward and backwards!
- Place breakpoints and examine program state
- Hot reload and see what changes as you edit source code
- Its name is a palindrome## Install
### Alpine Linux
`aports/testing/desed`
### Arch Linux
Via AUR: [desed-git](https://aur.archlinux.org/packages/desed-git/) or [desed](https://aur.archlinux.org/packages/desed/) as stable version.
### DragonFly BSD
```sh
pkg install desed
```### Fedora
```sh
dnf install desed
```### FreeBSD
```sh
pkg install desed
```### Void Linux
```sh
xbps-install -S desed
```### Source
```sh
git clone https://github.com/soptikha2/desed
cd desed
cargo install --path .
cp "desed.1" "$(manpath | cut -d':' -f1)/man1"
```### Cargo
```
cargo install desed
```### Precompiled binaries
See [releases](https://github.com/SoptikHa2/desed/releases).
### Dependencies:
Development: `rust`, `cargo` (>= 1.38.0)
Runtime: `sed` (GNU version, >= 4.6) (desed works on BSD if you installed `gsed`)
## Controls
- Mouse scroll to scroll through source code, click on line to toggle breakpoint
- `j`, `k`, `g`, `G`, just as in Vim. Prefixing with numbers works too.
- `b` to toggle breakpoint (prefix with number to toggle breakpoint on target line)
- `s` to step forward, `a` to step backwards
- `r` to run to next breakpoint or end of script, `R` to do the same but backwards
- `l` to instantly reload code and continue debugging in the exactly same place as before
- `q` to [quit](https://github.com/hakluke/how-to-exit-vim)# FAQ
## How does it work?
GNU sed actually provides pretty useful debugging interface, try it yourself with `--debug` flag. However the interface is not interactive and I wanted something closer to traditional debugger.## Does it really work?
Depends. Sed actually doesn't tell me which line number is it currently executing, so I have to emulate parts of sed to guess that. Which might not be bulletproof. But it certainly worked good enough to debug tetris without issues.## Why sed??
Sed is the perfect programming language, [especially for graph problems](https://tildes.net/~comp/b2k/programming_challenge_find_path_from_city_a_to_city_b_with_least_traffic_controls_inbetween#comment-2run). It's plain and simple and doesn't clutter your screen with useless identifiers like `if`, `for`, `while`, or `int`. Furthermore since it doesn't have things like numbers, it's very simple to use.
## But why?
I wanted to program in sed but it lacked good tooling up to this point, so I had to do something about it.
## Why?
Because it's the standard stream editor for filtering and transforming text. And someone wrote [tetris](https://github.com/uuner/sedtris) in it!
## Is this a joke?
I thought it was. But apparently it's actually useful for some people.
# What people say about desed
> Amusingly, in French, "desed" sounds like "décéde", which means die / decease. That's quite a fitting name for a tool one would use in "I need to debug a sed script" situations!
- [mlegendre](https://news.ycombinator.com/item?id=41455667)