Linux tools that you never knew you needed
bat - (cat alternative)
- bat: A cat(1) clone with syntax highlighting and Git integration.
- Example:

fd - (find alternative)
- fd: a simple, fast and user-friendly alternative to
find. - Examples:
httpie - (wget/curl alternative)
- httpie: a user-friendly command-line HTTP client for the API era. It comes with JSON support, syntax highlighting, persistent sessions, wget-like downloads, plugins, and more.
- Examples:
# Hello world
$ http httpie.io/hello
# Custom HTTP method, HTTP headers and JSON data
$ http PUT pie.dev/put X-API-Token:123 name=John
# Submitting forms
$ http -f POST pie.dev/post hello=World
# Upload a file using redirect input
$ http pie.dev/post < files/data.json
# ...
# For more examples, check out: https://httpie.io
ripgrep - (grep alternative)
- ripgrep: a faster
grep. ripgrep is a line-oriented search tool that recursively searches your current directory for a regex pattern. By default, ripgrep will respect your .gitignore and automatically skip hidden files/directories and binary files. - Benchmark.
- Examples:
# Basic use
$ rg fast README.md
# Regular expressions
$ rg 'fast\w+' README.md
# Recursive search - recursively searching the directory (current directory is default)
$ rg 'fn write\('
# ...
# For more examples, checkout: https://github.com/BurntSushi/ripgrep/blob/master/GUIDE.md
delta
- delta: Code evolves, and we all spend time studying diffs. Delta aims to make this both efficient and enjoyable: it allows you to make extensive changes to the layout and styling of diffs, as well as allowing you to stay arbitrarily close to the default git/diff output.
- Diff/git diff doesn’t show you exactly what was changed.

- Delta shows within-line highlights based on a Levenshtein edit inference algorithm.

- By default, delta restructures the git output slightly to make the hunk markers human-readable:

- Example config:
[core]
pager: delta
[delta]
plus-style: "syntax #98c379"
minus-style: "syntax #e06c75"
syntax-theme: OneHalfDark
navigate: true
features: line-numbers decorations
[interactive]
diffFilter: delta --color-only
- Completely replace
diffwithdelta:
alias diff="delta"
z
- Tired for
cding into the same directories over and over? Save your time withzcommand! - z: jump around. Z is a shell script that makes jumping around your file directory pleasantly simple. Instead of trying to remember the exact path of where you need to go, or worse,
cding into the next directory followed bylsing and then cding again over and over (we’ve all been there), Z allows you to “lazy type” where you want to go and it’ll handle the rest. - Examples:
# Takes me to my workspace folder from anywhere.
$ z workspace
fzf
- fzf: fzf is a general-purpose command-line fuzzy finder.
- It’s an interactive Unix filter for command-line that can be used with any list; files, command history, processes, hostnames, bookmarks, git commits, etc.
- Examples:
# Read the list from STDIN and write the selected item to STDOUT
$ find * -type f | fzf > selected
$ vim $(fzf)
# COMMAND **<TAB>
# Files under the current directory
# - You can select multiple items with TAB key
$ vim **<TAB>
# Files under parent directory
$ vim ../**<TAB>
# Files under parent directory that match `fzf`
$ vim ../fzf**<TAB>
# Files under your home directory
$ vim ~/**<TAB>
# Directories under current directory (single-selection)
$ cd **<TAB>
# Directories under ~/github that match `fzf`
$ cd ~/github/fzf**<TAB>
# Can select multiple processes with <TAB> or <Shift-TAB> keys
$ kill -9 <TAB>
$ unset **<TAB>
$ export **<TAB>
$ unalias **<TAB>
# ...
# For more examples, checkout: https://github.com/junegunn/fzf


thefuck
- thefuck: Magnificent app which corrects your previous console command.

- Examples:
$ apt-get install vim
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
$ fuck
sudo apt-get install vim [enter/↑/↓/ctrl+c]
Reading package lists... Done
...
# ...
# For more examples, check out: https://github.com/nvbn/thefuck
exa - (ls alternative)
- exa: A modern replacement for ls.
exais an improved file lister with more features and better defaults. It uses colours to distinguish file types and metadata. It knows about symlinks, extended attributes, and Git. And it’s small, fast, and just one single binary. - Examples:

- Completely replace
lswithexa:
alias ls="exa"

rename
- Rename a single file with
mv. Just a basic thing. - Rename multiple files with
mv.
# Rename files with suffix .yaml to yml
for f in *.yaml; do mv -- "$f" "${f%.yaml}.yml" done
- Rename multiple files with
rename.
# Install rename command
# Ubuntu/Debian-derived distros
sudo apt install rename
# RedHat-derived distros
sudo yum install prename
# The follow examples are performed in Ubuntu/Debian-derived distros
rename 's/.yaml/.yml/' *.yaml
# Replace all occurrences of "prev_" with "next_"
rename 's/prev_/next_' *.c
# Delete part of a filename
rename 's/next_//' *.c
# Limit changes to specific parts of filenames
# Only change the files that start with "paramater"
rename 's/^param/parameter/' *.c
# Search with grouping
# Replace all occurrences of "string" and "strong"
rename 's/(str|stro)ng/strength' *.c
# Use translations with rename
# Force filenames to uppercase
rename 'y/a-z/A-Z' *.py
# More?
man rename
· 4 min read