This whole repository is created to track all the useful linux commands in one place. Created for my own use but you can also star this repository to keep a track on this.
-
w: w displays information about currently logged in users and what each user is doing.
$ w 23:35:01 up 2:29, 1 user, load average: 0.72, 1.07, 1.04 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT nirjas :1 :1 21:04 ?xdm? 34:58 0.01s /usr/lib
-
who Shows information about currently logged in user.
$ who nirjas :1 2021-11-01 21:04 (:1)
Here, from left, nirjas - Login Name of the User
:1 - User terminal
2021-11-01 21:04 - Date & Time of login -
whoami: Shows the system’s username
$ whoami nirjas
-
id: This command is used to find out user and group names and numeric ID's (UID or group ID) of the current user or any other user in the server.
$ id uid=1000(nirjas) gid=1000(nirjas) groups=1000(nirjas),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),120(lpadmin),132(lxd),133(sambashare)
-
groups: This command is used to display all the groups for which the user belongs to.
$ groups nirjas adm cdrom sudo dip plugdev lpadmin lxd sambashare
-
users: Displays usernames of all users currently logged on the system.
$ users nirjas
-
last: Displays a list of all last logged in users. The list can be huge according to the number of user logins.
$ last nirjas :1 :1 Mon Nov 1 21:04 gone - no logout reboot system boot 5.13.0-20-generi Mon Nov 1 15:06 still running nirjas :1 :1 Mon Nov 1 20:30 - crash (-5:24) reboot system boot 5.13.0-20-generi Mon Nov 1 20:30 still running nirjas :1 :1 Mon Nov 1 23:53 - down (-3:24) reboot system boot 5.13.0-20-generi Mon Nov 1 23:53 - 20:29 (-3:23) nirjas :1 :1 Sun Oct 31 23:31 - down (01:56) reboot system boot 5.13.0-20-generi Sun Oct 31 23:30 - 01:27 (01:56)
-
lastlog: This command is used to find the details of a recent login of all users or a particular user pass through as a flag.
$ lastlog Username Port From Latest root **Never logged in** daemon **Never logged in** bin **Never logged in** sys **Never logged in** sync **Never logged in** games **Never logged in** man **Never logged in** lp **Never logged in** mail **Never logged in** news **Never logged in**
-
Man: This command shows the documentation of every command of linux.
$ man ls
-
Date: Shows date
$ date
Mon Nov 1 11:57:01 PM +06 2021
- History: History command shows all the previously used terminal commands in a list.
$ history
1 ls
2 lspci
3 lsusb
4 sudo lspci
5 sudo apt-get update
6 sudo apt-get upgrade
7 lspci
- whatis: Whatis shows a short particular information about a command.
$ whatis wget
wget (1) - The non-interactive network downloader.
- whereis: Shows the location of binary, source and manual files for commands.
$ whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
- alias: Rename a long repitive command with a short name. For example you can make the command ls -la to any of your suitable name like below example. Then you can use that name to use the command.
$ ls -la
drwxr-xr-x 8 nirjas nirjas 4096 Nov 2 11:25 .
drwxr-xr-x 4 nirjas nirjas 4096 Nov 2 10:58 ..
-rw------- 1 nirjas nirjas 765 Nov 2 13:26 .bash_history
-rw-r--r-- 1 nirjas nirjas 220 Apr 18 2019 .bash_logout
-rw-r--r-- 1 nirjas nirjas 3564 Oct 27 16:56 .bashrc
$ alias nr="ls -la"
$ nr
drwxr-xr-x 8 nirjas nirjas 4096 Nov 2 11:25 .
drwxr-xr-x 4 nirjas nirjas 4096 Nov 2 10:58 ..
-rw------- 1 nirjas nirjas 765 Nov 2 13:26 .bash_history
-rw-r--r-- 1 nirjas nirjas 220 Apr 18 2019 .bash_logout
-rw-r--r-- 1 nirjas nirjas 3564 Oct 27 16:56 .bashrc
To unalias type,
unalias <your alias name>
$ unalias nr
- clear: Clears the terminal
$ clear
-
pwd The pwd(Present Working Directory) command is used to show current working directory.
$ pwd /home/nirjas
-
ls: The ls command is used to list directories and files.
-
Basic command to list files and directories exclusing hidden files:
$ ls
-
List all the files with hidden files and directories that will be denoted as . at the start of the file or directory names.:
$ ls -a
-
Use -la flag to list all the files with their permission details:
$ ls -la
-
-
mkdir The mkdir (make directory) command allows users to create directories or folders.
$ mkdir mydir $ ls mydir
The flag '-p' is used to create multiple directories or parent directories at once.
$ mkdir -p dir1/dir2/dir3 $ cd dir1/dir2/dir3 ~/home/nirjas/dir1/dir2/dir3$
-
rmdir: The rmdir (remove directories) is used to remove empty directories. To delete directories that contains files and fodlers refer to
rm -r directoryName
.-
Remove empty directory:
$ rmdir directoryName
-
Remove multiple directories:
$ rmdir dir1 dir2 dir3
-
Remove entire directory tree. This command is similar to
rmdir a/b/c a/b a
:$ rmdir -p a/b/c
-
-
rm: The rm (remove) command is used to remove files, directories, symbolic links etc from the file system.
-
Remove file: The rm command is used to remove or delete a file.
$ rm <filename> or <path of file>
-
Remove file forcefully: The rm command with -f option is used to remove file without prompting for confirmation.
$ rm -f filename
-
Remove directory: The rm command with -r option is used to remove the directories that contains files. The -r flag is used to delete the contents recursively.
$ rm -r directoryName
-
Remove directory forcefully: The rm command with -rf option is used to forcefully remove directory recursively.
rm -rf directoryName
-
-
touch: The touch command is used to create new empty files. Touch is also used to change timestamps on existing files and directories.
-
Create a file: You can create a single empty file using touch command.
$ touch file1.txt
The above command will create a file titled file1.txt.
-
Create multiple files: You can create the multiple numbers of files at the same time.
$ touch file1 file2 file3
-
Change access time: The touch command with
-a
option is used to change the access time of a file.$ touch -a file1.txt
-
Change modification time: The touch command with
-m
option is used to change the modified time.$ touch -m file_name
-
Use timestamp of other file: The touch command with
r
option is used to get timestamp of another file.
$ touch -r file2 file1
The above command will get the timestamp of file1 and will assign it to file2.
- Create file with Specific time: The touch command with '-t' option is used to create a file with specified time.
$ touch -t 1911010000 file_name
-
-
cp: The cp (copy) command is used to copy files and directories from one location to another location of the system.
-
Copy file: The cp command is used to copy a file.
$ cp file1 /home/nirjas/files
In this example file1 will be copied to the files directory which is at "/home/nirjas/files" path.
-
Copy directory: The cp command with -r option is used to copy whole directory with its files recursively.
$ cp -r directory1 /home/nirjas/myfiles
In this example the whole directory1 will be copied to myfiles directory.
-
Copy files inside directory:
$ cp -r dir1/* /home/nirjas/myfiles
In the above example, all the files inside dir1 will be copied myfiles folder. The dir1 will not be copied. Only the files inside it will be copied. You can also specify which files to copy by the following example.
$ cp -r dir1/*.txt /home/nirjas/myfiles
The above example will copy only text files.
-
Copy files without overriding: The cp command with -i will show you interactive prompt to replace if the destination directory already has the file.
$ cp -i myfile /home/nirjas/files
-
-
mv: The mv (copy) command usage is almost similar to the cp command and it is used to move or rename files or folders.
-
Rename files: mv command is also used to rename files in the following way.
$ mv oldname newname
In this example file1 will be copied to the files directory which is at "/home/nirjas/files" path.
-
Move files:
$ mv file.txt /home/nirjas/myfiles
You can also move mutiple files in one command.
$ mv file1 file2 file3 /home/nirjas/myfiles
-
Move Directories:
$ mv dir1 /home/nirjas/myfiles
-
Move files without overriding:
$ mv -i myfile /home/nirjas/files
-
-
cat: The cat command is used to view contents of single or multiple files, concatenate files and redirect output in terminal or files.
$ cat file1 file2
-
file: The file command is used to know the file type.
$ file file1.txt
file1.txt: ASCII text
-
cut: The cut command is used to extract portion of texts from a file.
$ cut -c 4 file.txt
This will show 4th character from each line of that file. You can also modify it in the follwing way to specify your range.
$ cut -c 4-10 file.txt
Here the character range is 4-10. To cut off according to fields, -f option is used.
$ cut -f 2 file.txt
By default it uses TABs as the delimiter. so everything separated by a TAB is considered a field.
-
paste: The paste command is almost similar to cat command. But instead of just showing the text of the file it merges the lines of the file in one line. For example suppose
file1.txt
has the below text.Terminal is awesome
Now apply the following command on the text file.
$ paste -s file1.txt
The output will be 'Terminal is awesome'. By default it is using TABs as the delimiter. But you can set custom delimiter as the following example.
$ paste -d ' ' -s file1.txt
The above example will use spaces the delimiter.
-
head: the head command is used the view the first 10 lines of a text file. It's very useful the see the contents of a huge log files.
$ head /var/log/syslog
You can also define how many lines you want to view by the -n option.
$ head -n 20 /var/log/syslog
-
tail: The tail command is almost similar to the head command. But instead of showing the first 10 lines, it will show you the last 10 lines as default.
$ tail /var/log/syslog
-
less: When browsing the long log files you can use another very useful command which is called
less
. If a file content is very large then less is used to view the file contents as a paged manner.$ less /var/log/syslog
Use the following command to navigate through less:
q - Used to quit out of less and go back to your shell.
Page up, Page down, Up and Down - Navigate using the arrow keys and page keys.
g - Moves to beginning of the text file.
G - Moves to the end of the text file.
/search - You can search for specific text inside the text document. Prefacing the words you want to search with /
h - If you need a little help about how to use less while you’re in less, use help. -
expand and unexpand: expand is used to convert all the TABs in a text file to spaces.
$ expand file1.txt
To convert the spaces back to TABs. Use the unexpand command.
$ unexpand -a file1.txt
-
sort: The sort command is used to sort the lines in a text file.
$ sort file1.txt
To do a reverse sort the -r option is used.
$ sort -r file1.txt
-
tr: the tr (translate) command is used to translate a set of character to another one. The following example will convert all lowercase character to uppercase one.
$ tr a-z A-Z terminal TERMINAL
-
uniq: Just as the name says it it, the uniq (Unique) command is used to remove all the duplicate texts from a file.
$ uniq file1.txt
-
wc: The wc command is used to show count of words, lines and bytes from file respectively.
$ wc file1.txt
To see only the line counts use the following.
$ wc -l file1.txt
Similarly, -w, -c can be used to show only count of words and bytes respectively.
- grep: When it comes to text processing or filtering results of other commands, grep is probably the most used command in such cases. The main syntax is following.
$ grep pattern file
You can also defines the patterns that are case sensitive by -i flag.
$ grep -i pattern file
Grep can also be used with commands as a pipeline.
$ ls /nirjas/home | grep -i file1
The above command will show the file1 from /nirjas/home directory. To search for the lines which doesn't contain the particular keyword use the -v option.
$ ps aux | grep -v grep
The above example will ignore all the grep processes and shows the others.
Grep can also be used with regular expressions.
$ grep "one$" file1.txt
The above command will show the lines which are ending the word one
.
Some other useful regular expressions with grep are as follows.
-
Matching any character: To match any character with a particular word the period (.) is used.
$ grep "..rent" file.txt
The above command will match anything that has two characters and then the string rent
-
Bracket Expressions: You can also specify mutiple words with a particular character by enclosing them with a bracket.
$ grep "swe[ea]t" file.txt
The above command will match this two words sweet
and sweat
To find every line which starts with a capital letter,
```bash
$ grep "^[A-Z]" file.txt
```
Instead of using character ranges POSIX classes can also be used for the above example,
```bash
$ grep "^[[:upper:]]" file.txt
```
To find each line that contains an opening and closing parenthesis, with only letters and single spaces in between, the following expression can be used,
```bash
$ grep "([A-Za-z ]*)" file.txt
```
To escape meta characters, the backslash character () in front of the characters are used.
```bash
$ grep "^[A-Z].*\.$" file.txt
```
The above example will find any line that begins with a capital letter and ends with a period. But it escapes the ending period so that it represents a literal period.
- Extended Regex: To use extended regular expression the -E option is used. To group multiple expressions, enclose them in a paratheses.
$ grep -E "(Color|Colour)" file.txt
The above example will find either Color
or Colour
from the text.
To find any words between chracter range, enclose the range with { }
brackets.
$ grep -E "[[:alpha:]]{5,10}"
The above command will find all words that have between 5-10 characters.
To ignore any lines that are commented or blank use the following grep command,
$ sudo grep -vE '^(#|$)'
It's very useful to find lines in a big configuration file.
Linux has four types of permissions.
r = read
w = write
x = execute
- = no permission
Each file and directory has three types of owners. i. User: Owner of the file who created it. ii. Group: Group of users with the same access permissions to the file or directory. iii. Other: Applies to all other users on the system
Changing Permission:
The chmod
command is used to change file or directory permissions. There are two types of usage of this command.
- Absolute mode: In this mode file permission is represented by an octal value. The numeric representation of the values are the following.
- 4: read permission
- 2: write permission
- 1: execute permission
$ sudo chmod 755 myfile
The above commands means the following. 7 = 4 + 2 + 1, 7 is the user permissions and it has read, write and execute permissions
5 = 4 + 1, the group has read and execute permission
5 = 4 + 1, and all other users have read and execute permissions
-
Symbolic mode: In this mode permissions can be changed for specific owners. The owners are represented in below table.
Owner Description u user/owner g group o other a all
The permissions can be add, remove and assign by using mathematical symbols like as below.
+
: Add permission-
: remove permission=
: Assign permission
$ chmod u+x file
The above command will add execute permission to user. Similarly, You can add or remove permission like below examples.
$ chmod u-x file
Removes execute permission from user.
$ chmod ug+x file
Adds execute permission to both user and group.
$ chmod g-w file
Removes write permission from group.
$ chmod o+r file
Add read permission to others.
Changing Ownership:
1. User ownership: User ownership can be updated by using the chown
command.
$ chown user file
or,
$ chown username:groupname file
2. Group ownership: Group ownership can be modified by using the chgrp
command.
$ chgrp groupname file
- ifconfig: The
ifconfig
command is used to display and configure all network interfaces.
$ ifconfig -a
To create an interface and bring it up use the following command.
$ ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up
- ifup and ifdown:
$ ifup eth0
$ ifdown eth0
ifup is to enable a network device and ifdown will disable it.
-
ip command: the
ip
command is a versatile command and is the replacement for bothifconfig
command androute
command. It can be used for mutiple puposes.-
Showing interfaces: Equavalent to
ifconfig
command.$ ip link show
-
Showing interface statistics:
$ ip -s link show eth0
-
Showing ip address assigned to interfaces:
$ ip address show
or,
$ ip addr show
-
To bring interfaces up and down: Equlavalent to
ifup
andifdown
command$ ip link set eth0 up $ ip link set eth0 down
-
Add an IP address to an interface:
$ ip address add 192.168.0.1/24 dev eth0
-
Showing routing table: Equavalent to
route
command.$ ip route list
-
Add a route: Equavalent to
route add
command.$ ip route add 192.168.0.1/24 via 10.10.12.3
-
Remove a route: Equavalent to
route del
command.$ ip route delete 192.168.0.1/24
-
-
route command: The
route
command is used to command is used to show, add or delete routes.-
Showing routing table: Equavalent to
route
command.$ sudo route -n
-
Add a route: Equavalent to
ip route add
command.$ sudo route add -net 192.168.0.1/24 gw 10.10.12.3
-
Remove a route: Equavalent to
ip route delete
command.$ sudo route del -net 192.168.0.1/24
-
-
ping: the
ping
command is used to check whether a packet can reach to the destination host or not.
$ ping google.com
- whois: The
Whois
command is used to get whois information of a domain.
$ whois google.com
- traceroute: The
traceroute
command is used to see how packets are getting routed.
$ traceroute google.com
- netstat: The
netstat
command is used to show the detailed information about the network. for more info runman netstat
command on terminal.
$ netstat -at
To view the active ports of the device use the following command.
$ netstat -pnltu
- tcpdump: The
tcpdump
is to monitor packet activities. It will not be available by default in the operating system. It can be installed bysudo apt install tcpdump
command.
$ sudo tcpdump -i wlan0
- dig: The
dig
command is used to view the DNS information. It is equavalent tonslookup
command.
$ dig www.google.com
- nslookup: The
nslookup
command can be also useful in case of DNS information. It is equavalent todig
command.
$ nslookup www.google.com
-
nmcli:
nmcli
command allows one to control and modify NetworkManager.-
Overall status of Networkmanager: To check overall status of the networkmanager. use the following command.
$ sudo nmcli general status
-
Viewing all connections: To view all connections of the PC.
$ sudo nmcli connection show
-
Detailed information about a connection: To view detail information about a connection
$ sudo nmcli -p connection show connection-name
-
Adding an interface: To add an interface device type the following command.
$ sudo nmcli connection add ifname <interface-name> type <connection-type> con-name <connection-name> ipv4.addresses <ip with subnet mask> ipv4.gateway <gateway> ipv4.dns <dns> ipv4.method <method>
For example to set e static IP we will use the following command.
$ sudo nmcli connection add ifname enmp0s3 type ethernet con-name enp0s3 ipv4.addresses 192.168.0.108/24 ipv4.gateway 192.168.0.1 ipv4.dns 8.8.8.8 ipv4.method manual
-
Modifying an interface: To modify an interface use the following command.
$ sudo nmcli connection modify enp0s3 ipv4.addresses 192.168.0.110/24
-
Changing wifi on or off: Turning wifi on or off.
$ sudo nmcli radio wifi (on or off )
-
Up or Down a connection: To enable or disable a connection.
$ sudo nmcli connection up connection-name
$ sudo nmcli connection down connection-name
-
Viewing list of wifi connections: To view the list of all nearby wifi connections.
$ sudo nmcli device wifi list
-
Viewing connected WiFi Password: To view the stored password of an active wifi connection.
$ sudo nmcli device wifi show-password
-
Nmcli is a most versatile terminal command and the most useful also. For more usage information use man nmcli
command.
- dhclient: The
dhclient
command is used to obtain a fresh IP from the DHCP server.
$ sudo dhclient
- arp: The
arp
command is used to show the arp cache of your device.
$ arp -a
- hostname:
hostname
command can be usedful to view the device IP.
$ hostname -I
- nmap: The
nmap
command is used to scan open services and ports of a server.
$ nmap -A www.nirzash.me
To view the firewall setting with all information use the following command.
$ nmap -sA www.nirzash.me
- Install package:
$ sudo yum install package_name
- Package description: The info command is used to display brief details about a package.
$ yum info package_name
- Uninstall package: The remove command is used to remove or uninstall package name.
$ sudo yum remove package_name
- Package dependencies: The deplist command is used to display the dependencies of a package.
$ yum deplist package_name
- Search for packages: To search for packgaes use the following command.
$ yum search keyword
- Updating all packages: The following command will check for updates for the installed packages.
$ yum check-update
To download and install the updates run the following command.
$ sudo yum update
- Clean the packages:
$ sudo yum clean packages
To clean the metadata of the packages
$ sudo yum clean metadata
To clean the dbcache of the packages
$ sudo yum clean dbcache
To rebuild the cache again use the following command.
$ sudo yum makecache
- Install package from local file:
It is also possible to install package from local file named package_name.rpm.
$ sudo rpm -i package_name.rpm
- Check if a package is installed or not:
To check if a package is installed or not use the following command.
$ sudo rpm -qa | grep package_name
- Removing installed packages using RPM:
$ sudo rpm -e package_name
- Install package from source code:
$ tar zxvf sourcecode.tar.gz
$ cd sourcecode
$ ./configure
$ make
$ make install