50 Useful and Fun Linux Commands Every Power User Should Know


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.

Bash scripting - Help in terminal window
Bash scripting – Help in terminal window

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 lscdgrepfind, 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: