There are hundreds commands available in Linux.
Only a very small subset of those commands are used on a day-to-day basis.
This Linux Commands Cheat Sheet offers a quick reference for both experienced and basic users.
| Command | Description | Alternative | Example |
|---|---|---|---|
| BASICS | --- | --- | --- |
| man | Display the manual page for a specific command | tldr (*) | man ls |
| history | Print a history list of all commands | history | |
| clear | Clear the terminal | clear | |
| echo | Print anything to the terminal output | echo "Hello world!" | |
| export | Set environment variable | export var1="Hello world!" | |
| alias | Set another name for a command that you’ve defined | alias lsl="ls -l" | |
| SYS INFO | --- | --- | --- |
| date | Display the current system date and time | date | |
| hostnamectl | Get system information including, operating system, kernel, and release version | uname, lsb_release, hostname | hostnamectl && hostname && uname -a |
| free | Display free and used memory in the system | free -m | |
| USER MGT | --- | --- | --- |
| sudo | Escalate privileges (equivalent to logging in as root) | sudo command1 && sudo -i | |
| w | Display all currently logged in users | w | |
| whoami | Display current user’s username | whoami | |
| passwd | Set the password for your own account, or for other accounts if you have the permissions | passwd && passwd -f username1 | |
| id | Display UID and GID of the current user | id | |
| last | Display information of the last login user | last | |
| useradd | Add a new user account | useradd user1 | |
| userdel | Delete a user account | userdel -r user1 | |
| usermod | Change the user account information including, group, home directory, shell, expiration date | usermod [option] user1 && usermod -aG group1 user1 | |
| groupadd | Create a new group | groupadd group1 | |
| groupdel | Remove a group | groupdel group1 | |
| groups | Print the names of the primary and any supplementary groups for each given username, or the current process if no names are given | groups username1 | |
| FILE MGT | --- | --- | --- |
| ls | List all files and directories in the current working directory | ls -al | |
| pwd | Print working directory | pwd | |
| cd | Change the current directory | cd && cd .. | |
| mkdir | Create a directory | mkdir dir1 | |
| touch | Creates an empty file or updates the timestamp of an existing file | touch file1 | |
| cp | Copy files | cp oldfile newfile | |
| mv | Move/Rename a file | mv oldfile newfile | |
| rm | Delete a file / directory | rm file1 && rm -rfi dir1 | |
| ln | Create a link to another file | ln -s file1 link1 && ln -l | |
| chmod | Assign (read, write, and execute) permission to files and directories | chmod 777 file1 && chmod -R 777 dir1 && chmod 766 file1 && chmod -x file1 | |
| chown | Change the owner and group ownership of a file or directory | chown user1 file1 && chown user1:group1 file1 && chown -R user1:group1 dir1 | |
| rsync | Transfer and synchronize files between local and remote devices using a delta-transfer algorithm (using ssh) | rsync -a /opt/filename.zip /tmp/ | |
| nc | Transfer data between machines using netcat | ip a && nc -lv 1337 > dest.bin && nc -w 1 192.168.0.91 1337 < src.bin | |
| tar | List/Compress/Uncompress files in/from the Tar archive | tar -tvf file1.tar && tar -cvf file1.tar file2 && tar -xvf file1.tar && tar -xvf file1.tar file2.txt && tar -rvf file1.tar file2.txt | |
| zip | Compress files to a zip | zip file1.zip file2.txt file3.txt file4.txt && zip -u file1.zip file2.txt && zip -d file1.zip file2.txt | |
| unzip | List/Uncompress files in/from a zip archive file | unzip file1.zip && unzip file1.zip -d /dir1 | |
| extra: ~ | Home folder of current user | cd ~ | |
| extra: .bashrc | File with commands to execute each time a new interactive, non-login shell is started | echo 'alias ll="ls -lah"' >> .bashrc | |
| extra: .bash_profile | File with commands to execute when you start a login shell | echo "neofetch" >> .bash_profile && echo ". ~/.bashrc" >> .bash_profile | |
| FILE VIEWING | --- | --- | --- |
| cat | Display the content of the file | cat file1 | |
| head / tail | Display the first/last 10 lines of a file | head file1 && tail file2 | |
| less, more | Break down the output and scroll through it using enter or space keys | cat file1 | less -sN | |
| diff, cmp, comm | Compare files: find text/binary/sorted differences, | diff file1 file2 && cmp file1 file2 && comm file1 file2 | |
| sort | Sort lines in a text file or standard input | cat file1 | sort -n | |
| grep | Search for specific patterns or strings in string; "global regular expression print" | cat file1 | grep "Hello" | |
| awk | Powerful search through text files by columns | awk '/manager/ {print}' employee.txt | |
| sed | Powerful stream editor | gsed | sed 's/unix/linux/' geekfile.txt |
| cut | Cut sections from each line of a file, and write the result to the standard output | cut -b 1-3,5-7 state.txt | |
| nano, msedit | Start this text editor using a command line interface | vim, gedit | nano file1 && sudo snap install msedit && msedit file1 |
| DISK MGT | --- | --- | --- |
| fdisk | List all disk partitions / Create partition | fdisk -l && fdisk /dev/sda | |
| mkfs | Format a partition | mkfs.ext4 /dev/sda1 | |
| fsck | Check and repair a filesystem for any error | fsck.ext4 /dev/sda1 | |
| mount | Mount any partition to any directory | mount /dev/sda1 /mnt | |
| df | Display free space of mounted file system | df -h | |
| du | Display the size of your current directory | du -hs | |
| lsblk | Display information about block devices | lsblk | |
| lsusb | Display all USB devices | lsusb -tv | |
| hdparam | Perform a read speed test on disk | hdparm -tT /dev/sda | |
| badblocks | Test for unreadable blocks on disk | badblocks -s /dev/sda | |
| PROCESS MGT | --- | --- | --- |
| which | Locate the executable file associated with a given command including binaries, scripts, and aliases | whereis, whatis | which ls |
| pidof | Get the PID of any process | pidof processname1 | |
| ps | Display all active processes | ps && ps -ef | grep processname1 && ps -p pid1 | |
| pstree | Display processes in the tree-like diagram | pstree | |
| bg | Display stopped or background jobs | bg | |
| top | Manage and display all processes in realtime | htop (*) | top |
| kill | Kill a specific process using process ID | kill pid1 | |
| killall | Kill all processes by name | killall processname1 | |
| shutdown | Shut down the system | shutdown -h now | |
| reboot | Restart the system | reboot | |
| systemctl | Manage system services and units with commands to start, stop, restart, check status via systemd and service manager | (prefer over "service") | systemctl status serviceName1 |
| journalctl | Allows to filter logs by boot sessions, time ranges, systemd units, process IDs, user IDs, group IDs, and more | journalctl -r | |
| service | Manage system services (long-running processes that are started at boot time and run in background) | serice ssh status && service ssh stop && service ssh start | |
| lsof | List all files opened by running processes | lsof | |
| extra: $PATH | Environmental variable that tells the shell which directories to search for executable files | echo $PATH | |
| NETWORK MGT | --- | --- | --- |
| ip | Display the IP and Mac Address of the system | ifconfig (*) | ip a && ifconfig && ip addr show |
| netstat | Display all listening port | netstat -pnltu | |
| ping | Check connectivity between two hosts | ping ip_host1 | |
| traceroute | Trace the route of network packet | traceroute host1 | |
| ssh | Establish a secure shell connection to a remote server | ssh user1@host1 | |
| wget | Download a file | wget linkToFile1 | |
| PACKAGE MGT | --- | --- | --- |
| apt | List/Install/Remove the package on Debian based distributions | apt-get, dpkg, apt | apt-get install packagename1 && apt-get remove packagename1 && apt-get update && dpkg -l | grep -i installed && dpkg -i packagename1.deb && apt-get upgrade packagename1 && apt-get autoremove |
| dnf | List/Install/Remove a package on RPM-based distributions | rpm, yum, dnf | yum install packagename1 && yum remove packagename1 && yum update && yum list --installed && yum list --available |
| nix (*) | Declative and tranactional package manager for all distros | nix profile install nixpkgs#tmux | |
Package managers are used to install apps (and libraries):
| Category | Directory | Description |
|---|---|---|
| BINARIES | --- | --- |
| System Binaries | /bin | essential executable binaries for all users |
| /sbin | essential executable binaries for root user | |
| /lib, /lib* | libraries with shared code between binaries | |
| User Binaries | /usr | "unix system resources", non-essential and installed binaries or applications |
| Optional Software | /opt | optional or add-on or large third-party software - rarely used, eg /opt/google/chrome |
| CONFIGURATION | --- | --- |
| Configuration files | /etc | system-wide/global configuration files "Et cetera / Editable Text Config" |
| DATA | --- | --- |
| User-related directories | /home | permission based personal space for regular users |
| /root | personal space for root user | |
| Service Files | /var | "variable" secured files which change frequently during system operations, eg logging, caching |
| /run | temporary runtime data for system and applications right after boot | |
| /srv | temporary runtime data for services | |
| Temporary Files | /tmp | modifyable files for short time use, created by apps or users |
| /lost+found | chunks of broken files after system crash | |
| MOUNT | --- | --- |
| Mount Points & Media | /media | automatically mounted removable media, and used by regular users |
| /mnt | storage mounted by root/sysadmin and used by scripts | |
| BOOT & KERNEL | --- | --- |
| Boot & Kernel related | /dev | device or hardware files - dynamically created, eg /dev/sda represents first hard drive |
| /boot | all files to boot the system, eg grub.cfg | |
| System Info | /proc | virtual fs containing dynamic data about running processes |
| /sys | virtual fs containing dynamic data about linux kernel | |