Linux command-line cheatsheet

Using help

apropos topic_name
Show list of manual pages related to topic
man topic_name
Show manual page for specified topic
info topic_name
Show info page for specified topic (sometimes easier to read than man)
whatis command_name
One-line summary for command
whereis command_name
Displays information where binary command is located; alternatively: "type command_name"

Working with filesystem

ls
List current directory content, options: -l (detailed), -l - h (detailed with size in kB/MB), -l -S (detailed sorted by size), -a (plus hidden files whose names starts with dot), -t (sort by access time)
List current directory content, detailed
ls -l | more
List current directory content, detailed, piping output to more
du -hs /usr
Get /usr directory size
pwd
Get full path of current directory
cd
Change directory, i.e. cd /home/tomeko, cd .. to go one level up, cd without parameters moves to current user home directory, "cd -": switches between current and last directory; if path contains space use quotes, doublequotes or escape each space with backslash
mkdir
Make directory; mkdir -p path creates also all needed upper level directories needed
rmdir
Remove directory; rm -r for recursive, rm -rf for recursive with no confirmation
rm
Another way of removing files and directories, switch -r for recursive, -f for force, -i for interactive
cp source destination
Copy files; use * to match all; options: -a (archive, copy file properties as well), -p (preverse, copy file owners and permissions), -r (recursive), -u (update: copy only if destination is older or does not exist)
mv source destination
Move (or rename) files
touch filename
Update access and modification of specified file to current; if file does not exist new file is created (unless -c option is used)

File-matching metacharacters

*
matches any number of characters
?
matches single character
[...]
Matches any one of the characters between the brackets; may include dash-separated range of letters or numbers; use exclamation for negation
~
Replaces user home directory

File ownership and permissions

Every file and directory has an owner. To determine user permissions to access file system checks first if user is file owner. In this case user gets permissions specified for file owner. If not, it checks if user is a member of group owner. Otherwise permissions for "other" users are used. File/directory ownership can be listed with ls -l. Newly created file group ownership is the same as user primary group, type groups to get list of groups user belongs to.

chown username filename
Change file ownership
chown -R username directory
Change ownership recursively
chgrp groupname filename
Change group ownership
chmod 751 filename
Change permissions to read+write+execute for user (4+2+1), read+execute (4+1) for group and execute (1) for others
chmod -R 777 directory
Change permissions recursively
chmod +x filename
Add execute permission for all users
chmod g+w filename
Add write permission for group; multiple changes can be combined with colons, i.e. chmod g+w,o-r,u+x filename

Searching for files

find /var/log -name "*log*"
Find files with names containing "log" in /var/log
find /usr/sbin -executable
Find executables
find /sbin -executable -size +100k
Find executables larger than 100 kB; all numeric arguments can be specified as +n (more than), -n (less than) or n (exact value)
find /var/log -mmin -10
Find files that were modified less than 10 minutes ago
find /var/log -amin -100
Find files that were accessed less than 100 minutes ago
locate file_pattern
Search tool working with indexed database - may be much faster than find

Working with archives

tar -czvf home.tar.gz /home
Create (c) zipped (z) file (f) with verbose output (v); more than one directory can be listed after space; option -C before source would cause storing paths as relative
tar -xzvf ./home.tar.gz
Extracts archive to current directory
tar -xvf /file.tar -C /dest_dir
Extracts archive to specified directory

Creating whole device (raw) backups

dd if=/dev/cdrom of=/image.iso
Create device image
mount -o loop /image.iso /mnt
Mount device image

Symbolic and hard links

ln -s file symlink
Create symbolic link; symbolic link will fail if original link would be removed
ln file hardlink
Create hard link; hard link behaves like a copy of the file that is synchronized continuously

Process management

ps aux
Process list
ps aux | grep keyword
Process list with filter
pstree
Process tree
top
Process monitor; use top -u username to limit to only specified user processes; Shift+M to sort by memory usage, Shift+P to sort by CPU usage, k to kill process with specified signal (15 = SIGTERM, 9 = SIGKILL), q to quit
kill [-s signal] process_pid
Kill process with specified PID; by default uses signal 15, SIGKILL
program_name &
Start program in background
jobs
Get the list of programs running in background
fg job_number
Bring job to foreground
bg job_number
Resume (stopped with Ctrl+Z) job in background
kill %job_number
Kill process related to job number

Network

netstat -platune
Information about current network connections, ports listening and programs involved
nmap ip_address
Port scan

Kernel

lsmod
List currently loaded kernel modules
modinfo module_name
Detailed module informations
modprobe module_name
Load module (-v for verbose, -f to force ignoring kernel version)
modprobe -r module_name
Unload module
dmesg
Display kernel message log

Other useful commands

env
List environment variables
history
Recently used commands (not necessary this session only); add number to limit to N recent entries
!command_number
Execute command from history from specified position
!cd
Execute last "cd" command instance from history
!?string?
Run again last command containing specified string
passwd
Change password for the current user (also applies to root)
su [username]
Temporary change your identity; type exit to go back to your account
shutdown -r now
Reboot computer
shutdown -h now
Shut down (halt)
w
Get list of currently logged users and their activity
clear
Clear screen
ldd executable_name
Show shared library dependencies for specified executable (required system libraries)
lsof
List open files; lsof -u username to limit to specified user
uname -a
Shows basic informations about kernel, processor, current user, helps to identify distro
whoami
Display current user account name
last
Recent logins, reboots and shutdowns
date
Shows current date and time
cal
Display calendar (whole year if without arguments)
man ascii
Displays ASCII table
ssh username@ip_address
Initiate ssh session
scp filename username@ip_address:/home/my_path
Transfer file to remote computer (-r for recursive directory copying)

Some shortcuts

Ctrl+Alt+F1 ... Ctrl+Alt+F6
Switching to tty1 ... tty6
Ctrl+Alt+F7
Switching back to graphical environment
Tab, double Tab
While typing command: file/directory name autocompletion

Vi(m): text editor

Pretty non-intuitive command line editor. Use nano if available.

vi filename
Create new or open existing file for editing
Esc
switching from input mode to command mode
i
switching from command mode to input mode
:w newfile (command mode)
Save file with new name
:q!
Quit without saving
:w
Save file
:wq!
Save current file and exit
u
Undo last changes
G
Go to the bottom of the file

Displaying text file content

cat filename
Plain lister that just dumps content on the screen
cat filename
Plain lister; tac displays lines in reverse order
cat filename | grep keyword
Show file lines containing specified keyword
tail -f /var/log/syslog
Shows last lines (10 by default) of specified file and waits for file updates
head /var/log/syslog
Shows first lines (10 by default) of specified file
less /var/log/syslog
Lister with browsing capabilities. Type :q (similar to vim) to exit.
diff --side-by-side file1 file2
Shows diff in human-readable form

Common directories

/bin
Essential binaries available to all users
/sbin
Binaries for the system administrator (i.e. fdisk)
/boot
Kernel image (vmlinuz) and other vital components
/dev
Files corresponding to system hardware
/etc
Configuration files
/home
Users personal files. Current user home directory can be referred to with shortcut ~
/mnt and/or /media
Mounted data storage
/usr
Most all-user accessible files; most programs are stored in /usr/bin
/opt
Used as directory for complex software packages (i.e. office suite)
/proc
Interface to system memory and some system features, current state of the kernel, i.e. /proc/cpuinfo (print processor specification: cat /proc/cpuinfo), /proc/meminfo, /proc/net/sockstat, /proc/sys/fs/file-max, /proc/process_PID_number
/root
Used as root home directory (instead of /home)
/srv
Important services like HTTP or FTP and their files
/sys
Directory similar to /proc, but stored directly on disk
/tmp
Directory where every user can write to
/var
i.e. print spool