Useful linux commands
In this post, we are going to take a look on some essential and useful linux / unix commands that are being used for day to day operations
Commands for directory operations
ls
This command is use to list content in folder
ls [options] [directory or path]
example , if I am inside /etc/ folder, and if I execute command then I can see all folders inside /etc/ folder as below
root@Prabhu:/etc# ls
PackageKit cron.daily fstab kernel mime.types polkit-1 selinux sysctl.d
X11 cron.hourly fuse.conf landscape mke2fs.conf profile sensors.d systemd
adduser.conf cron.monthly gai.conf ld.so.cache modprobe.d profile.d sensors3.conf terminfo
alternatives cron.weekly glvnd ld.so.conf modules protocols services timezone
apparmor cron.yearly gnutls ld.so.conf.d modules-load.d python3 sgml tmpfiles.d
apparmor.d crontab gprofng.rc ldap mtab python3.12 shadow ubuntu-advantage
option : -la
ls command have many options, some useful options are as below
ls -la
where
-l : use a long listing format -a, –all: do not ignore entries starting with .
Example:
root@Prabhu:/etc# ls -la
total 808
drwxr-xr-x 88 root root 4096 Jun 11 22:51 .
drwxr-xr-x 22 root root 4096 Jun 11 22:46 ..
-rw------- 1 root root 0 Sep 27 2024 .pwd.lock
-rw-r--r-- 1 root root 837 Sep 27 2024 .resolv.conf.systemd-resolved.bak
-rw-r--r-- 1 root root 208 Sep 27 2024 .updated
drwxr-xr-x 2 root root 4096 Sep 27 2024 PackageKit
drwxr-xr-x 7 root root 4096 Sep 27 2024 X11
-rw-r--r-- 1 root root 3444 Jul 5 2023 adduser.conf
drwxr-xr-x 2 root root 4096 Sep 27 2024 alternatives
option : -lt
if you want to sort the list content by time then use -lt option
ls -lt
where -t: sort by time, newest first; see –time
Example:
root@Prabhu:/etc# ls -lt
total 792
-rw-r--r-- 1 root root 17607 Jun 11 22:51 ld.so.cache
drwxr-xr-x 4 root root 4096 Jun 11 22:51 ssl
drwxr-xr-x 2 root root 4096 Jun 11 22:51 gnutls
drwxr-xr-x 2 root root 4096 Jun 11 22:50 init.d
option: -ltr
if you want to sort the list content by time in reverse order then use -ltr option
ls -ltr
where
Example:
root@Prabhu:/etc# ls -ltr
total 792
-rw-r--r-- 1 root root 45 Jan 24 2020 bash_completion
-rw-r--r-- 1 root root 12813 Mar 27 2021 services
-rw-r--r-- 1 root root 34 Aug 2 2022 ld.so.conf
-rw-r--r-- 1 root root 367 Aug 2 2022 bindresvport.blacklist
-rw-r--r-- 1 root root 552 Oct 13 2022 pam.conf
-rw-r--r-- 1 root root 3144 Oct 17 2022 protocols
where: -r, –reverse: reverse order while sorting
There are many other options, but I use above options in my day to day life
pwd
This command is used to print full path of current directory
pwd [options]
Example
root@Prabhu:/etc# pwd
/etc
It has several options as below -L, –logical: use PWD from environment, even if it contains symlinks -P, –physical: avoid all symlinks
cd
This command is used for navigation
cd [directory path where you want to go]
example, if I am inside /etc/ folder and I want to go to pm folder inside same directory then I will use following command
root@Prabhu:/etc# pwd
/etc
root@Prabhu:/etc# cd pm
root@Prabhu:/etc/pm#
if you want to go to some other folder of specific path then we can pass full directory path as below
root@Prabhu:/etc/pm# pwd
/etc/pm
root@Prabhu:/etc/pm# cd /var/run/log
root@Prabhu:/var/run/log#
cd command also provides some shortcuts as below
cd
: returns to current user’s home directory
cd ..
: go to one level up
cd -
: go to previous directory
mkdir
This command is used to create new directory
mkdir dir_name
Example
root@Prabhu:~/prasad# mkdir testing
root@Prabhu:~/prasad# ls
testing
root@Prabhu:~/prasad#
rmdir
This command is used to remove empty directory
rmdir dir_name
Example
root@Prabhu:~/prasad# ls
testing
root@Prabhu:~/prasad# rmdir testing
root@Prabhu:~/prasad# ls
root@Prabhu:~/prasad#
Note: this command can only delete empty folders, if you have any file / folder inside this folder then this command cannot be used.
Commands for file operations
touch
This command is used to create new empty file in folder or to update timestamp of existing file
touch [option] file_name.extension
Example:
root@Prabhu:~/prasad# ls
root@Prabhu:~/prasad#
root@Prabhu:~/prasad# touch test.txt
root@Prabhu:~/prasad# ls
test.txt
root@Prabhu:~/prasad#
cp
This command is used to copy files and folders from one location to another location
cp [options] source destination
Example
root@Prabhu:~# cp prasad/test.txt shell/
root@Prabhu:~# cd shell/
root@Prabhu:~/shell# ls -ltr
total 32
-rwxr-xr-x 1 root root 16 Jun 11 23:33 test.txt
root@Prabhu:~/shell#
If you want to copy whole directory including its files and sub folders then need to use option -r along with this.
Example: if I want to copy folder /etc/ssh along with its sub folders and files then execute commands as below
root@Prabhu:~#
root@Prabhu:~# cp -r /etc/ssh/ prasad
root@Prabhu:~# cd prasad
root@Prabhu:~/prasad# ls -ltr
total 8
-rwxrwxrwx 1 root root 16 Jun 11 23:31 test.txt
drwxr-xr-x 3 root root 4096 Jun 11 23:38 ssh
root@Prabhu:~/prasad# cd ssh
root@Prabhu:~/prasad/ssh# ls -ltr
total 8
drwxr-xr-x 2 root root 4096 Jun 11 23:38 ssh_config.d
-rw-r--r-- 1 root root 1649 Jun 11 23:38 ssh_config
root@Prabhu:~/prasad/ssh#
mv
This command is used to move the file or folder from one location to another or to rename the file
mv source destination
Example if you want to move file from one folder to another
root@Prabhu:~# mv prasad/test.txt shell/test.txt
root@Prabhu:~# cd shell
root@Prabhu:~/shell# ls -ltr
total 12
-rwxrwxrwx 1 root root 16 Jun 11 23:31 test.txt
root@Prabhu:~/shell#
if you want to rename the file, then keep destnation same but change filename while execute mv command
root@Prabhu:~/shell# mv test.txt test2.txt
root@Prabhu:~/shell# ls -ltr
total 12
-rwxrwxrwx 1 root root 16 Jun 11 23:31 test2.txt
cat
This command is used to print the content of file
cat [options] filename
Example, if you want to see content in file
root@Prabhu:~/shell# cat file.txt
this is prasad
root@Prabhu:~/shell#
Example, if you want to read the content of one file and put it into another file as below
root@Prabhu:~/shell# cat test2.txt > file.txt
root@Prabhu:~/shell# less file.txt
this is prasad
file.txt (END)
grep (Global regualar expression print)
This command is very helpful if you want to search specific word from files
grep [options] pattern [filename]
Example: to search keyword in any specific file
root@Prabhu:~/shell# grep "prasad" file.txt
this is prasad
if you want to display line number in search result
root@Prabhu:~/shell# grep -n "prasad" file.txt
1: this is prasad
root@Prabhu:~/shell#
if you want to display count of number matches your pattern then use command sa below
root@Prabhu:~/shell# grep -c "prasad" file.txt
1
root@Prabhu:~/shell#
if you want to check if any specific keyword exists in which all files in folder
root@Prabhu:~/shell# grep -l "prasad" *
exit.sh
file.txt
returnCode.sh
test2.txt
find
This command is used to search for file and directories based on name, type, size, data etc
find [path] -options [expression]
where Path : where to start for sarch Expression: Criteria like filename, size etc Example, if you want to search if file with specific name in folder “shell”
root@Prabhu:~# find shell -name "file.txt"
shell/file.txt
root@Prabhu:~#
if you want to search by type/ extension
root@Prabhu:~# find shell -name *.txt
shell/file.txt
shell/test2.txt
root@Prabhu:~#
if you want to search all files with specific permissions
root@Prabhu:~# find shell -perm 777
shell/for.sh
shell/functions.sh
shell/if.sh
shell/returnCode.sh
shell/test2.txt
shell/exit.sh
root@Prabhu:~#
use grep
and find
together to search for specific keyword in file
root@Prabhu:~# find ./ -type f -name "*.txt" -exec grep "prasad" {} \;
this is prasad
root@Prabhu:~#
awk
This command is used for pattern scanning and processing
awk options 'pattern {action}' input_file > output_file
Example Print all lines in file
root@Prabhu:~/shell# awk '{print}' file.txt
this is prasad
root@Prabhu:~/shell#
print specific column
root@Prabhu:~/prasad# awk '{print $1,$4}' sample.txt
What Ipsum?
Lorem simply
Why use
It long
Where come
Contrary belief,
The of
Where get
There variations
root@Prabhu:~/prasad#
sed
This command used to replace content in the file
sed 's/old_content/new_content/' file_name
Example, let’s replace ‘prasad’ by ‘prabhu’ in file.txt
root@Prabhu:~/shell# cat file.txt
this is prasad
as you see file contain this is prasad
now execute sed
command to replace
root@Prabhu:~/shell# sed 's/prasad/prabhu/' file.txt
this is prabhu
root@Prabhu:~/shell#
less
This command is used to read / print few lines in files, then we can enter space to remaining content and so on
Below is syntax
less file_name
1: enter q to exit fron reading mode 2: if you want to search anything, then enter / followed by keyword example
/prasad
then press enter 3: if you are in search mode, and you want to find next occurrence then pressn
4: if you are in search mode, and you want to find previous occurrence then press shift +n
head
This command is used to print first few lines in file Below is syntax
head file_name
tail
This command is used to print last few lines in file Below is syntax
tail file_name
diff
This command is used to check difference in two files in same folder or different folder
diff file1 file2
example, if I want to find difference in file.txt and test2.txt in same folder
root@Prabhu:~/shell# diff file.txt test2.txt
1c1
< this is prasad
---
> this is prabhu
root@Prabhu:~/shell#
Access & User operations
sudo
This command enables non-root user who are part of sudo group to execute administrative operations Syntax is as below
sudo [options] command
if you want to act as sudo then execute following command
sudo su
if you want to modify any file which need admin previlages then use command as below
sudo nano file.txt
We can perform many such operations using sudo but you should be part of sudo group in order to use this command
whoami
Use this command to check current logged in user
root@Prabhu:~/prasad# whoami
root
root@Prabhu:~/prasad#
chmod
this command used to change file/ directory permissions Syntax
chmod [options][permission][file / directory]
Example if I want to modify permission for sample.txt, below is current permission befor change
root@Prabhu:~/prasad# ls -la
total 16
drwxr-xr-x 3 root root 4096 Jun 12 22:45 .
drwx------ 8 root root 4096 Jun 12 23:11 ..
-rw-r--r-- 1 root root 3094 Jun 12 22:37 sample.txt
root@Prabhu:~/prasad#
now read-write permissions to all users for this file
root@Prabhu:~/prasad# ls -la
total 16
drwxr-xr-x 3 root root 4096 Jun 12 22:45 .
drwx------ 8 root root 4096 Jun 12 23:11 ..
-rwxrwxrwx 1 root root 3094 Jun 12 22:37 sample.txt
chown
this command is used to change ownership of file / directory, below is its syntax
chown [options] newowner:newgroup [filename]
disk related operations
df
this command is used to check disk usage and used spaced in your machine example
root@Prabhu:~# df
Filesystem 1K-blocks Used Available Use% Mounted on
none 5038196 0 5038196 0% /usr/lib/modules/6.6.87.1-microsoft-standard-WSL2
none 5038196 4 5038192 1% /mnt/wsl
drivers 123857916 121770020 2087896 99% /usr/lib/wsl/drivers
/dev/sdd 1055762868 1675256 1000384140 1% /
none 5038196 80 5038116 1% /mnt/wslg
none 5038196 0 5038196 0% /usr/lib/wsl/lib
rootfs 5033176 2664 5030512 1% /init
none 5038196 520 5037676 1% /run
none 5038196 0 5038196 0% /run/lock
none 5038196 0 5038196 0% /run/shm
none 5038196 76 5038120 1% /mnt/wslg/versions.txt
none 5038196 76 5038120 1% /mnt/wslg/doc
C:\ 123857916 121770020 2087896 99% /mnt/c
D:\ 976760828 350942804 625818024 36% /mnt/d
tmpfs 5038196 16 5038180 1% /run/user/0
root@Prabhu:~#
du
This command is used to check size of directory in KB Example
root@Prabhu:~# cd shell/
root@Prabhu:~/shell# du
40 .
root@Prabhu:~/shell#
Process related operations
top
Command shows all running processes in system and their hardware consumption
root@Prabhu:~/shell# top
top - 23:26:44 up 1:29, 2 users, load average: 0.01, 0.02, 0.00
Tasks: 30 total, 1 running, 29 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 9840.2 total, 9310.8 free, 493.3 used, 196.3 buff/cache
MiB Swap: 3072.0 total, 3072.0 free, 0.0 used. 9346.9 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 21740 12240 9296 S 0.0 0.1 0:00.94 systemd
2 root 20 0 3060 1792 1792 S 0.0 0.0 0:00.02 init-systemd(Ub
7 root 20 0 3076 1792 1792 S 0.0 0.0 0:00.00 init
65 root 19 -1 50420 15752 14984 S 0.0 0.2 0:00.48 systemd-journal
118 root 20 0 25004 6272 4992 S 0.0 0.1 0:00.15 systemd-udevd
192 systemd+ 20 0 21452 12800 10624 S 0.0 0.1 0:00.11 systemd-resolve
193 systemd+ 20 0 91020 7552 6784 S 0.0 0.1 0:00.18 systemd-timesyn
205 root 20 0 4236 2560 2432 S 0.0 0.0 0:00.01 cron
ps
this command shows summarized status of running processes in system
root@Prabhu:~/shell# ps
PID TTY TIME CMD
1566 pts/2 00:00:00 sudo
1567 pts/2 00:00:00 su
1568 pts/2 00:00:00 bash
1597 pts/2 00:00:00 ps
root@Prabhu:~/shell#
kill
This command is used to kill any process, we need to pass process id to kill that perticular process
kill PID
Other utility commands
uname
this command shows information about system
root@Prabhu:~/shell# uname
Linux
To display all setting, use -a
root@Prabhu:~/shell# uname -a
Linux Prabhu 6.6.87.1-microsoft-standard-WSL2 #1 SMP PREEMPT_DYNAMIC Mon Apr 21 17:08:54 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
root@Prabhu:~/shell#
hostname
Use this command to get hostname of your system
root@Prabhu:~/shell# hostname
Prabhu
time
Use this command to check system date time settings
root@Prabhu:~/shell# time
real 0m0.000s
user 0m0.000s
sys 0m0.000s
root@Prabhu:~/shell#
ip
this command is used to get list and manage network related parameters
ip [options] command
Example, To display ip address of current system
root@Prabhu:~/shell# ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet 10.255.255.254/32 brd 10.255.255.254 scope global lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:15:5d:48:7f:77 brd ff:ff:ff:ff:ff:ff
inet 172.28.43.90/20 brd 172.28.47.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::215:5dff:fe48:7f77/64 scope link
valid_lft forever preferred_lft forever
root@Prabhu:~/shell#
Enjoy Reading This Article?
Here are some more articles you might like to read next: