🐧 Linux Command Line

Multilingual DevOps cheat sheet: Linux, Docker, Git, Kubernetes, Helm, Terraform, practical scenarios & templates.
Published

31 August 2025

Basic and advanced commands for navigation, files, processes, networking, monitoring, packages and automation. Suitable for DevOps workflows.

🔹 Basic commands

Command

Example

Description

cat Show file content or concatenate several files
cat file.txt

View file content

cat file1 file2

Concatenate and output two files

cat file1 file2 > merged.txt

Concatenate files and save to a new file

cd Change the current working directory
cd /etc

Go to absolute path /etc

cd ~

Go to the home directory

cd ..

Move one level up

cd -

Return to the previous directory

clear Clear the terminal screen
cp Copy files and directories
cp file1.txt file2.txt

Copy a file with a new name

cp -r dir1 dir2

Recursively copy a directory

cp -i file.txt /tmp/

Copy with confirmation before overwrite

echo Print a string or environment variable
echo "Hello, World!"

Print a simple string

echo $HOME

Show the home directory path

echo -e "1\t2\n3"

Interpret escape sequences ( )

history Display command history
id Show UID, GID and group memberships of the current user
ls List files and directories
ls -l

Long listing with permissions and owners

ls -a

Show hidden files

ls -lh

Human-readable sizes

mkdir Create directories
mkdir folder

Create a single directory

mkdir -p a/b/c

Create nested directories

mkdir dir{1,2,3}

Create several directories at once

mv Move or rename files/directories
mv oldname.txt newname.txt

Rename a file

mv file.txt /path/to/dir/

Move a file to another directory

mv *.txt archive/

Move all .txt files to the archive folder

pwd Print the current working directory
pwd -P

Show the physical path (no symlinks)

cd /tmp && pwd

Show path after changing to /tmp

rm Remove files or directories
rm file.txt

Delete a file

rm -i file.txt

Delete a file with confirmation

rm -r folder/

Recursively delete a directory

rm -rf folder/

Force delete without confirmation

rmdir Remove an empty directory
rmdir emptydir

Remove the emptydir directory

touch Create empty files or update modification time
touch newfile.txt

Create a new empty file if it doesn’t exist

touch a b c

Create several files at once

touch -c file.txt

Update time without creating a file if absent

whereis Locate the binary, source and man pages of a command
whereis ls

Find locations for ls

whereis bash

Show paths for Bash binary and docs

whereis -b bash

Search for the binary only

which Show the path of the command executable
which python3

Path to python3

which grep

Path to grep

which --skip-alias ls

Skip aliases while searching

whoami Print the effective user name

🔸 Intermediate level

Command

Example

Description

chmod Change file or directory permissions
chmod 755 file

Set permissions with octal notation (e.g. 755)

chmod +x script.sh

Add the execute bit to a script

chmod -R 644 dir/

Recursively set permissions on a directory

chown Change file owner and group
chown user file

Change the owner of a file

chown user:group file

Change owner and group

chown -R user:group dir/

Recursively change owner and group

curl Transfer data from/to a server (HTTP, HTTPS, etc.)
curl -I https://example.com

Send a HEAD request (headers only)

curl -O https://example.com/file.txt

Download a file and keep its name

curl -d "a=1&b=2" -X POST URL

Send a POST request with form data

df Report file system disk space usage
df -h

Human-readable sizes

df /home

Usage of a specific mount point

df -T

Show file system types

diff Compare files or directories
diff file1 file2

Compare two files

diff -u old.c new.c

Unified diff (patch-style)

diff -r dir1 dir2

Recursive directory comparison

du Estimate file and directory space usage
du -sh *

Show size of items in the current directory

du -h file.txt

Show size of a single file

du -sh --max-depth=1 /var

Summarise sizes of top-level subdirs

find Search for files/directories by name, size, time, etc.
find . -name "*.log"

Find all .log files in the current directory

find / -type f -size +100M

Find files larger than 100 MB

find . -mtime -1

Files modified within the last day

free Display the amount of free and used memory
free -h

Human-readable memory units

free -m

Show values in MB

watch -n 2 free -h

Refresh output every 2 seconds

grep Search text using patterns (regular expressions)
grep "error" logfile

Find lines containing error

grep -r "error" /var/log

Recursive search in a directory

grep -i "fail" file

Case-insensitive search

head Output the first lines of a file
head -n 10 file

First 10 lines

head -n 20 file.txt

First 20 lines

head -c 100 file

First 100 bytes

hostname Show or set the system’s host name
hostname newname

Temporarily set the host name until reboot

hostname -I

Show IP addresses

kill Send signals to processes
kill -9 1234

Force-kill a process by PID

kill -TERM 1234

Terminate gracefully with SIGTERM

pkill -f python

Kill processes matching a pattern

ping Check network connectivity using ICMP echo requests
ping 8.8.8.8

Ping an address

ping -c 4 ya.ru

Send 4 packets

ping -i 2 1.1.1.1

Set a 2-second interval

ps Report process status
ps aux

List all processes

ps -ef | grep nginx

Filter by name using grep

ps -u $USER

Processes of the current user

rsync Fast incremental file transfer
rsync -av src/ dst/

Synchronise directories locally

rsync -avz user@host:/src /dst

Sync with a remote host over SSH

rsync --delete src/ dst/

Delete files in destination missing in source

scp Secure copy (remote file copy program)
scp file user@host:/path

Copy a file to a remote host

scp user@host:/file.txt .

Copy a file from a remote host

scp -r dir user@host:/path

Recursively copy a directory

sort Sort lines of text
sort file.txt

Alphabetical sort

sort -r file.txt

Reverse order

sort -n numbers.txt

Numeric sort

tail Output the last part of files; follow changes
tail -f logfile.log

Follow a log in real time

tail -n 20 file.txt

Show the last 20 lines

tail -c 100 file.txt

Show the last 100 bytes

tar Create, list or extract tar archives
tar -czf archive.tgz dir/

Create a compressed .tgz archive

tar -xzf archive.tgz

Extract a .tgz archive

tar -tf archive.tgz

List archive contents

tee Read from stdin and write to stdout and files
echo "test" | tee out.txt

Write output to out.txt and display it

ls | tee list.txt

Save ls output to a file and display it

command | tee -a log.txt

Append output to the end of log.txt

top Display Linux tasks (interactive process viewer)
top

Start top

htop

Alternative interactive viewer (htop)

top -o %MEM

Sort by memory usage

uptime Show how long the system has been running
uptime -p

Formatted uptime

uptime -s

System boot time

wget Non-interactive network downloader
wget https://site.com/file.zip

Download a file by URL

wget -c file.zip

Resume an interrupted download

wget -O saved.txt URL

Save with a different filename

wc Print line, word, and byte counts for files
wc -l file

Count lines

wc -w file

Count words

wc -m file

Count characters

uniq Report or filter out repeated lines (adjacent duplicates)
uniq file.txt

Remove adjacent duplicates

sort file | uniq

Remove duplicates after sort

sort file | uniq -c

Count occurrences of each line

yes Output a string repeatedly until killed; useful for scripting
yes "y" | command

Always answer “y” to prompts

yes | rm -i *

Auto-confirm interactive deletions

yes no | command

Answer “no” to prompts

🔧 Advanced commands

Command

Example

Description

at Schedule a one-off command to run at a given time
at now + 1 minute

Run a command one minute from now

atq

List pending jobs

atrm

Remove a pending job

awk Pattern-scanning and processing language
awk '{print $1}' file

Print the first column

ps aux | awk '$3 > 50'

Filter processes by CPU usage

cat file.txt | awk '{print $2}'

Print the second field from each line

awk '/error/ {print $0}' logfile

Print lines matching a pattern

crontab Install, list, or remove per-user cron jobs
crontab -e

Edit the current user’s crontab

crontab -l

List cron jobs

crontab -r

Remove the current user’s crontab

cut Remove or select sections from each line of files
cut -d':' -f1 /etc/passwd

Print usernames from /etc/passwd

echo "a:b:c" | cut -d':' -f2

Cut the second field using ‘:’ as delimiter

cut -c1-5 filename

Select characters by position

df Report file system disk space usage
df -h

Human-readable sizes

df -T

Show file system types

df /home

Usage for the home directory

env Run a command in a modified environment or print environment variables
env | grep PATH

Show PATH entries

env -i bash

Start a clean shell with an empty environment

export Set environment variables for the current shell/session
export VAR=value

Set a variable for this shell

export PATH=$PATH:/new/path

Append a directory to PATH

export -p

List exported variables

free Display memory usage
free -m

Show in MB

free -h

Human-readable units

free -s 5

Sample every 5 seconds

hostnamectl Query and change the system host name and related settings
hostnamectl status

Show host name status

hostnamectl set-hostname newname

Set a new static host name

ifconfig / ip IP tools to view/manage interfaces and addresses
ifconfig

Show network interfaces (legacy)

ip a

Show addresses with ip

ip link set eth0 up

Bring an interface up

iostat Report CPU and I/O statistics
iostat -x 2

Extended stats every 2 seconds

iostat -d 5 3

Device statistics (5s interval, 3 reports)

iptables Administration tool for IPv4 packet filtering and NAT
iptables -L

List current rules

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Allow incoming SSH on port 22

iptables -F

Flush all rules

journalctl Query the systemd journal
journalctl -xe

Show recent errors with context

journalctl -u nginx.service

Show logs for a service

journalctl --since "2 hours ago"

Show logs since a relative time

ln Make links between files
ln -s target link

Create a symbolic link

ln file.txt backup.txt

Create a hard link

ln -sf target link

Force recreate a symbolic link

sed Stream editor for filtering and transforming text
sed 's/old/new/g' file

Replace a string globally

sed -n '1,5p' file

Print only a range of lines

sed '/pattern/d' file

Delete matching lines

systemctl Control the systemd system and service manager
systemctl status nginx

Show service status

systemctl start nginx

Start a service

systemctl enable nginx

Enable a service at boot

tr Translate or delete characters
tr a-z A-Z

Convert lowercase to uppercase

echo "hello" | tr 'h' 'H'

Replace a character

echo "abc123" | tr -d '0-9'

Delete digits

type Describe how a name would be interpreted in the shell
type ls

Show how ls is resolved

type cd

Show how cd is resolved

type python3

Show how python3 is resolved

ulimit Get or set user process resource limits
ulimit -n

Show max open files

ulimit -c unlimited

Enable core dumps

ulimit -u 4096

Limit the number of user processes

uptime Show system uptime and average load
uptime -p

Formatted uptime

uptime -s

Show boot time

xargs Build and execute command lines from standard input
xargs -n 1 echo

Echo each argument on a separate line

echo "a b c" | xargs -n 1

Split words into separate arguments

find . -name '*.txt' | xargs rm

Find files and remove them with xargs

🌐 Network commands

Command

Example

Description

curl Transfer data to/from servers
curl -X POST -d "a=1" URL

POST request with form data

curl -I URL

Fetch headers only

curl -o file.html URL

Download and save to a file

dig DNS lookup utility
dig openai.com

Query A records

dig +short openai.com

Short answer

dig @8.8.8.8 openai.com

Use a specific DNS server

ftp File Transfer Protocol client
ftp host

Connect to an FTP server

ftp -n host

Connect without auto-login

ftp> get file.txt

Download a file in an FTP session

ip address Show/manipulate IP addresses
ip addr show eth0

Show address info for eth0

ip addr

List all addresses

ip link Show/manipulate network devices
ip link show

Show network links

ip link set eth0 up

Bring an interface up

ip route Show/manipulate the IP routing table
ip route list

List routing table

ip route add default via 192.168.1.1

Add a default route

nc Arbitrary TCP/UDP connections and listeners
nc -zv host 22

Port scan a host

nc -l 1234

Listen on a TCP port

nc host 1234 < file

Send a file to a remote port

nmap Network exploration tool and security/port scanner
nmap -sP 192.168.1.0/24

Ping scan a subnet

nmap -sV 192.168.1.1

Service/version detection

nmap -O 192.168.1.1

OS detection

nslookup Query Internet domain name servers
nslookup google.com

Query a domain name

nslookup 8.8.8.8

Reverse lookup for an IP

ssh OpenSSH remote login client
ssh user@host

Connect to a host

ssh -p 2222 user@host

Connect using a non-default port

ssh -i ~/.ssh/id_rsa user@host

Login with a specific private key

ss Utility to investigate sockets
ss -tuln

List TCP/UDP listening ports

ss -s

Summary statistics

ss -l

List listening sockets

telnet User interface to the TELNET protocol
telnet host 80

Connect to a host on port 80

telnet example.com 443

Connect to 443

telnet localhost 25

Connect to local SMTP

traceroute Trace the route to a network host
traceroute 8.8.8.8

Trace path to an IP

traceroute -m 15 8.8.8.8

Limit max hops

wget Retrieve files from the web
wget -O file.txt URL

Save output to a file

wget URL

Download to the current directory

wget -c URL

Continue a partial download

🔍 Searching and managing files

Command

Example

Description

basename Strip directory and suffix from file names
basename /path/to/file

Print the file name from a path

basename /path/to/file .txt

Strip a suffix from the name

dirname Strip last component from a path
dirname /path/to/file

Show directory part of the path

dirname /etc/passwd

Show parent of /etc/passwd

du Estimate file space usage
du -sh folder/

Show size of a directory

du -h *

Show size of items in the current directory

du -c folder1 folder2

Cumulative size of multiple directories

file Determine file type
file some.bin

Detect file type

file *

Detect types for all files in a directory

file -i file.txt

Show MIME type

find Search for files
find /path -type f -name "*.sh"

Find shell scripts by name

find . -size +10M

Find files larger than 10 MB

find /tmp -mtime -1

Find files modified in the last day

locate Find files by name using a database
locate filename

Locate a file name

locate *.conf

Wildcard search

locate -i README

Case-insensitive search

realpath Print the resolved absolute path
realpath file

Resolve a file path

realpath ../relative/path

Resolve a relative path

stat Display file or file system status
stat file

Show detailed file status

stat -c %s file

Print file size only

stat -f file

Show file system status

tree List contents of directories in a tree-like format
tree

Print directory tree

tree -L 2

Limit the display depth

tree -a

Include hidden files

📊 System monitoring

Command

Example

Description

dmesg Print or control the kernel ring buffer
dmesg | tail

Show the last kernel messages

dmesg | grep usb

Filter for USB messages

free Display memory usage
free -h

Human-readable units

free -m

Show in MB

htop Interactive process viewer
htop

Run htop

iotop Display I/O usage by processes
iotop

Run iotop

iotop -o

Show only processes doing I/O

lsof List open files
lsof -i :80

Show processes using port 80

lsof -u username

Show files open by a user

uptime Show system uptime and load averages
vmstat Report virtual memory statistics
vmstat 1

Refresh every 1 second

vmstat 5 3

Five-second interval, 3 reports

watch Execute a programme periodically, showing output
watch -n 1 df -h

Watch disk usage

watch -d free -h

Highlight differences and watch memory

📦 Package management

Command

Example

Description

apt APT package manager (Debian/Ubuntu)
apt install curl

Install a package

apt remove curl

Remove a package

apt update && apt upgrade

Update package lists and upgrade

dnf Dandified YUM (Fedora/RHEL family)
dnf install curl

Install a package

dnf upgrade

Upgrade packages

rpm RPM package manager
rpm -ivh package.rpm

Install an RPM package

rpm -e package

Erase (uninstall) a package

snap Snappy package manager
snap install app

Install a snap

snap remove app

Remove a snap

yum Yellowdog Updater Modified (RHEL/CentOS)
yum install curl

Install a package

yum remove curl

Remove a package

💽 File systems

Command

Example

Description

blkid Locate/print block device attributes
blkid

List block devices and attributes

df Report file system disk space usage
df -Th

Human-readable sizes by type

fsck Check and repair a Linux file system
fsck /dev/sda1

Check a device

lsblk List information about block devices
lsblk

List devices in a tree

mkfs Build a Linux file system
mkfs.ext4 /dev/sdb1

Create an ext4 file system

mount Mount a file system
mount /dev/sdb1 /mnt

Mount a device to /mnt

mount | grep /mnt

Show mounted file systems filtered by path

parted Partition manipulation programme
parted /dev/sdb

Open a disk for partitioning

umount Unmount file systems
umount /mnt

Unmount a mount point

🤖 Scripts and automation

Command

Example

Description

alias Define or display shell aliases
alias ll='ls -la'

Create a handy alias

alias

List defined aliases

bash / sh Run shell scripts
bash script.sh

Run a script with Bash

sh script.sh

Run a script with sh

crontab Per-user cron tables
crontab -e

Edit the current user’s crontab

read Prompt for user input in shell scripts
read name

Read into a variable

set Set shell options/positional parameters
set -e

Exit on first error

source Read and execute commands from a file in the current shell
source ~/.bashrc

Reload shell configuration

trap Trap signals and execute commands
trap "echo 'exit'" EXIT

Run a command on shell exit

🛠 Development and debugging

Command

Example

Description

gcc GNU C compiler
gcc main.c -o app

Compile a C source file

gdb GNU debugger
gdb ./app

Debug a compiled binary

git Distributed version control system
git status

Show status of the working tree

git commit -m "msg"

Commit with a message

ltrace Library call tracer
ltrace ./app

Trace library calls of a binary

make Utility to maintain groups of programmes
make

Build according to Makefile

shellcheck Static analysis for shell scripts
shellcheck script.sh

Lint a shell script

strace Trace system calls and signals
strace ./app

Trace a programme’s syscalls

valgrind Instrumentation framework for building dynamic analysis tools
valgrind ./app

Run a programme under Valgrind

vim / nano Command-line text editors
vim file.sh

Edit with Vim

nano file.sh

Edit with Nano

📌 Miscellaneous

Command

Example

Description

cal Display a calendar
cal 2025

Show a year calendar

cal 08 2025

Show a specific month

date Display or set the system date and time
date +%T

Print current time (HH:MM:SS)

date -d "next friday"

Print date for a relative day

factor Factor integers
factor 100

Factorise a number

man Format and display the manual pages
man tar

Open a man page

man -k copy

Search manuals by keyword

man 5 passwd

Open a specific manual section

seq Print sequences of numbers
seq 1 5

Count from 1 to 5

seq 1 2 9

Count with step

seq -s ',' 1 5

Join numbers with a custom separator

yes Output a string repeatedly until killed
yes | rm -r dir

Auto-confirm a recursive removal

📚 Additional resources

📘 man pages – detailed manuals for commands:

man ls
man rm

📙 TLDR – concise usage examples of popular commands:

🧠 Tip: Install tldr for cheat-sheet-style help:

sudo apt install tldr   # or: npm install -g tldr
tldr tar                # example of a short summary for the tar command

🌐 Useful links

Linux man pages online — official manual pages, searchable by command name:
https://man7.org/linux/man-pages/

Simplified and community-driven man pages — community help pages with practical examples:
https://tldr.sh/