When using Linux/Unix systems on a daily basis, we rely on many command line tools to accomplish our tasks and to understand and manage our systems, such as du for monitoring disk usage and top for displaying system resources. Some of these tools have been around for a long time. For example, top was first released in 1984, while du dates back to 1971.

Over the years, these tools have been modernized and ported to different systems, but they often still carry forward their original ideas and experiences.
These are great tools and are essential to many system administrators’ workflows. However, in recent years, the open-source community has developed alternative tools that offer additional benefits. While some are flashy but impractical, others greatly enhance usability, making them the best choice for modern systems. This includes the following five alternatives to standard Linux command line tools.
1 ncdu as a replacement for du
The NCurses Disk Usage (ncdu) tool provides similar results to du, but in an interactive interface based on curses, focusing on directories that take up a lot of disk space.
ncdu takes some time to analyze the disk and then displays results based on your most frequently used directories or files, as shown below:
ncdu 1.14.2 ~ Use the arrow keys to navigate, press ? for help
--- /home/rgerardi ------------------------------------------------------------
96.7 GiB [##########] /libvirt
33.9 GiB [### ] /.crc
7.0 GiB [ ] /Projects
. 4.7 GiB [ ] /Downloads
. 3.9 GiB [ ] /.local
2.5 GiB [ ] /.minishift
2.4 GiB [ ] /.vagrant.d
. 1.9 GiB [ ] /.config
. 1.8 GiB [ ] /.cache
1.7 GiB [ ] /Videos
1.1 GiB [ ] /go
692.6 MiB [ ] /Documents
. 591.5 MiB [ ] /tmp
139.2 MiB [ ] /.var
104.4 MiB [ ] /.oh-my-zsh
82.0 MiB [ ] /scripts
55.8 MiB [ ] /.mozilla
54.6 MiB [ ] /.kube
41.8 MiB [ ] /.vim
31.5 MiB [ ] /.ansible
31.3 MiB [ ] /.gem
26.5 MiB [ ] /.VIM_UNDO_FILES
15.3 MiB [ ] /Personal
2.6 MiB [ ] .ansible_module_generated
1.4 MiB [ ] /backgrounds
944.0 KiB [ ] /Pictures
644.0 KiB [ ] .zsh_history
536.0 KiB [ ] /.ansible_async
Total disk usage: 159.4 GiB Apparent size: 280.8 GiB Items: 561540
Use the arrow keys to navigate to each entry. If you press the Enter key on a directory entry, ncdu will display the contents of that directory:
--- /home/rgerardi/libvirt ----------------------------------------------------
/..
91.3 GiB [##########] /images
5.3 GiB [ ] /media
You can drill down into directories and find out which files are taking up the most disk space, and use the left arrow key to go back to the previous directory. By default, you can press the d key to delete files with ncdu, and it will confirm the deletion request before proceeding. If you want to disable this behavior to prevent accidents, use the -r option for read-only access: ncdu -r.
ncdu is available for many platforms and Linux distributions. For example, you can install it directly from the official repository on Fedora using dnf:
To learn more about this tool, check out the ncdu page.
https://dev.yorhel.nl/ncdu
2 htop as a replacement for top
htop is an interactive process viewer similar to top, but it provides a better out-of-the-box user experience. By default, htop displays the same metrics as top but with a pleasant color display.
By default, htop looks like this:

In contrast, top looks like this by default:

Additionally, htop provides an overview of system information at the top and a command bar at the bottom that can be triggered using function keys. You can also press F2 to enter the settings interface to customize it. You can change its colors, add or remove metrics, or change the display options for the overview bar.
While you can achieve similar results with the latest version of top by configuring it, htop offers a more sensible default configuration, making it a nice and easy-to-use process viewer.
To learn more about this project, check out the htop homepage.
https://hisham.hm/htop/
3 tldr as a replacement for man
The tldr command line tool displays simplified command usage information, primarily including examples. It serves as a client for the community project tldr pages.
This tool cannot replace man. The man pages remain a comprehensive source of information for many tools. However, in some cases, the information provided by man is too much. Sometimes, you don’t need all the information about a command; you just want to remember the basic options. For example, the man page for the curl command has nearly 3000 lines. In contrast, the tldr page for curl has only 40 lines, as shown below:
$ tldr curl
# curl
Transfers data from or to a server.
Supports most protocols, including HTTP, FTP, and POP3.
More information: <https://curl.haxx.se>.
- Download the contents of an URL to a file:
curl http://example.com -o filename
- Download a file, saving the output under the filename indicated by the URL:
curl -O http://example.com/filename
- Download a file, following [L]ocation redirects, and automatically [C]ontinuing (resuming) a previous file transfer:
curl -O -L -C - http://example.com/filename
- Send form-encoded data (POST request of type `application/x-www-form-urlencoded`):
curl -d 'name=bob' http://example.com/form
- Send a request with an extra header, using a custom HTTP method:
curl -H 'X-My-Header: 123' -X PUT http://example.com
- Send data in JSON format, specifying the appropriate content-type header:
curl -d '{"name":"bob"}' -H 'Content-Type: application/json' http://example.com/users/1234
... TRUNCATED OUTPUT
TLDR is an abbreviation for the internet slang “too long; didn’t read,” referring to a summary of a long article. This name fits this tool well because while man pages are useful, they can sometimes be too long.
In Fedora, the tldr client is written in Python. You can install it using dnf. To learn about other client options, refer to the tldr pages project page.
In general, the tldr tool requires internet access to look up tldr pages. The Python client in Fedora allows you to download and cache these pages for offline access.
To learn more about tldr, you can use tldr tldr.
4 jq as a replacement for sed/grep
jq is a command line JSON processor, similar to sed or grep, but specifically designed to handle JSON data. If you are a developer or system administrator who frequently works with JSON in your daily tasks, this is an essential tool in your toolbox.
Compared to general text processing tools like grep and sed, the main advantage of jq is that it understands the data structure of JSON, allowing you to create complex queries with a single expression.
For example, suppose you are trying to find the name of a container in this JSON file:
{
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
"labels": {
"app": "myapp"
},
"name": "myapp",
"namespace": "project1"
},
"spec": {
"containers": [
{
"command": [
"sleep",
"3000"
],
"image": "busybox",
"imagePullPolicy": "IfNotPresent",
"name": "busybox"
},
{
"name": "nginx",
"image": "nginx",
"resources": {},
"imagePullPolicy": "IfNotPresent"
}
],
"restartPolicy": "Never"
}
}
If you use grep to find name, it would look like this:
$ grep name k8s-pod.json
"name": "myapp",
"namespace": "project1"
"name": "busybox"
"name": "nginx",
grep returns all lines that contain the word name. You can add more options to grep to limit it, using some regex operations to find the name of the container. If you want to get the desired result using jq, you can use an expression to navigate down the data structure, as shown below:
$ jq '.spec.containers[].name' k8s-pod.json
"busybox"
"nginx"
This command provides the names of both containers. If you are only looking for the name of the second container, you can add the array index to the expression:
$ jq '.spec.containers[1].name' k8s-pod.json
"nginx"
Since jq understands the data structure, it can provide the same results even if the file format changes slightly. Whereas grep and sed may yield different results if the format changes slightly.
jq has many features, and to introduce all of these features would require another article. To learn more, check out the jq project page, man page, or tldr jq.
https://stedolan.github.io/jq/
5 fd as a replacement for find
fd is a simple and fast alternative to the find command. Its purpose is not to replace all the functionality provided by find; instead, it provides some reasonable defaults that are very useful in certain cases.
For example, when searching for source code files in a directory containing a Git repository, fd automatically excludes hidden files and directories, including the .git directory, and ignores patterns in the .gitignore file. Generally, it searches faster and provides more relevant results on the first search.
By default, fd performs case-insensitive pattern searches in the current directory and outputs is colored. Using find to perform the same search requires you to provide additional command line parameters. For example, to search for all markdown files (.md or .MD) in the current directory using find, the command would be:
To perform the same search with fd:
In some cases, fd requires additional options; for example, if you want to include hidden files and directories, you must use the -H option, which is not required with find.
fd is available for many Linux distributions. You can install it on Fedora using the standard repository with the following command:
$ sudo dnf install fd-find
To learn more, check out the fd GitHub repository.
https://github.com/sharkdp/fd/
While I still frequently use all the old basic tools, especially when connecting remotely to servers, these alternatives provide additional benefits that are very useful in many scenarios. In particular, they have greatly helped me in my work on Linux desktops and laptops.
Are there other tools you use in your workflow? Feel free to share in the comments below.
Ricardo Gerardi is a senior consultant at Red Hat Canada, specializing in IT automation based on Ansible and Openshift. He has extensive experience in the telecommunications industry, having served as a senior architect at TELUS and as a senior consultant and pre-sales expert in network management solutions at IBM Brazil and IBM Canada for 13 years. Ricardo is a Linux enthusiast with over 20 years of experience. He is currently interested in hacking things using Go programming…
Official site: www.linuxprobe.com
Linux command database: www.linuxcool.com
Teacher Liu Chuan QQ: 5604922
Linux Technical Exchange Group: 193666693
(New group, currently hot for joining…)
If you want to learn about the Linux system, you can click the “Read Original” button to learn about the book “Linux Should Be Learned Like This”, which is also very suitable for professional operations personnel to read, becoming a high-value tool book to assist your work!