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 zoxidePost-install config: Add to ~/.bashrc or ~/.zshrc:
eval "$(zoxide init bash)" # or "zsh" if using ZshUsage:
z docs2. 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 exaUsage:
exa --long --git --icons3. 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 rangerUsage:
rangerExit: 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 batUsage:
bat script.sh5. 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 ncduUsage:
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 # ArchUsage:
tldr tar
tldr curl7. 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 # ArchUsage:
glances8. 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 htopUsage:
htop9. 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 bpytopUsage:
bpytop10. 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 slUsage:
sl11. 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 cmatrixUsage:
cmatrix12. 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 RubyUsage:
echo "Hello, world!" | lolcat13. 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 figletUsage:
figlet Hello14. 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 cowsayUsage:
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 neofetchUsage:
neofetchAbsolutely! 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 fdUsage:
fd pattern
fd --type f --size +10M17. 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.shUsage:
bats diff somefile
bats grep pattern18. 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 fzfUsage:
fzf
cat file.txt | fzf19. 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 neovimUsage:
nvim file.txt20. 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 ripgrepUsage:
rg "search_term"
rg --files21. 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 tmuxUsage:
tmux
# Ctrl+b then % to split vertically22. 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-netcatUsage:
nc -l 1234
nc hostname 123423. 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 jqUsage:
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 aria2Usage:
aria2c http://example.com/file.zip
aria2c -T torrent-file.torrent25. 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 tigUsage:
tig
tig status26. 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 dustUsage:
dust
dust /home27. 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 btopUsage:
btop28. 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 entrUsage:
ls *.c | entr make29. 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 # ArchUsage:
watch -n 5 df -h30. 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 hexylUsage:
hexyl file.bin31. 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 pvUsage:
pv file.iso | dd of=/dev/sdb32. 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-deltaUsage:
git diff | delta33. 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 httpieUsage:
http GET https://api.github.com/users/username34. 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 maimUsage:
maim screenshot.png35. 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 # ArchUsage:
rsync -avz /source/dir user@host:/destination/dir36. 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 GitHubUsage:
ncspot37. 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 tmateUsage:
tmate
# Share the displayed SSH session link38. 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 lsdUsage:
lsd --long --group-directories-first39. 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 packageUsage:
gping google.com40. 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-cliUsage:
speedtest-cli41. 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 managersUsage:
ngrok http 808042. 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 entrUsage:
ls *.py | entr python main.py43. 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.0Add to shell config:
. $HOME/.asdf/asdf.shUsage:
asdf install nodejs latest
asdf global nodejs latest44. 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 brootUsage:
broot45. 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 xclipUsage:
echo "Hello" | xclip -selection clipboard
xclip -o -selection clipboard46. 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 # ArchUsage:
wget https://example.com/file.zip47. 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 whoisUsage:
whois example.com48. 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 binariesUsage:
neovide49. dust – A more intuitive du
Description: Summarizes disk usage with better readability.
Installation:
# Rust-based, install via cargo
cargo install du-dustUsage:
dust50. 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 exaUsage:
exa --long --iconsLinux 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 grepoutputs:
grep (1) - print lines matching a patternThis 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 compressionmight 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 | cowsayThis 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:
slThough 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.loginitiates 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 somethingThis 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 Rocksprints:
_ _ _
| | (_) | |
| | _ _ __ ___ ___| | _____
| | | | '_ ` _ \ / _ \ |/ / _ \
| |____| | | | | | | __/ < (_) |
|______|_|_| |_| |_|\___|_|\_\___/ 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 -amight return:
Linux mymachine 5.15.0-60-generic #66-Ubuntu SMP x86_64 GNU/LinuxThis 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:
uptimeYou might see something like:
14:12:45 up 3 days, 4:05, 2 users, load average: 0.15, 0.10, 0.05This 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 | lolcatcreates 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 -hThis 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 2025outputs 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:
