https://github.com/sts10/rust-command-line-utilities
A curated list of command-line utilities written in Rust
https://github.com/sts10/rust-command-line-utilities
command-line command-line-tool list rust
Last synced: 2 months ago
JSON representation
A curated list of command-line utilities written in Rust
- Host: GitHub
- URL: https://github.com/sts10/rust-command-line-utilities
- Owner: sts10
- License: cc0-1.0
- Created: 2023-02-08T14:49:49.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-07-29T15:05:59.000Z (10 months ago)
- Last Synced: 2024-08-02T02:16:31.917Z (10 months ago)
- Topics: command-line, command-line-tool, list, rust
- Homepage:
- Size: 64.5 KB
- Stars: 611
- Watchers: 21
- Forks: 23
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# A curated list of command-line utilities written in Rust
Note that I have not tried all of these personally and **cannot and do not vouch for all of the tools listed here**. In most cases, the descriptions below are copied directly from their code repos at the time I found them. Some projects may have been abandoned. Investigate before installing/using.
## Unix-to-Rust replacements (or near-replacements)
|unix|rust |stars |last release |
|----|---------------------------------------------------|-----------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------|
|cat |[bat ](https://github.com/sharkdp/bat) | | |
|cd |[zoxide ](https://github.com/ajeetdsouza/zoxide)|||
|cp |[xcp ](https://github.com/tarka/xcp) | | |
|df |[dysk ](https://github.com/Canop/dysk) | | |
|diff|[delta ](https://github.com/dandavison/delta) | | |
|diff|[difftastic](https://github.com/Wilfred/difftastic)|||
|du |[dua ](https://github.com/Byron/dua-cli) | | |
|du |[dust ](https://github.com/bootandy/dust) | | |
|du |[dutree ](https://github.com/nachoparker/dutree)|||
|du |[erdtree ](https://github.com/solidiquis/erdtree)|||
|du |[pdu ](https://github.com/KSXGitHub/parallel-disk-usage)|||
|find|[fd ](https://github.com/sharkdp/fd) | | |
|grep|[ripgrep ](https://github.com/burntsushi/ripgrep)|||
|ls |[eza ](https://github.com/eza-community/eza) | | |
|ls |[lsd ](https://github.com/peltoche/lsd) | | |
|ps |[procs ](https://github.com/dalance/procs) | | |
|rm |[rip ](https://github.com/nivekuil/rip) | | |
|sed |[sd ](https://github.com/chmln/sd) | | |## Full list of Rust tools
**[atuin](https://github.com/ellie/atuin)**
"Magical shell history"
 **[bandwhich](https://github.com/imsnif/bandwhich)**
Terminal bandwidth utilization tool
 **[bat](https://github.com/sharkdp/bat)**
A replacement for `cat` that provides syntax highlighting and other features.
 **[bartib](https://github.com/nikolassv/bartib)**
A simple timetracker for the command line.
 **[bottom](https://github.com/ClementTsang/bottom)**
Yet another cross-platform graphical process/system monitor.
 **[broot](https://github.com/Canop/broot)**
A new way to see and navigate directory trees
 **[choose](https://github.com/theryangeary/choose)**
A human-friendly and fast alternative to `cut` and (sometimes) `awk`
 **[counts](https://github.com/nnethercote/counts)**
"A tool for ad hoc profiling"
 **[csvlens](https://github.com/YS-L/csvlens)**
A command line CSV file viewer
 **[delta](https://github.com/dandavison/delta)**
A syntax-highlighting pager for git, `diff`, and grep output
 **[difftastic](https://github.com/Wilfred/difftastic/)**
A syntax-aware diff
 **[diskonaut](https://github.com/imsnif/diskonaut)**
Terminal disk space navigator
 **[dog](https://github.com/ogham/dog)**
A command-line DNS client
 **[dua](https://github.com/Byron/dua-cli)**
"View disk space usage and delete unwanted data, fast."
 **[dura](https://github.com/tkellogg/dura)**
"Dura is a background process that watches your Git repositories and commits your uncommitted changes without impacting HEAD, the current branch, or the Git index (staged files)."
 **[dust](https://github.com/bootandy/dust)**
"a more intuitive version of `du` in Rust"
 **[dutree](https://github.com/nachoparker/dutree)**
"a tool to analyze file system usage written in Rust"
 **[dysk](https://github.com/Canop/dysk)**
"A linux utility to get information on filesystems, like `df` but better"
 **[erdtree](https://github.com/solidiquis/erdtree)**
A multi-threaded file-tree visualizer and disk usage analyzer. (I usually use it as `et -l 1 -s size `)
 **[eza](https://github.com/eza-community/eza)**
A modern, maintained replacement for ls
 **[fclones](https://github.com/pkolaczk/fclones)**
An "efficient duplicate file finder"
 **[fd](https://github.com/sharkdp/fd)**
"A simple, fast and user-friendly alternative to `find`"
 **[felix](https://github.com/kyoheiu/felix)**
tui file manager with vim-like key mapping
 **[ffsend](https://github.com/timvisee/ffsend)**
"Easily and securely share files from the command line. A fully featured Firefox Send client."
 **[frum](https://github.com/TaKO8Ki/frum)**
A modern Ruby version manager written in Rust
 **[fselect](https://github.com/jhspetersson/fselect)**
"Find files with SQL-like queries"
 **[gifski](https://github.com/ImageOptim/gifski)**
GIF encoder based on libimagequant (pngquant). Squeezes maximum possible quality from the awful GIF format.
 **[git-cliff](https://github.com/orhun/git-cliff)**
"A highly customizable Changelog Generator that follows Conventional Commit specifications"
 **[grex](https://github.com/pemistahl/grex)**
A command-line tool and library for generating regular expressions from user-provided test cases
 **[heh](https://github.com/ndd7xv/heh)**
"A terminal UI to edit bytes by the nibble"
 **[himalaya](https://github.com/soywod/himalaya)**
Command-line interface for email management
 **[htmlq](https://github.com/mgdm/htmlq)**
Like jq, but for HTML. Uses CSS selectors to extract bits of content from HTML files.
 **[hyperfine](https://github.com/sharkdp/hyperfine)**
Command-line benchmarking tool
 **[hyperlink](https://github.com/untitaker/hyperlink)**
Very fast link checker for CI.
 **[inlyne](https://github.com/trimental/inlyne)**
"GPU powered yet browsless tool to help you quickly view markdown files"
 **[intelli-shell](https://github.com/lasantosr/intelli-shell)**
"Like IntelliSense, but for shells"
 **[jless](https://github.com/PaulJuliusMartinez/jless)**
"command-line JSON viewer designed for reading, exploring, and searching through JSON data."
 **[joshuto](https://github.com/kamiyaa/joshuto)**
"ranger-like terminal file manager written in Rust"
 **[jql](https://github.com/yamafaktory/jql)**
A JSON query language CLI tool. Note there's also [jaq](https://github.com/01mf02/jaq).
 **[juliaup](https://github.com/JuliaLang/juliaup)**
A modern Julia version manager written in Rust
 **[just](https://github.com/casey/just)**
Just a command runner (seems like an alternative to `make`)
 **[legdur](https://hg.sr.ht/~cyplo/legdur)**
A "simple CLI program to compute hashes of large sets of files in large directory structures and compare them with a previous snapshot."**[lemmeknow](https://github.com/swanandx/lemmeknow)**
Identify mysterious text or analyze hard-coded strings from captured network packets, malwares, and more.
 **[lsd](https://github.com/Peltoche/lsd)**
The next generation `ls` command
 **[macchina](https://github.com/macchina-cli/macchina)**
Fast, minimal and customizable system information frontend.
 **[mcfly](https://github.com/cantino/mcfly)**
Fly through your shell history.
 **[mdBook](https://github.com/rust-lang/mdBook)**
Create books from markdown files. Like Gitbook but implemented in Rust
 **[mdcat](https://github.com/lunaryorn/mdcat)**
Fancy `cat` for Markdown
 **[miniserve](https://github.com/svenstaro/miniserve)**
A "CLI tool to serve files and dirs over HTTP". I use this as a replacement for `python -m http.server`.
 **[mise](https://github.com/jdx/mise)**
Manage dev tools and env vars, plus a task runner
 **[monolith](https://github.com/y2z/monolith)**
Save complete web pages as a single HTML file
 **[mprocs](https://github.com/pvolok/mprocs)**
Run multiple commands in parallel
 **[onefetch](https://github.com/o2sh/onefetch)**
Display project information and code statistics for a local Git repository
 **[ouch](https://github.com/ouch-org/ouch)**
"Painless compression and decompression for your terminal"
 **[pastel](https://github.com/sharkdp/pastel)**
A command-line tool to generate, analyze, convert and manipulate colors.
 **[pdu](https://github.com/KSXGitHub/parallel-disk-usage)**
"Highly parallelized, blazing fast directory tree analyzer"
 **[pipr](https://github.com/Elkowar/pipr)**
"A tool to interactively write shell pipelines."
 **[procs](https://github.com/dalance/procs)**
A modern replacement for `ps` written in Rust
 **[pueue](https://github.com/Nukesor/pueue)**
A command-line task management tool for sequential and parallel execution of long-running tasks.
 **[qsv](https://github.com/jqnatividad/qsv)**
CSVs sliced, diced & analyzed. (A fork of `xsv`)
 **[rargs](https://github.com/lotabout/rargs)**
xargs + awk with pattern matching support.
 **[rip](https://github.com/nivekuil/rip)**
A safe and ergonomic alternative to `rm`
 **[ripgrep](https://github.com/BurntSushi/ripgrep)**
A faster replacement for GNU’s `grep` command. This tool is very good. See [ripgrep-all](https://github.com/phiresky/ripgrep-all) to search PDFs, E-Books, Office documents, zip, tar.gz, etc.
 **[ripsecrets](https://github.com/sirwart/ripsecrets)**
Find secret keys in your code before committing them to git. I've contributed to this one!
 **[rnr](https://github.com/ismaelgv/rnr)**
"A command-line tool to batch rename files and directories"
 **[ruff](https://github.com/charliermarsh/ruff)**
An extremely fast Python linter, written in Rust.
 **[ruplacer](https://github.com/your-tools/ruplacer)**
Find and replace text in source files
 **[RustScan](https://github.com/RustScan/RustScan)**
The modern port scanner
 **[samply](https://github.com/mstange/samply)**
Command-line sampling profiler for macOS and Linux
 **[sd](https://github.com/chmln/sd)**
Intuitive find & replace CLI (`sed` alternative).
 **[skim](https://github.com/lotabout/skim)**
A command-line fuzzy finder
 **[spacer](https://github.com/samwho/spacer)**
CLI tool to insert spacers when command output stops
 **[sshx](https://github.com/ekzhang/sshx)**
Fast, collaborative live terminal sharing over the web
 **[tailspin](https://github.com/bensadeh/tailspin)**
A log file highlighter
 **[tealdear](https://github.com/dbrgn/tealdeer)**
A very fast implementation of `tldr` in Rust.
 **[teehee](https://github.com/Gskartwii/teehee)**
"A modal terminal hex editor"
 **[tin-summer](https://github.com/vmchale/tin-summer)**
Find build artifacts that are taking up disk space
 **[tiny](https://github.com/osa1/tiny)**
A terminal IRC client
 **[tokei](https://github.com/XAMPPRocky/tokei)**
Count your (lines of) code, quickly
 **[topgrade](https://github.com/topgrade-rs/topgrade)**
Upgrade all of your tools.
 **[uv](https://github.com/astral-sh/uv)**
An extremely fast Python package and project manager, written in Rust.
 **[vocage](https://github.com/proycon/vocage)**
A minimalistic vocabulary trainer (flashcards) for the terminal
 **[watchexec](https://github.com/watchexec/watchexec)**
Execute commands in response to file modifications. (Note: See [cargo watch](https://github.com/watchexec/cargo-watch) if you want to watch a Rust project.)
 **[xcp](https://github.com/tarka/xcp)**
An extended `cp`
 **[xh](https://github.com/ducaale/xh)**
"Friendly and fast tool for sending HTTP requests"
 **[xplr](https://github.com/sayanarijit/xplr)**
"A hackable, minimal, fast TUI file explorer"
 **[xsv](https://github.com/BurntSushi/xsv)**
A fast CSV command line toolkit written in Rust.
 **[yazi](https://github.com/sxyazi/yazi)**
"Blazing fast terminal file manager written in Rust, based on async I/O."
 **[zet](https://github.com/yarrow/zet)**
Take the union, intersection, difference, etc of files — compare to `uniq` and `comm`.
 **[zoxide](https://github.com/ajeetdsouza/zoxide)**
A smarter `cd` command.
 ## Calculators
**[eva](https://github.com/nerdypepper/eva)**
"a calculator REPL, similar to bc(1)"
 **[fend](https://github.com/printfn/fend)**
"Arbitrary-precision unit-aware calculator" ([Documentation](https://printfn.github.io/fend/documentation)). I prefer this calculator.
 **[Kalker](https://github.com/PaddiM8/kalker)**
"a calculator with math syntax that supports user-defined variables and functions, complex numbers, and estimation of derivatives and integrals"
 ## Terminal emulators / terminal-related
**[Alacritty](https://github.com/alacritty/alacritty)**:
A cross-platform, OpenGL terminal emulator.
 **[nushell](https://github.com/nushell/nushell)**:
A new type of shell.
 **[Rio](https://github.com/raphamorim/rio)**:
A hardware-accelerated GPU terminal emulator powered by WebGPU, focusing to run in desktops and browsers.
 **[Starship](https://starship.rs/)**:
Customizable prompt for any shell.
 **[Wezterm](https://github.com/wez/wezterm)**:
A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust
 **[Zellij](https://github.com/zellij-org/zellij)**:
A terminal workspace with batteries included.
 ## Text editors written in Rust
**[amp](https://github.com/jmacdonald/amp)**:
A complete text editor for your terminal.
 **[helix](https://github.com/helix-editor/helix)**:
A post-modern modal text editor.
 **[kibi](https://github.com/ilai-deutel/kibi)**:
"A text editor in ≤1024 lines of code, written in Rust"
 **[lapce](https://github.com/lapce/lapce)**:
Lightning-fast and Powerful Code Editor written in Rust
 **[pepper](https://github.com/vamolessa/pepper)**:
A simple and opinionated modal code editor for your terminal
 **[xi](https://github.com/xi-editor/xi-editor)**:
A modern editor with a backend written in Rust.
 **[zed](https://github.com/zed-industries/zed)**:
A "high-performance, multiplayer code editor from the creators of Atom and Tree-sitter."
 **[zee](https://github.com/zee-editor/zee)**:
A modern text editor for the terminal written in Rust
 See [this "Battle of the [Rust] text editors" post from 2022](https://matduggan.com/battle-of-the-text-editors/) or [this r/rust post](https://www.reddit.com/r/rust/comments/121l4ek/editors_written_in_rust/).
## Email clients
[himalaya](https://github.com/soywod/himalaya)
"Command-line interface for email management"
 ## All core utils!?
Note that there is ["a cross-platform reimplementation of the GNU coreutils in Rust"](https://github.com/uutils/coreutils). I link it here for those interested, but I argue that it doesn't _quite_ fit into this project's goals.## Tools to help working with Rust lang itself
**[bacon](https://github.com/Canop/bacon)**:
A background Rust code checker
 **[cargo-audit](https://github.com/RustSec/rustsec/tree/main/cargo-audit)**:
Audit Cargo.lock files for crates with security vulnerabilities reported to the RustSec Advisory Database. See also: [cargo-deny](https://github.com/EmbarkStudios/cargo-deny) and/or [cargo-about](https://github.com/EmbarkStudios/cargo-about).**[cargo-binstall](https://github.com/cargo-bins/cargo-binstall)**:
"Binary installation for [R]ust projects"
 **[cargo-cache](https://github.com/matthiaskrgr/cargo-cache)**
Display information on the cargo cache (`~/.cargo/` or `$CARGO_HOME`). Optional cache pruning.
 **[cargo-crev](https://github.com/crev-dev/cargo-crev)**:
A cryptographically verifiable code review system for the cargo (Rust) package manager.
 **[cargo-dist](https://github.com/axodotdev/cargo-dist)**:
"Shippable application packaging for Rust"
 **[cargo-geiger](https://github.com/rust-secure-code/cargo-geiger)**:
Detects usage of unsafe Rust in a Rust crate and its dependencies.
 **[cargo-mutants](https://github.com/sourcefrog/cargo-mutants)**:
Inject bugs and see if your tests catch them!
 **[cargo-semver-checks](https://github.com/obi1kenobi/cargo-semver-checks)**:
Scan your Rust crate for semver violations.
 **[cargo-show-asm](https://github.com/pacak/cargo-show-asm)**:
Shows asm, LLVM, MIR and similar low level stuff for your code
 **[cargo watch](https://github.com/watchexec/cargo-watch)**:
Watches over your Cargo project's source.
 **[cargo-wipe](https://github.com/mihai-dinculescu/cargo-wipe)**:
Cargo subcommand that recursively finds and optionally wipes all "target" or "node_modules" folders that are found in the current path. See also: [kondo](https://github.com/tbillington/kondo).
 **[kani-verifier](https://github.com/model-checking/kani)**:
A "bit-precise model checker for Rust."
 ## Other lists of Rust command line utilities
- [lib.rs's list](https://lib.rs/command-line-utilities)
- ["Awesome Rust"](https://github.com/rust-unofficial/awesome-rust)
- [Awesome Alternatives in Rust](https://github.com/TaKO8Ki/awesome-alternatives-in-rust)
- [Embedded Rust](https://github.com/rust-embedded/awesome-embedded-rust): "Curated list of resources for Embedded and Low-level development in the Rust programming language"## Tips
Of the tools listed above, the ones I use regularly use are: bat, fd, fend, hyperfine, miniserve, ripgrep, just, cargo-audit and cargo-wipe. (I'm still torn between dust and erdtree...)
### `bat` alias to act more like `cat`
```bash
alias cat=bat --paging=never
```### Aliases for `ls` I use in my `~/.bashrc`
Prefer eza, then lsd, then regular old `ls`.
```bash
if hash eza 2>/dev/null; then
alias ls='eza'
alias l='eza -l --all --group-directories-first --git'
alias ll='eza -l --all --all --group-directories-first --git'
alias lt='eza -T --git-ignore --level=2 --group-directories-first'
alias llt='eza -lT --git-ignore --level=2 --group-directories-first'
alias lT='eza -T --git-ignore --level=4 --group-directories-first'
elif hash lsd 2>/dev/null; then
alias ls='lsd'
alias l='lsd -l --all --group-directories-first'
alias ll='lsd -l --all --group-directories-first'
alias lt='lsd --tree --depth=2 --group-directories-first'
alias llt='lsd -l --tree --depth=2 --group-directories-first'
alias lT='lsd --tree --depth=4 --group-directories-first'
else
alias l='ls -lah'
alias ll='ls -alF'
alias la='ls -A'
fi
```## Shameless plug: Tools that I've written in Rust
**[Phraze](https://github.com/sts10/phraze)**:
Generate random passphrases
 **[Tidy](https://github.com/sts10/tidy)**:
A Swiss army knife for word lists
 ## Criteria for submitting a tool to this list
If you know of a Rust command line tool that you think would be a good fit for this list, open an issue or a PR.
Note that I generally only consider projects that are (a) open source and (b) have **100 or more stars on GitHub**, which I'm hoping means that the program will be a bit battle-tested and ready for real-world use. I also reserve the right to reject submissions even if they meet this criteria.
You're of course welcome to fork this project and maintain your own list! Check the included LICENSE file for more information.