50 Most Useful Linux Commands You Need To Know (Cheat Sheet)
Once you start feeling confident with the Linux installation, desktop environment, vocabulary, and differences with other operating systems, you’re doing a fantastic job. But mastering the Linux commands is like the black belt in martial arts, the icing on the cake, as they say.
In this article, I hand-picked the 50 most useful Linux commands you need to know. After over 20 years of Linux server administration, these are the ones I use almost every day, or that saved my life a few times.
I sorted them by category to make them easier to find, and you can also download my cheat sheet in PDF, to have them with you all the time.
Files management
The Linux files organization is a tree, starting at the root: /. Each subfolder created under it is accessible starting with /. For example: /home/pat ⇒ pat is a subfolder of /home, home is a subfolder in /. I wrote an entire article giving you more detail about this: How Does the Linux File System Works?. It's written for Raspberry Pi users, but the idea is the same with any Linux computer or server.
- cd <path>: Changes directory, go to the specified folder in the files tree.
cd /home/pat
. - ls: Lists the files and directory in the current or specified folder.
ls ls /home/pat
ls -latr /home/pat - mkdir <folder>: Creates a new subfolder in the current or specified folder.
mkdir myfolder
mkdir /home/pat/myfolder - cp <file> <destination>: Copies a file or a directory to another location (to copy a complete directory you need to add the -r parameter for “recursive”).
cp test.txt /home/pat/Documents/
cp /home/pat/test.txt /home/pat/Documents/
cp -r /home/pat/test/ /home/pat/Documents/ - mv <source> <destination>: Moves a file or a directory to another location.
mv /home/pat/test.txt /home/Documents/
mv /home/pat/test/ /home/Documents/ - cat <file>: Displays all the content of the specified file.
cat /home/pat/README.txt
- more <file>: Displays the content of the specified file, page per page (enter or space to continue, q to quit).
more /var/log/syslog
- tail <file>: Tail allows you to display the end of a file, it’s useful to check new entries in a log file.
tail /var/log/syslog
You can specify the number of lines to display with -n.tail -n20 /var/log/syslog
And finally, my favorite is the option -f to display new lines in real-time.tail -f /var/log/syslog
- head <file>: It’s the same as tail but displays the beginning of a file.
head /home/pat/file.txt
head -n20 /home/pat/file.txt - grep <string>: Grep is a powerful tool to search string in a text. You can use it to search for something in a file or to filter the output of another command or script.
Basic usage:grep dhcp /var/log/syslog
As I say, you can use it on a file or a script output:cat /var/log/syslog | grep dhcp
/home/pat/myscript.sh | grep error
ls -latr | grep php
And finally, there are a lot of options to use with grep, like regular expressions or options to display lines before (-B), after (-A) or around (-C) the search string.
You can also use -v to display everything except the input string.grep 'dhcp|dns' /var/log/syslog
grep -A2 -B4 'Fatal error' /var/log/apache/error.log
grep -v 'Notice' /var/log/apache/error.log
If you like this tool, I recommend you read the man page to know exactly what you can do with it.man grep
More details about grep here. - nano <file>: Nano is text editor. It would need an entire article to go into detail (In fact, I already wrote it on RaspberryTips if you want to check).
It allows you to edit a file, and save your changes with (CTRL + O, Enter, CTRL + X).nano /home/pat/myscript.sh
You’ll find all actions available at the bottom of the screen.
- rm <file>: Deletes a file. For a folder, add option -rf (recursive and force)
rm monscript.sh
rm -rf /home/pat/scripts/
Be really careful if you are using sudo with this command. Using it on system folders will delete everything without any warning message, and can break your system in a few seconds. - tar -c: You can use tar to store files into an archive. It’s often used with gzip to compress files.
tar -cvfz archive.tar.gz /home/pat/Documents/mydirectory
-c: create an archive
-v: verbose
-f: filename of the archive follow
-z: compress files with gzip - tar -x: It’s the same command but to extract files.
tar -xvfz archive.tar.gz
-x: extract an archive - find: As the name suggests, find is useful to locate files on your computer.
find /home/pat -iname *.tar.gz
There are many options to help you find the good file (size, last modification date, …). And if you want to learn options to quickly find a file on Linux, you can also read this other article on the topic.
- pwd: Pwd lets you see in which directory you are.
pwd
- tree: Another great tool to analyze your current location in the file tree. It will show you the entire lower tree (see the example below).
tree
Note: you may need to install this one depending on your distribution:sudo apt install tree
Network commands
Also: Yes, you can access your Pi from anywhere. Here's how.
Download your exclusive free PDF containing the most useful Linux commands to elevate your skills!
Download now
Configuration
- ip: Displays your current network configuration, mainly your IP address if connected.
ip a
That’s the easiest way to find the computer IP address, but there are other solutions when you don’t have access to it (as I explain in this article). - ping <ip>: Sends a ping packet to another IP on the network to check if the host is alive.
ping 192.168.1.1
- ifup <interface>: Enables the specified interface.
sudo ifup eth0
- ifdown <interface>: Disables the specified interface. Can be useful to disable Wi-Fi if you are already connected by cable for example.
sudo ifdown wlan0
By the way, it’s a great idea to disable the Wi-Fi interface if you don’t use it. You can find more permanent solutions in this article, but ifdown is a quick way to do this.
Note: If you want to see all these commands in action, I have a video lesson available for the community members. You can join here and watch it directly if you are interested (with 10+ other lessons for Raspberry Pi and many other benefits).
File transfer and remote connection
- wget <url>: This command allows you to download a file from the Internet.
wget https://wordpress.org/latest.zip
- ssh <user>@<ip>: SSH is a network protocol that provides you a way to connect securely to a remote computer.
ssh root@192.168.1.201
SSH is very useful to remote control a Linux server, check this article to learn everything about it:
Use SSH For Remote Control: A complete guide - scp <file> <user>@<ip>:<path>: scp can transfer a file to a remote computer over SSH.
scp test.txt root@192.168.1.201:/root/
- rsync <file> <user>@<ip>:<path>: rsync does almost the same thing but with a delta comparison algorithm and some optimizations to transfer files faster.
rsync test.txt root@192.168.1.201:/root/
rsync -auzr /home/pat/Documents/* /home/pat/backups/Documents/As you can see, you can also use rsync for local file synchronization.
I generally use this command to back up my servers (as explained here). I send all the important files to my local NAS (I’m using this device). It takes a few seconds and I know I’m safe after that.
System updates
- apt update: Downloads the last repository version for each one you have in your configuration (/etc/apt/sources.list).
sudo apt update
If you use Fedora or Redhat it will be “dnf” instead of “apt” but it’s exactly the same idea.
The Manjaro documentation has a great table comparing the different package managers (link). - apt upgrade: Updates all installed packages if needed.
sudo apt upgrade
Packages management
- apt install <package>: Installs the specified package(s).
sudo apt install phpmyadmin
sudo apt install vim htop - apt remove <package>: Removes a previously selected package.
sudo apt remove vim
- apt search <search>: Searches for a package name in the packages list (repository).
sudo apt search myadmin
sudo apt search php - dpkg -l: Lists all installed packages on your system. You can use grep to find a specific package.
dpkg -l
dpkg -l | grep myadmin
System management
- reboot: As the name says, this command will restart the computer immediately.
sudo reboot
- shutdown -h now: This is to stop the computer immediately.
sudo shutdown -h now
You can replace “now” by a specific time (shutdown -h 12:05).
More details about this command in this article. - service <servicename> <action>: This command allows you to start or stop services.
service apache2 start
service apache2 stop
Sometimes there are other options, depending on the service, for example:service apache2 reload
service apache2 restart
Don’t type any action to see all those available:service apache2
For information, you can also use systemctl to do the same thing, on Debian you have the choice, but on some systems it’s only systemctl. - update-rc.d <service> <action>: On Debian, this command allows you to manage the service start or stop on the system boot.
To start a service on boot:sudo update-rc.d ssh enable
To disable start of the service:sudo update-rc.d -f ssh remove
The -f option is here to force the symbolic link deletion. This command is only for service. To start other scripts or commands on boot, you have to edit the /etc/rc.local file.sudo nano /etc/rc.local
- ps: This command displays all running process on your computer.
The basic command is this one to display everything:ps aux
You can also display the processes started by a specific user:ps -u pat
This will give you a list like this:
The process ID (PID) can be useful for other commands, to stop it for example (next command). - kill <pid>: The kill command allows you to terminate a process. You’ll need the process ID to do this (see the previous command).
kill 12345
Sometimes you may need to use the -9 option to force all related commands to stop. For example, if you run 20 commands in a script and kill it, it’ll continue to the next line, not exit the program, except if you use the -9 option.kill -9 12345
You can also use killall to stop all occurrences of a program.
killall php
This command will stop all PHP scripts.
Be aware that this command will immediately stop the process asked, no matter what was going on. It isn’t a clean stop.You don’t know what the script is doing so it can damage data or corrupt files.
This should be used as a last step, and if possible on the non-critical process.
Full kill command guide here if needed. - htop: This tool is an alternative to top. It’s more user-friendly than top, with colors and dynamic load bars.
htop
More details in this article: Optimizing Your Raspberry Pi: How to Check RAM Usage - df: Displays the partition list, with the disk space used and available for each one.
df
df -h-h option is for the human-readable format.
Misc
- history: Linux store any command you type in an archive file. History is the command to use to display this list.
history
You can also clear all the history.history -c
Or clear one specific entry.history -d 12
More about this command here. - crontab: Cron is a tool to schedule tasks on a Linux computer. Crontab is the file where you enter lines for each task to run.
crontab -l
crontab -e
-l option to display lines.
-e option to edit lines.
You can use sudo before to schedule tasks to run with root privileges.
I have an entire tutorial on this topic if you need more information.
I also recommend using a crontab tool like this one to quickly find the correct syntax. - screen: This tool allows you to let something run in the background even if you close your session.
screen -s <name>
screen -r <name>
-s option to start a new screen with the following name.
More details: The ‘screen’ Command on Linux: A Beginner’s Guide
-r option to resume a running screen with this name.
You can forget the name if you want, an ID will be generated, use screen -r to find it and screen -r <ID> to resume it.
With only one screen running, screen -r will resume it directly.
Warrior commands
- awk: awk is almost a programming language in itself. It allows you to search string and transform them to display it differently.
So it’ll be difficult to summarize all the possibilities in a few lines, but I’ll try to give you some examples to understand it.
The basic syntax of awk is this one:awk -F":" '{print $1}' /etc/passwd
/etc/passwd is the file to parse. The field separator is “:” so we use it in the -F option.
Then in the program string, we ask to display only the first column.
So this command will display only a list of usernames.
This is the simple way to use it if you want to know more, I recommend reading a dedicated tutorial like this one. - sed: sed allows you to do similar things to awk. This command will transform text to what you want.
As for awk, it’s a complex command to master, and I’ll only introduce it here.
The basic syntax looks like this:sed <option> <script> <file>
So it’s very close to awk on this.
Let’s see an example:sed '/^#/d' /etc/apache2/apache2.conf
In each configuration file, you’ll find a lot of comments to explain what each line is.
This command will display the apache configuration file without comments.
We use a regular expression to delete lines starting with #.
You have to redirect the output to another file to save it.sed '/^#/d' /etc/apache2/apache2.conf > /etc/apache2/apache2-nocomment.conf
Like for awk, this is just a glimpse of what sed can do.
If you want to know more, there is also a good sed tutorial on the same website. - cut: cut is the last way to transform text that I’ll introduce. It’s less powerful but it’s simpler to use, so if cut can do it, you’ll probably prefer to use it rather than awk or sed.
As the name suggests, cut allows you to extract part of a text or file.
The basic syntax is:cut <options> <file>
echo <string> | cut <options>
The first one is for a file, and the second one to cut a string directly.
A basic example now:echo "abcdefghi" | cut -c 2-4
This will display only “bcd”.
-c option is for the character, so basically, it’ll extract character 2 to 4.
Here are other options with a file:cut -d : -f 1 /etc/passwd
This will do the same thing as the first example of the awk command.
/etc/password is a file with “:” use as a delimiter.
-d option is to give the delimiter character (“:”).
-f option is to indicate the column to extract (f stands for the field).
So, this will display only the first column and you’ll get a list of usernames.
- wc: wc stands for Word Count, it allows you to count everything in a file or stream.
There are three main options: -l for lines, -w for words and -m for characters.
There is also the -c option to get the file size.
Wc without option will give you all of this.wc .bash_history
668 1977 17979 .bash_history
The first column is line count, the second is word count, and the last is the file size in bytes.
Here are some examples of options:wc -l .bash_history
ls -latr | wc -l
wc -w myfile.txt - lsof: lsof stands for “List open files”.
This command displays all files open on your Linux system.
This can be useful to know why you can’t edit a file, or which file lock the unmount process.lsof
- watch: If you are waiting for something, in a file or directory, the watch command can help you to monitor what happens. This will execute the same command every two seconds.
watch date
watch ls -latr
watch cat output.txt
You can also change the refresh rate with the -n option.watch -n10 date
This will display the current date every ten seconds.
By the way, the Linux “date” command is not included here, but you can click on the link to learn useful tips about it. - netstat: Netstat is a powerful tool to monitor what your Linux server is doing with the network. For example, you can see every port open and every traffic flow.
But netstat is a complex tool that i can’t explain in detail in a few lines.
I will only introduce some basic usages to display all listening connections you can use:netstat -l
-p option will add the process id (PID).netstat -lp
-c option allows you to refresh data continuously.netstat -lpc
You can find all options in the man page of netstat. - dmesg: This command is useful to understand your Linux system boot problems.
It will show you every event that happened in the start sequence.
Here you could see errors with drivers or services and understand why something doesn’t work the way you want.dmesg
You will get a column with the time elapsed since the beginning of the boot and a text explaining what happened.
There are also normal messages when everything is fine.
Download your exclusive free PDF containing the most useful Linux commands to elevate your skills!
Download now
Conclusion
Download your exclusive free PDF containing the most useful Linux commands to elevate your skills!
Download now
history | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n10
- 5 Most Effective Ways to Free Disk Space on Ubuntu Server
- How To Open Image Files In Linux Terminal
- How To Safely Extend a Partition on Ubuntu (GUI & Commands)
- How To Find The MAC Address On Ubuntu / Linux (4 ways)
And if you still have trouble using the terminal on Linux, remember that solutions like Webmin on Ubuntu can do most of what these commands do, but from a nice web interface ;-).
Download your exclusive free PDF containing the most useful Linux commands to elevate your skills!
Download now
Reminder: Remember that all the members of my community get access to this website without ads, exclusive courses and much more. You can become part of this community for as little as $5 per month & get all the benefits immediately.
Additional Resources
Overwhelmed with Linux commands?
My e-book, “Master Linux Commands”, is your essential guide to mastering the terminal. Get practical tips, real-world examples, and a bonus cheat sheet to keep by your side.
Grab your copy now.
VIP Community
If you just want to hang out with me and other Linux fans, you can also join the community. I share exclusive tutorials and behind-the-scenes content there. Premium members can also visit the website without ads.
More details here.
Need help building something with Python?
Python is a great language to get started with programming on any Linux computer.
Learn the essentials, step-by-step, without losing time understanding useless concepts.
Get the e-book now.