Introduction
When many of us think of the core utils in Linux, we think of the commands like cat
, ls
, and grep
. These commands are the backbone of the Linux command line, and they are the first commands that most people learn when they start using Linux.
However, these commands are limited, as they have been around since the beginning, and are included on the slimmest of distributions. If you want a list of all of the standard upgrades that aren't built in, this is the guide for you.
The List
bat
- A cat
Clone with Syntax Highlighting
bat
is a clone of cat
with syntax highlighting. It's a great way to view files in the terminal, and it's a great way to get syntax highlighting for a file from within the terminal. You can even use it as a pager, like less
or more
, just by piping output into bat
(e.g. ls | bat
).
exa
- A ls
Clone with Colorful Output and Tree View
exa
enhances ls with colorful output and a tree view for more intuitive directory navigation. It's a great way to view files in the terminal, and provides syntax highlighting in the terminal. You can also use it in place of the built-in tree
command by doing ls -T
.
fzf
- A Fuzzy Finder for the Command Line
Often times, we know the name of something, but don't want to type in the entire path to it. This is where fzf
comes in, an easy-to-use fuzzy finder. It's an easy way to find files, commands, etc. Several other CLI tools like bat
and exa
use fzf
to provide fuzzy finding if you have it.
rg
- A grep
Clone with Better Defaults and Speed
rg
is exactly like grep, but it was built with speed in mind using Rust. You can use it anywhere you would use grep
, and it will be faster. It also has better defaults, so you don't have to use the -i
flag to make it case insensitive, and it automatically ignores hidden files and directories. It's all just built in, exactly the way you would expect it to be.
tldr
- A man
Clone with Shorter, More Useful Output
man
is the standard way to get help on the command line, but it's not always the most useful. It's typical to see 600+ lines of output for a command, and it's not always easy to find what you're looking for. tldr
is a man
clone that provides shorter, more useful output. It's a great way to get help on the command line quickly, to easily remember common syntax.
zoxide
- A cd
Clone with Smart Directory Tracking
zoxide
is a cd
clone that tracks your most used directories, and allows you to easily jump to them. You can just type z foo
to jump to the directory that contains foo
in its name. It's a great way to quickly jump to directories that you use often without thinking about it much, and it has a built-in fzf integration.
jq
- A json
Parser with Syntax Highlighting
jq
is a very useful JSON parser. It's a great way to manipulate JSON data in the terminal, and get syntax highlighting in the terminal. This can be useful for things like parsing API responses, or just viewing JSON files in the terminal.
dust
- A du
Clone with a Better Interface
dust
is a du
clone with a better interface. It's a great way to view disk usage in the terminal, but it also shows a visual representation of the disk usage. It's a great way to get a quick overview of disk usage, and you don't have to remember all of the defaults for du
that make it usable.
sd
- A sed
Clone with Better Regex Support
sd
is a sed
clone with better regex support. Use it like you would sed, but ignore all the weirdness that comes with sed. Instead of sed -i 's/foo/bar/g'
, you can just do sd foo bar
. Much easier to remember, and much easier to use.
starship
- A bash
and zsh
Prompt with Git Integration
starship
is a bash
and zsh
prompt with Git integration. Easily customize your shell prompt to show Git info, current directory, user, sudo, etc. This is a lot more lightweight than alternatives like powerline, and it's a lot easier to customize.
fd
- A find
Clone, Without the Weirdness
fd
is a find
clone, without the weirdness. Don't worry about the archaic usage of find
, and just use fd
instead. It returns color coded output, you don't have to use weird flags to get the standard behavior, and it's faster. What's not to love?
btop
- A htop
Clone, But Better
btop
is a htop
clone, but better. It's a great way to view processes in the terminal, with a more customizable and beautiful interface. It's a great way to get a quick overview of processes, with some added features like a built-in kill command. I prefer this over even a System Monitor GUI.
procs
- A ps
Clone, With a Better Interface
procs
is a ps
clone, with a better interface. Color coded output, and easy to read and navigate in a terminal. Not much else to say about it, but it's a valuable tool to have in your toolbelt.
nvim
- A vim
Distribution with a Huge Community
Tons of plugins for just about any use-case, Lua support, and a huge community. If you're looking for a vim distribution, this is the one to use. It's probably the most customizable editor that has ever existed, and it's an extremely good learning experience.
micro
- A nano
Clone, But Better
If, for whatever reason, you love nano
, but want something better, micro
is the tool for you. All the functionality of nano, but with a better interface and some added features. While it's not my first option for text editing, it's not a bad option.
aria2
- A better option than wget
and curl
If you ever wondered why downloads can't continue after they get interrupted, wanted to use multiple connections to download a file, or wanted to download a file from multiple sources, aria2
is the tool for you. It's faster, more reliable, and more feature rich than wget
and curl
.
The Whole List (for ease of copying)
sudo apt install \
bat \
exa \
fzf \
ripgrep \
tldr \
zoxide \
jq \
dust \
sd \
starship \
fd-find \
btop \
procs \
neovim \
micro \
aria2
Conclusion
These are just a few of the many tools that are available to you on Linux that we can make use of every day. There are many more, and I encourage you to explore them.