Replace your Existing Unix Utilities with These Modern Alternatives
In your day-to-day Unix or Linux usage you use different tools like cd
, ls
, grep
, or find
. These are ubiquitous utilities found in every Nix system. However, they were created a long time ago, when computers lacked computational power and speed. These tools were tailored towards systems with very little resources. Nowadays, our systems are far better and our requirements are far bigger. In this article, I will show you some utilities aimed towards providing modern replacements for these useful Unix utilities.
bat
bat
is a modern replacement for cat
written in Rust. Unlike cat
, this toll supports syntax highlighting for many programming languages out of the box.
Another interesting feature of bat
is native Git integration. If you run bat
from a git repository, you will get a "git gutter" indicating modification with respect to the index.
By default, bat
automatically pipes its own output into a pager (e. g. less
) when the output is bigger than one page. Which means you don't have to manually pipe the output into less
If you wish to replace cat
with bat
, you can use the following alias -
alias cat='bat --style header --style rules --style snip --style changes --style header'
exa
exa
is a modern alternative for ls
, also written in Rust. Apart from some minor differences, exa
has all the features of ls
, along with Git integration and colors.
Using the --git
option, you can quickly see the Git status of files inside a Git repo.
You can use the --tree
option to get a tree view of the files. Using the --level
option, you can specify the depth of the tree.
You can use the --icons
option to display little icons next to the filenames, provided your font contains those icons. You can install any Nerd Font and you should be good to go.
dust
dust
is an alternative for du
, and it should not be surprising that it is written in Rust! When you run dust
, it shows a nice tree structure of files and folders along with a visualization of sizes.
duf
duf
is a replacement for the df
utility. Guess which language it is written in? Nope, not Rust. It's written in Go.
duf
makes the output easy to understand and visualize. It has color highlights and percentage bars so that you can easily understand your disk usage. Also, it separates local devices, network devices, and special devices in separate regions.
You can use duf --all
to list all devices including pseudo, duplicate and inaccessible devices.
You can also use duf --json
to output a convenient JSON file.
fd
fd
is an alternative for the find
utility. And we're back again to the Rust world!
When you run fd
command with a search pattern, it will search the current directory for the pattern and show you the file list.
You can also use regular expression to refine your search.
You can search for a specific extension by using the -e
flag. You can combine this with the search pattern.
Just like find
, you can run a command on every found file using the -X
flag.
ripgrep
ripgrep
is a super fast grep
alternative written in Rust. Apart from being super fast, it also respects your .gitignore
.
ripgrep
is invoked through the rg
command. The basic usage is similar to grep
. You provide a pattern and a file to find the pattern in. rg
by default also shows the line numbers and highlights the search term.
rg
also supports regular expressions.
If you do not specify a file name, rg
will perform a recursive search. Similar to grep -r
.
rg
respects your .gitignore
. Which means if a file is matched in .gitignore
, it will not be searched. You can read more about how to use this feature in the manual.
tldr
How many times have you forgot how a command works, and opened the man pages only to get buried under tons and tons of documentation, when you only wanted some examples? tldr
is not an exact replacement for man pages, but it is a community effort to simplify the manual pages. Rather than throwing an ocean of information about you, tldr
lists examples and small details, enough to get you started.
procs
Yet another tool written in Rust. procs
is a modern alternative for ps
. When you run procs
, it shows you a list of running processes in a nicely themed output. The output is automatically paged.
If you run procs
followed by the name of a process, and procs
will search for that process, similar to running ps aux | grep process
procs
can also show other information which are not available to ps
, like TCP/UDP port, Read/Write throughput, or Docker container name. You can read more about them in the procs
manual.
zoxide
zoxide
is a fast replacement for the cd
command. It keeps track of the directories you visit and can quickly take you to the directory you want to go.
You can use zoxide
just like the regular cd
command. For example,
z foo/bar/baz
zoxide
keeps a track of the directories you visit, and you can use fuzzy finding to quickly visit a directory you have visited before.
z baz # Takes you the highest ranking directory matching baz
zoxide
also comes with various integrations with many different tools. Check them out from their manual.
I hope you could find your next favourite command line utility from this post :). If you liked this article, do not forget to share and subscribe for more such articles.