This article includes an in-depth introduction to the Linux terminal, detailed descriptions of each command, installation instructions for various distributions (Debian/Ubuntu, Fedora, openSUSE, and Arch), usage examples, and relevant links to official documentation and repositories.
Introduction: The Terminal, the Brain of Linux
In the age of graphical user interfaces and slick desktops, the command-line interface (CLI) remains a core pillar of the Linux experience. It’s not just a legacy tool — it’s a powerhouse of efficiency, automation, and control. From system administrators and developers to power users and hobbyists, the terminal offers unmatched versatility and performance. Understanding how to navigate and leverage the CLI isn’t just beneficial — it’s essential for unlocking the full power of any Linux-based system.

Graphical environments can certainly be convenient, but they often come at the cost of speed, flexibility, and scripting power. The terminal, on the other hand, gives users access to the raw heart of the operating system, enabling advanced file manipulation, system diagnostics, remote management, software compilation, and more. What’s more, it empowers users to chain tools together, automate complex workflows, and extend system functionality in creative ways.
Beyond the ubiquitous utilities like ls
, cd
, grep
, find
, and top
, the Linux ecosystem is thriving with lesser-known but incredibly useful or amusing commands that make daily workflows more efficient — and sometimes more entertaining.
This article isn’t just a collection of commands; it’s a curated journey through 50 tools that enhance usability, productivity, and system mastery. Whether you’re a seasoned sysadmin or a terminal-curious developer, you’ll discover utilities here that streamline your life, improve your system visibility, or even add a touch of fun to your terminal time.
For each command listed, you’ll find installation instructions tailored to the major Linux distributions: Debian/Ubuntu, Fedora, openSUSE, and Arch Linux. If you’ve never tried these tools before, now’s your moment to expand your command-line toolkit.
Let’s dive in.
Section 1: File Navigation & Management
1. zoxide
– Smarter Directory Jumper
Description: Replaces cd
with an intelligent, history-based directory switcher.
Installation:
# Debian/Ubuntu
sudo apt install zoxide
# Fedora
sudo dnf install zoxide
# openSUSE
sudo zypper install zoxide
# Arch
sudo pacman -S zoxide
Post-install config: Add to ~/.bashrc
or ~/.zshrc
:
eval "$(zoxide init bash)" # or "zsh" if using Zsh
Usage:
z docs
2. exa
– A Modern Replacement for ls
Description: Beautiful output with icons, colors, and tree views.
Installation:
# Debian/Ubuntu
sudo apt install exa
# Fedora
sudo dnf install exa
# openSUSE
sudo zypper install exa
# Arch
sudo pacman -S exa
Usage:
exa --long --git --icons
3. ranger
– Terminal File Manager with Preview
Description: A powerful, keyboard-controlled file manager.
Installation:
# Debian/Ubuntu
sudo apt install ranger
# Fedora
sudo dnf install ranger
# openSUSE
sudo zypper install ranger
# Arch
sudo pacman -S ranger
Usage:
ranger
Exit: Press q
4. bat
– A Better cat
with Syntax Highlighting
Description: Enhances cat
with code highlighting and line numbers.
Installation:
# Debian/Ubuntu
sudo apt install bat
# Fedora
sudo dnf install bat
# openSUSE
sudo zypper install bat
# Arch
sudo pacman -S bat
Usage:
bat script.sh
5. ncdu
– Disk Usage Analyzer
Description: Terminal-based disk usage viewer, better than du -sh
.
Installation:
# Debian/Ubuntu
sudo apt install ncdu
# Fedora
sudo dnf install ncdu
# openSUSE
sudo zypper install ncdu
# Arch
sudo pacman -S ncdu
Usage:
ncdu /
6. tldr
– Simplified Man Pages
Description: TLDR (Too Long Didn’t Read) offers simplified and community-driven versions of common man pages.
Why it’s useful: It provides concise examples for how to use commands, which is especially handy for beginners and pros alike who just need a quick syntax refresher.
Install:
sudo apt install tldr # Ubuntu/Debian
sudo dnf install tldr # Fedora
sudo zypper install tldr # openSUSE
sudo pacman -S tldr # Arch
Usage:
tldr tar
tldr curl
7. glances
– System Monitoring at a Glance
Description: Glances is a cross-platform system monitoring tool written in Python.
Why it’s useful: It provides a holistic overview of system performance: CPU, memory, disk I/O, network, sensors, and processes.
Install:
sudo apt install glances # Ubuntu/Debian
sudo dnf install glances # Fedora
sudo zypper install glances # openSUSE
sudo pacman -S glances # Arch
Usage:
glances
8. htop
– Interactive Process Viewer
Description: htop
is an improved version of top
.
Why it’s useful: Offers a colorized and interactive process list with options to sort by CPU, memory, PID, and more.
Install:
sudo apt install htop
sudo dnf install htop
sudo zypper install htop
sudo pacman -S htop
Usage:
htop
9. bpytop
– Beautiful Resource Monitor
Description: bpytop
is a Python-based resource monitor with a modern UI.
Why it’s useful: It’s visually appealing, responsive, and offers comprehensive system stats.
Install:
sudo apt install bpytop
sudo dnf install bpytop
sudo zypper install bpytop
sudo pacman -S bpytop
Usage:
bpytop
10. sl
– Steam Locomotive (Just for Fun)
Description: Typing sl
(instead of ls
) launches a steam locomotive in your terminal.
Why it’s fun: A charming easter egg for mistypers.
Install:
sudo apt install sl
sudo dnf install sl
sudo zypper install sl
sudo pacman -S sl
Usage:
sl
11. cmatrix
– Matrix Rain Animation
Description: Simulates the digital rain seen in The Matrix.
Why it’s fun: Eye-candy for your terminal.
Install:
sudo apt install cmatrix
sudo dnf install cmatrix
sudo zypper install cmatrix
sudo pacman -S cmatrix
Usage:
cmatrix
12. lolcat
– Rainbow Coloring for Terminal Output
Description: Colors terminal text in rainbow hues.
Why it’s fun: Makes any terminal output look more cheerful.
Install:
sudo gem install lolcat # Requires Ruby
Usage:
echo "Hello, world!" | lolcat
13. figlet
– ASCII Art Text Generator
Description: Turns text into large ASCII letters.
Why it’s fun: Great for making terminal banners.
Install:
sudo apt install figlet
sudo dnf install figlet
sudo zypper install figlet
sudo pacman -S figlet
Usage:
figlet Hello
14. cowsay
– Talking Cow (or Other Animals)
Description: A cow that says whatever you want.
Why it’s fun: Pure novelty; often used with fortune
and lolcat
.
Install:
sudo apt install cowsay
sudo dnf install cowsay
sudo zypper install cowsay
sudo pacman -S cowsay
Usage:
cowsay "Use the force, Linux."
15. neofetch
– System Info with Style
Description: Displays system information alongside your distro’s logo.
Why it’s useful/fun: Useful for screenshots or just bragging.
Install:
sudo apt install neofetch
sudo dnf install neofetch
sudo zypper install neofetch
sudo pacman -S neofetch
Usage:
neofetch
Absolutely! Here are commands 16 to 50 following the exact same detailed format with installation instructions, usage, and brief descriptions in English:
16. fd
– Simple, Fast and User-Friendly Alternative to find
Description: A modern replacement for find with intuitive syntax and colorized output.
Installation:
# Debian/Ubuntu
sudo apt install fd-find
# Fedora
sudo dnf install fd-find
# openSUSE
sudo zypper install fd-find
# Arch
sudo pacman -S fd
Usage:
fd pattern
fd --type f --size +10M
17. bat-extras
– Enhancements for bat
Description: Adds many extra commands that complement bat, like syntax highlighting for git diffs and more.
Installation:
# Usually installed via GitHub; install dependencies first
git clone https://github.com/eth-p/bat-extras.git
cd bat-extras
sudo ./install.sh
Usage:
bats diff somefile
bats grep pattern
18. fzf
– Command-line Fuzzy Finder
Description: A general-purpose interactive fuzzy finder for the terminal.
Installation:
# Debian/Ubuntu
sudo apt install fzf
# Fedora
sudo dnf install fzf
# openSUSE
sudo zypper install fzf
# Arch
sudo pacman -S fzf
Usage:
fzf
cat file.txt | fzf
19. neovim
– Hyperextensible Text Editor
Description: An improved version of Vim with better extensibility and modern features.
Installation:
# Debian/Ubuntu
sudo apt install neovim
# Fedora
sudo dnf install neovim
# openSUSE
sudo zypper install neovim
# Arch
sudo pacman -S neovim
Usage:
nvim file.txt
20. ripgrep (rg)
– Recursive Search Tool
Description: Fast and user-friendly alternative to grep, optimized for speed.
Installation:
# Debian/Ubuntu
sudo apt install ripgrep
# Fedora
sudo dnf install ripgrep
# openSUSE
sudo zypper install ripgrep
# Arch
sudo pacman -S ripgrep
Usage:
rg "search_term"
rg --files
21. tmux
– Terminal Multiplexer
Description: Allows multiple terminal sessions in one window, session persistence, and window splitting.
Installation:
# Debian/Ubuntu
sudo apt install tmux
# Fedora
sudo dnf install tmux
# openSUSE
sudo zypper install tmux
# Arch
sudo pacman -S tmux
Usage:
tmux
# Ctrl+b then % to split vertically
22. nc
– Netcat – Swiss Army Knife for TCP/IP
Description: Reads and writes data across network connections using TCP or UDP.
Installation:
# Debian/Ubuntu
sudo apt install netcat
# Fedora
sudo dnf install nmap-ncat
# openSUSE
sudo zypper install netcat
# Arch
sudo pacman -S openbsd-netcat
Usage:
nc -l 1234
nc hostname 1234
23. jq
– Command-line JSON Processor
Description: Parses, filters, and transforms JSON data with ease.
Installation:
# Debian/Ubuntu
sudo apt install jq
# Fedora
sudo dnf install jq
# openSUSE
sudo zypper install jq
# Arch
sudo pacman -S jq
Usage:
cat data.json | jq '.key'
24. aria2
– Lightweight Multi-protocol & Multi-source Download Utility
Description: Supports HTTP/HTTPS, FTP, BitTorrent, and Metalink downloads.
Installation:
# Debian/Ubuntu
sudo apt install aria2
# Fedora
sudo dnf install aria2
# openSUSE
sudo zypper install aria2
# Arch
sudo pacman -S aria2
Usage:
aria2c http://example.com/file.zip
aria2c -T torrent-file.torrent
25. tig
– Text-mode Interface for Git
Description: An ncurses-based text interface for Git repositories.
Installation:
# Debian/Ubuntu
sudo apt install tig
# Fedora
sudo dnf install tig
# openSUSE
sudo zypper install tig
# Arch
sudo pacman -S tig
Usage:
tig
tig status
26. dust
– More intuitive du
Description: Provides a nicer and more human-readable disk usage summary.
Installation:
# Debian/Ubuntu
# Install Rust and then use cargo:
cargo install du-dust
# Fedora
sudo dnf install dust
# openSUSE
sudo zypper install dust
# Arch
sudo pacman -S dust
Usage:
dust
dust /home
27. btop
– Resource Monitor with a Graphical UI
Description: A modern resource monitor with an intuitive and colorful interface.
Installation:
# Debian/Ubuntu
sudo apt install btop
# Fedora
sudo dnf install btop
# openSUSE
sudo zypper install btop
# Arch
sudo pacman -S btop
Usage:
btop
28. entr
– Run Arbitrary Commands When Files Change
Description: Watches files and runs commands when they are modified.
Installation:
# Debian/Ubuntu
sudo apt install entr
# Fedora
sudo dnf install entr
# openSUSE
sudo zypper install entr
# Arch
sudo pacman -S entr
Usage:
ls *.c | entr make
29. watch
– Execute a Program Periodically
Description: Runs a command repeatedly, showing output fullscreen.
Installation:
# Usually pre-installed
sudo apt install procps # Debian/Ubuntu
sudo dnf install procps-ng # Fedora
sudo zypper install procps # openSUSE
sudo pacman -S procps-ng # Arch
Usage:
watch -n 5 df -h
30. hexyl
– A Command-Line Hex Viewer
Description: View files in hex with colors and easy navigation.
Installation:
# Debian/Ubuntu
sudo apt install hexyl
# Fedora
sudo dnf install hexyl
# openSUSE
sudo zypper install hexyl
# Arch
sudo pacman -S hexyl
Usage:
hexyl file.bin
31. pv
– Pipe Viewer
Description: Monitor the progress of data through a pipeline.
Installation:
# Debian/Ubuntu
sudo apt install pv
# Fedora
sudo dnf install pv
# openSUSE
sudo zypper install pv
# Arch
sudo pacman -S pv
Usage:
pv file.iso | dd of=/dev/sdb
32. git-delta
– Syntax-highlighting pager for git
Description: Improves git diff output with color, side-by-side views, and better syntax.
Installation:
# Debian/Ubuntu
sudo apt install git-delta
# Fedora
sudo dnf install git-delta
# openSUSE
sudo zypper install git-delta
# Arch
sudo pacman -S git-delta
Usage:
git diff | delta
33. httpie
– Friendly command-line HTTP client
Description: A user-friendly HTTP client for testing APIs and sending requests.
Installation:
# Debian/Ubuntu
sudo apt install httpie
# Fedora
sudo dnf install httpie
# openSUSE
sudo zypper install httpie
# Arch
sudo pacman -S httpie
Usage:
http GET https://api.github.com/users/username
34. maim
– Screenshot tool
Description: A versatile screenshot utility with multi-format support.
Installation:
# Debian/Ubuntu
sudo apt install maim
# Fedora
sudo dnf install maim
# openSUSE
sudo zypper install maim
# Arch
sudo pacman -S maim
Usage:
maim screenshot.png
35. rsync
– Remote Sync Tool
Description: Sync files and directories locally or remotely with great efficiency.
Installation:
# Usually pre-installed
sudo apt install rsync # Debian/Ubuntu
sudo dnf install rsync # Fedora
sudo zypper install rsync # openSUSE
sudo pacman -S rsync # Arch
Usage:
rsync -avz /source/dir user@host:/destination/dir
36. ncspot
– Terminal Spotify client
Description: Spotify client written in Rust with ncurses interface.
Installation:
# Arch
sudo pacman -S ncspot
# For others, build from source on GitHub
Usage:
ncspot
37. tmate
– Instant Terminal Sharing
Description: Share your terminal session securely over SSH.
Installation:
# Debian/Ubuntu
sudo apt install tmate
# Fedora
sudo dnf install tmate
# openSUSE
sudo zypper install tmate
# Arch
sudo pacman -S tmate
Usage:
tmate
# Share the displayed SSH session link
38. lsd
– An ls replacement with colors and icons
Description: Modern alternative to ls with nice visuals.
Installation:
# Debian/Ubuntu
sudo apt install lsd
# Fedora
sudo dnf install lsd
# openSUSE
sudo zypper install lsd
# Arch
sudo pacman -S lsd
Usage:
lsd --long --group-directories-first
39. gping
– Ping with Graphs
Description: Ping tool that displays a graph of latency.
Installation:
# Arch
sudo pacman -S gping
# Debian/Ubuntu and Fedora: build from source or find a package
Usage:
gping google.com
40. speedtest-cli
– Internet speed test from CLI
Description: Test internet speed from your terminal.
Installation:
# Debian/Ubuntu
sudo apt install speedtest-cli
# Fedora
sudo dnf install speedtest-cli
# openSUSE
sudo zypper install speedtest-cli
# Arch
sudo pacman -S speedtest-cli
Usage:
speedtest-cli
41. ngrok
– Secure Tunnels to localhost
Description: Expose local servers behind NATs and firewalls to the public internet.
Installation:
# Download from official site and unzip or use package managers
Usage:
ngrok http 8080
42. entr
– Run commands when files change
Description: Monitor files and rerun commands on changes.
Installation:
# Debian/Ubuntu
sudo apt install entr
# Fedora
sudo dnf install entr
# openSUSE
sudo zypper install entr
# Arch
sudo pacman -S entr
Usage:
ls *.py | entr python main.py
43. asdf
– Version manager for multiple languages
Description: Manage multiple runtime versions with one tool.
Installation:
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.12.0
Add to shell config:
. $HOME/.asdf/asdf.sh
Usage:
asdf install nodejs latest
asdf global nodejs latest
44. broot
– Tree viewer and navigator
Description: A better alternative to tree and ls with fast navigation.
Installation:
# Debian/Ubuntu
sudo apt install broot
# Fedora
sudo dnf install broot
# openSUSE
sudo zypper install broot
# Arch
sudo pacman -S broot
Usage:
broot
45. xclip
– Command line clipboard utility
Description: Access X clipboard from the command line.
Installation:
# Debian/Ubuntu
sudo apt install xclip
# Fedora
sudo dnf install xclip
# openSUSE
sudo zypper install xclip
# Arch
sudo pacman -S xclip
Usage:
echo "Hello" | xclip -selection clipboard
xclip -o -selection clipboard
46. wget
– Non-interactive network downloader
Description: Retrieve files via HTTP, HTTPS, FTP.
Installation:
# Usually pre-installed
sudo apt install wget # Debian/Ubuntu
sudo dnf install wget # Fedora
sudo zypper install wget # openSUSE
sudo pacman -S wget # Arch
Usage:
wget https://example.com/file.zip
47. whois
– Domain lookup utility
Description: Look up domain registration info.
Installation:
# Debian/Ubuntu
sudo apt install whois
# Fedora
sudo dnf install whois
# openSUSE
sudo zypper install whois
# Arch
sudo pacman -S whois
Usage:
whois example.com
48. neovide
– A graphical frontend for neovim
Description: GUI for Neovim with smooth animations.
Installation:
# Arch
sudo pacman -S neovide
# Others: build from source or use prebuilt binaries
Usage:
neovide
49. dust
– A more intuitive du
Description: Summarizes disk usage with better readability.
Installation:
# Rust-based, install via cargo
cargo install du-dust
Usage:
dust
50. exa
– Modern replacement for ls
Description: Stylish ls with colors and icons (already covered but worth repeating here).
Installation:
# Debian/Ubuntu
sudo apt install exa
# Fedora
sudo dnf install exa
# openSUSE
sudo zypper install exa
# Arch
sudo pacman -S exa
Usage:
exa --long --icons
Linux is a treasure trove of powerful commands, many of which are not only functional but also quirky, entertaining, or surprisingly enlightening. Among the more esoteric but fascinating commands available in the Linux ecosystem, several stand out for their creativity, cleverness, or practical value in specific scenarios. Let’s explore a selection of particularly intriguing commands from the list above, providing detailed descriptions, real-life examples, and insights into how they can enrich your Linux experience.
One of the more surprisingly informative commands is whatis. While seemingly simple, whatis provides a concise one-line summary of any Linux command. It’s especially useful for newcomers or when working in a complex system where many utilities are installed. For example, running:
whatis grep
outputs:
grep (1) - print lines matching a pattern
This allows users to quickly check what a command does without diving into its man page. It’s effectively a metadata lookup and is backed by the same databases that power the man command itself, but distilled into a quick overview.
In a similar vein, apropos serves as a powerful discovery tool. Instead of looking up a specific command, apropos allows users to find commands related to a specific topic. It searches the whatis database for any entry that contains the given keyword. For instance:
apropos compression
might return a list including gzip, bzip2, xz, and zip, each with a brief description. It’s like grep for the command library, making it invaluable for discovering tools you didn’t even know existed.
Among the more entertaining utilities is cowsay
, a classic example of Unix whimsy. When invoked, cowsay takes input text and has an ASCII-art cow “say” it in a speech bubble:
cowsay "I love Linux!"
results in:
_____________
< I love Linux! >
-------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
This command is frequently used in system login messages, scripts for humorous purposes, or as part of more elaborate pipelines, especially when combined with fortune.
The fortune command itself is another piece of classic Unix fun. It displays a random, often witty or philosophical quote. When piped into cowsay, it creates an amusing banner:
fortune | cowsay
This combination became a meme in the Unix world and often appears as the default login message in retro-themed Linux distros. For those wanting even more visual novelty, cowsay can be replaced with cowthink or configured with other animals via the -f option, including Tux the penguin, ghosts, and even moose.
The sl command is a brilliant lesson in embracing user error with humor. It stands for “Steam Locomotive” and is triggered when a user mistypes “ls” as “sl.” Instead of a cryptic error, users are greeted with a cheerful ASCII art steam train chugging across the terminal. To see it in action:
sl
Though its utility is nil
, its charm is infinite—especially in systems that have it installed as a lighthearted easter egg.
On the more technical side of things, script is a deeply useful tool for recording terminal sessions. It captures everything displayed on your terminal and saves it to a file—useful for debugging, documentation, or training materials. For example:
script session.log
initiates a recording session. Everything typed and output to the terminal will now be saved to session.log. Typing exit ends the recording. This is essential for creating reproducible demonstrations or auditing sessions.
Another fascinating command is yes. While seemingly trivial, yes is a high-performance text outputter that continuously prints a string until interrupted. It’s often used to simulate user input in shell scripts that expect confirmation prompts:
yes | apt-get install something
This automatically confirms all “Are you sure?” prompts. Additionally, yes can be a fun benchmark tool, as it outputs data rapidly to stdout and can be redirected to measure disk or CPU speed. You can also customize the output:
yes "Testing 123"
This will endlessly print “Testing 123” to the terminal until Ctrl+C is pressed.
Moving into slightly more unconventional territory, toilet and figlet are two utilities that transform text into large ASCII art. For example:
figlet Linux Rocks
prints:
_ _ _
| | (_) | |
| | _ _ __ ___ ___| | _____
| | | | '_ ` _ \ / _ \ |/ / _ \
| |____| | | | | | | __/ < (_) |
|______|_|_| |_| |_|\___|_|\_\___/
These can be used for scripts, banners, or notifications. They’re not just artistic—they’re also practical when used to create legible section headers in log files or notifications.
In terms of introspection and system personality, uname and uptime are valuable. uname reveals system-level information:
uname -a
might return:
Linux mymachine 5.15.0-60-generic #66-Ubuntu SMP x86_64 GNU/Linux
This is useful when logging system metadata or debugging issues related to kernel version, architecture, or OS. Meanwhile, uptime tells you how long the system has been running, along with current user count and system load averages:
uptime
You might see something like:
14:12:45 up 3 days, 4:05, 2 users, load average: 0.15, 0.10, 0.05
This compact output is often monitored in scripts or dashboards to track stability or detect overloads.
For visualization of command pipelines and processes, the command pv
(Pipe Viewer) is an often overlooked gem. It allows you to monitor the progress of data through a pipeline. For example:
pv largefile.tar.gz | tar xzf -
lets you see a progress bar and data rate for the file being extracted. It’s indispensable for operations involving large files, where you otherwise get no feedback until completion.
Another visually satisfying utility is lolcat
, which adds a rainbow coloring effect to output. Used in conjunction with figlet:
figlet Welcome | lolcat
creates a vivid, colorful greeting—fun for custom login scripts or system branding.
A more practical but underutilized command is watch
. It re-executes a command at regular intervals and displays the output full screen, refreshing like a terminal dashboard:
watch -n 1 df -h
This refreshes disk usage stats every second, useful for real-time monitoring during operations like backups or installs.
Lastly, one cannot omit the powerful and poetic cal
. This simple utility prints a calendar for the current month, or any month/year:
cal 9 2025
outputs the calendar for September 2025. It’s useful for scripting date-based logs, scheduling scripts, or just glancing at your terminal-based planner. When combined with ncal, you can even show week numbers or the calendar in vertical format.
In conclusion, Linux is not just a technical environment—it’s a rich culture filled with humorous, helpful, and historic commands that reflect the ethos of Unix philosophy: small, sharp tools that do one thing well. Whether you’re piping cowsay into lolcat or using script to capture a debugging session, these commands make Linux not only a powerful operating system but a delightful one too.
Final Thoughts
The Linux terminal is more than just a tool — it’s a canvas. Each of the commands listed here, from the practical to the quirky, represents the incredible flexibility of open-source culture. These tools demonstrate how Linux not only solves problems efficiently but also makes the experience personal and even delightful.
Whether you’re optimizing workflows, analyzing system performance, or just trying to make your terminal look cooler, the command line offers endless possibilities.
Sources & Further Reading: