The standard utilities on Linux are boring; have you ever noticed that? Their function is essential, but they’re boring. Wouldn’t you like to jazz up their outputs with some pretty colors? Or even speed them up? These terminal utilities do that and more.

bat: Like cat, But Better

Cat was the first command that I ever learned, and it remains one of my most frequently used. However, it’s showing its age because it only displays plain old, unformatted text. It’s often difficult to read complex files, such as config files, code, JSON, or YAML.

Bat is just like cat, except better. It addresses the readability issue by highlighting complex files with pretty colors (aka syntax highlighting). It makes files much easier to read because the sections and boundaries stand out.

A terminal window displays code with syntax highlighting. This is the output of the bat command.

Bat has some additional features that make it more attractive, like integration with Git to flag changed lines. It can also work with other tools, such as fzf or find, to display color preview windows.

Bat is universally available; you will find it in almost every distro repository.

A terminal window displays a list of search results, with a search term highlighted in red.

ripgrep: grep on Steroids

Like all the other utilities that I will mention, ripgrep is an upgrade on its standard counterpart. Its main selling point is speed: it does multiple searches in parallel, where its elder counterpart, grep, does not. Ripgrep leverages the power of modern CPUs by spreading its work across all CPU cores.

Ripgrep is not just blazingly fast; it also has a long list of useful features, like smart case detection, ignoring specific files and folders, and integration with other applications.

A terminal window displays dozens of file paths. These are search results for the fd command.

Smart case detection is a simple and elegant feature that should be part of every search function out there. It simply means that if you use capital letters in your search term, then the search becomes case-sensitive. It’s an often missing quality-of-life feature.

Ripgrep also ignores specific files and folders, as directed by agitignoreorignorefile. For example, the following file would cause ripgrep to ignore all images calledfoo.jpgor directories calledignored_dir.

A terminal window displays a list of commands. This is the output of the fzf History Search command.

Ripgrep has excellent integration with other applications. Emacs, Vim, Neovim, and fzf all have third-party extensions that provide ripgrep integration; this enables these applications to leverage ripgrep’s powerful search capabilities directly. Fzf (another utility) provides advanced features that work well with ripgrep, as you will see later.

That’s not all; Ripgrep can also search through compressed files with theZflag. If you have an extensive directory of text and compressed files, ripgrep can tear through them all without manual decompression. Because it doesn’t detail much about the match, it’s a little underwhelming; however, itdoessave a lot of time and awkwardness.

A terminal window that is split horizontally. The top half displays code with syntax highlighting. The bottom half displays a list of file paths.

Ripgrep is available in most distro repositories, so refer to your distro’s manual for package installations.

delta: ripgrep on Steroids — Now on Steroids

Delta is typically for programmers, and it’s one of my favorite utilities. Ripgrep does a fantastic job at quickly tearing through files to find exactly what you need; it has modern features and an advanced search syntax. However, the output is bland because it lacks color and context. While some might argue that it’s straightforward and focuses solely on the search term, I find that I need more. When searching for code, I want to see the surrounding context and colors, because both help to separate the wheat from the chaff.

For those of you who are programmers (or starting out), delta applies syntax highlighting to ripgrep’s output. It also provides extra features to integrate with Git, which is a document management system. For example, it provides a nice side-by-side view of changes to documents (aka adiff, which is short fordifference).

Git can manage any kind of text document, and people often use it to save their dotfiles (aka configuration files that start with a period). If you’re interested in saving your dotfiles, I would highly recommend saving them with Git. In that case, delta would also be worth a look, if only for the diff view alone.

You can install delta via the official repositories for Debian, Ubuntu, Fedora, Arch Linux, and a few more, under the namegit-delta. It’s also available via Homebrew and Nix.

fd: A Faster find With Prettier Colors

As the heading states, fd is much like find, except it’s significantly faster and with prettier colors. Colors, as previously mentioned, make search results easier to read and distinguish. Fd color-codes different file types and directory paths.

In addition to its use of colors, fd traverses multiple directory trees in parallel, which takes advantage of multiple cores in modern CPUs. This capability extends beyond just directory traversal; it also applies to command execution too. When you use theXflag, fd runs a command in parallel against every match.

Like ripgrep, fd also supports smart case searches, and it also obeys thegitignorefile, so searches are more convenient and drown out the noise by default.

Fd is available for almost every distro out there, so to install it, refer to your distro’s package manager or manual.

eza: A Modern Replacement for ls

Eza is a modern take onthe standard ls command, and its main features are better color support and icons. Although not essential, I find icons a nice touch, but for me, colors are essential.

Eza has some other nice features, such as tree view and hyperlinks. For example, the hyperlinks flag converts all file and directory names into clickable links using the OSC 8 format. Most terminals support these links, but to be sure, you’re able to refer to the unofficiallist of terminals that support OSC 8 hyperlinks. Every terminal is different, and you may need to activate it manually.

The best part is that the hyperlinks also work with the tree view, which means that you can quickly navigate large directories. However, one issue that I’ve noticed is that eza’s tree view is much slower than the standard tree: tree will stream results as they’re encountered, whereas eza will navigate the entire (sometimes large) directory and display them all at once—this can take some time, but it has pretty colors and clickable links!

The last point is that it’s annoying to typeeza –iconsevery time, so you may want to readour guide on how to create an alias.

Eza is available for most popular distros, so you can refer to your distro’s package manager. However, the installation on Debian and Ubuntu requires a custom APT repository, buteza’s homepagecovers this.

Whether you’re a beginner or a veteran, using a fuzzy search tool for your shell history is essential—it’s the single most important tool that I have. It’s tedious to type out commands, so I only want to do it once. It’s also tedious to search for previous commands, because using the up and down keys slows my workflow down to a crawl. A fuzzy search tool solves both of these problems.

If you don’t know what a fuzzy search is, it simply means a close approximation search. For example, typingemporxpewill matchexample. Why is that important? Because I can’t remember a command that I typed two months ago, or because quickly switching between several commands takes a toll on my memory. I only need to remember a few characters in the command, and the fuzzy search tool quickly narrows down the search in real time.

For years, I have relied on the fzf History Search plugin for zsh. Alternatively, there is a standalone tool called Atuin that is nearly identical. Both do a simple but effective job.

Refer tofzf History Search’s GitHub repositoryfor installation instructions. You may also want to follow our guides onhow to install Oh-My-Zshandhow to install fzf. An alternative and easier approach is to readour guide on how to install and use Atuin.

A Bonus Script to Search Through Files Like a Pro

If you install fzf, ripgrep, and bat, you can use the following awesome command to fuzzy search your file system and open the matched lines in your favorite text editor. Place the following command in your bashrc file and then reload it withsource bashrc. Refer toour guide on how the bashrc file worksfor more information.

The previous command defaults to opening files in nano, but you can set it to use Vim, Neovim, Emacs, and a few others. Simply set theeditorvariable in your bashrc and reload it:

To use the script, simply change to a directory that contains text files and the letter “s.” While this command will accept plain old words for search terms, you can dramatically boost its accuracy if you followour guide on Regex, an advanced search syntax that you can learn in an hour.

Without fzf History Search, ripgrep, and delta, I feel lost, and so they’re often the first tools that I install. Without eza, bat, and fd, the terminal feels plain and unreadable. However, this is not an exhaustive list, and I have detailed even moreterminal utilities to monitor system resources.