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