Linux Commands

01. adduser/addgroup

The adduser and addgroup commands lets you add a new user and group to a system, respectively. Here's an example for adduser:

$ sudo adduser testuser
Adding user `testuser' ...
Adding new group `testuser' (1003) ...
Adding new user `testuser' (1003) with group `testuser' ...
Creating home directory `/home/testuser' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
 

02. arch

The arch command is used to print the machine's architecture. For example:


$ arch
i686


03. cal/ncal

The cal and ncal commands display a calendar in the output.
For example:

$ cal
March 2017
Su Mo Tu We Th Fr Sa
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31


$ ncal
March 2017
Su 5 12 19 26
Mo 6 13 20 27
Tu 7 14 21 28
We 1 8 15 22 29
Th 2 9 16 23 30
Fr 3 10 17 24 31
Sa 4 11 18 25


04. cal/ncal

The cal and ncal commands display a calendar in the output.
For example:

$ cal
March 2017
Su Mo Tu We Th Fr Sa
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31


$ ncal
March 2017
Su 5 12 19 26
Mo 6 13 20 27
Tu 7 14 21 28
We 1 8 15 22 29
Th 2 9 16 23 30
Fr 3 10 17 24 31
Sa 4 11 18 25


05. cat

The cat command allows you to concatenate files, or data provided on standard input, and print it on the standard output. In layman terms, the command prints the information provided to it, whether through stdin or in the form a file. For example:

$ cat test.txt
Hello...how are you?


06. cd

The cd command is used to change user's present working directory.
For example:

$ cd /home/himanshu/

07. chgrp

The chgrp command allows you to change the group ownership of a file. The command expects new group name as its first argument and the name of file (whose group is being changed) as second argument.
For example:

$ chgrp howtoforge test.txt

08. chmod

The chmod command lets you change access permissions for a file. For example, if you have a binary file (say helloWorld), and you want to make it executable, you can run the following command:

$ chmod +x helloWorld


09. chown

The chown command allows you to change the ownership and group of a file. For example, to change the owner of a file test.txt to root, as well as set its group as root, execute the following command:

chown root:root test.txt


10. cksum

The cksum command prints the CRC checksum and byte count for the input file.
For example:
 
$ cksum test.txt
3741370333 20 test.txt


11. clear

The clear command is used to clear the terminal screen.
For example:
 
$ clear


12. cmp

The cmp command is used to perform byte-by-byte comparison of two files.

For example:

$ cmp file1 file2
file1 file2 differ: byte 1, line 1


13. comm

The comm command is used to compare two sorted files line-by-line. For example, if 'file1' contains numbers 1-5 and 'file2' contains number 4-8, here's what the 'comm' command produces in this case:


$ comm file1 file2
1
2
3
                     4
                     5
         6
         7
         8


14. cp

The cp command is used for copying files and directories.

$ cp test.txt /home//himanshu/Desktop/

15. csplit

The csplit command lets you split a file into sections determined by context lines. For example, to split a file into two where the first part contains 'n-1' lines and the second contains the rest, use the following command:

$ csplit file1 [n]

The two parts are saved as files with names 'xx00' and 'xx01', respectively.

16. date

The date command can be used to print (or even set) the system date and time. For example:

$ date
Tue Feb 28 17:14:57 IST 2017

17. dd

The dd command copies a file, converting and formatting according to the operands. For example, the following command creates an image of /dev/sda partition.

dd if=/dev/sda of=/tmp/dev-sda-part.img

18. df

The df command displays the file system disk space usage in output. For example:

$ df /dev/sda1
Filesystem 1K-blocks Used     Available Use% Mounted on
/dev/sda1  74985616  48138832 23014620  68%     /

19. diff

The diff command lets you compare two files line by line. For example:

$ diff file1 file2

20. diff3

The diff3 command, as the name suggests, allows you to compare three files line by line.

$ diff3 file1 file2 file3

21. dir

The dir command lists directory contents. For example:

$ dir
test1 test2 test.7z test.zip

22. dirname

The dirname command strips last component from a file name/path. In layman's terms, you can think of it as a tool that, for example, removes file name from the file's absolute path.

$ dirname /home/himanshu/file1
/home/himanshu

23. dmidecode

The dmidecode command prints a system's DMI (aka SMBIOS) table contents in a human-readable format.

$ sudo dmidecode
# dmidecode 2.12
SMBIOS 2.6 present.
50 structures occupying 2056 bytes.
Table at 0x000FCCA0.
Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
Vendor: American Megatrends Inc.
Version: 080015
Release Date: 08/22/2011
...
...
...

24. du

The du command displays disk usage of files present in a directory as well as its sub-directories. For example:

$ du /home/himanshu/Desktop/
92 /home/himanshu/Desktop/Downloads/meld/meld/ui
88 /home/himanshu/Desktop/Downloads/meld/meld/vc
56 /home/himanshu/Desktop/Downloads/meld/meld/matchers
12 /home/himanshu/Desktop/Downloads/meld/meld/__pycache__
688 /home/himanshu/Desktop/Downloads/meld/meld
16 /home/himanshu/Desktop/Downloads/meld/bin
328 /home/himanshu/Desktop/Downloads/meld/data/ui
52 /home/himanshu/Desktop/Downloads/meld/data/icons/svg

25: echo

The echo command displays whatever input text is given to it.

$ echo hello hi
hello hi

26. ed

ed is a line-oriented text editor.

$ ed

27. eject

The eject command lets you eject removable media (typically, a CD ROM or floppy disk)

$ eject

28. env

The env command not only displays the current environment, but also lets you edit it.

$ env

29. exit

The exit command causes the shell to exit:

$ exit

30. expand

The expand command converts tabs present in the input file(s) into spaces, and writes the file contents to standard output.

$ expand file1

31. expr

The expr command evaluates expressions. For example:

$ expr 1 + 2
3

32. factor

The factor command prints the prime factors of the input number.

$ factor 135
135: 3 3 3 5

33. fgrep

The fgrep command is equivalent to the grep command when executed with the -F command line option. The tool is also known as fixed or fast grep as it doesn't treat regular expression metacharacters as special, processing the information as simple string instead.

For example, if you want to search for dot (.) in a file, and don't want grep to interpret it as a wildcard character, use fgrep in the following way:

$ fgrep "." [file-name]

34. find

The find command lets you search for files in a directory as well as its sub-directories.

$ find test*
test
test1
test2
test.7z
test.c
test.txt

35. fmt:

fmt is a simple optimal text formatter. It reformats each paragraph in the file passed to it, and writes the file contents to standard output.

$ fmt file1

36. fold

The fold command wraps each input line to fit in specified width.

$ fold -w 10
Hi my name is himanshu Arora

Hi my name
is himans
hu Arora

37. free

The free command displays the amount of free and used memory in the system.

$ free
       total           used  free   shared buffers cached
Mem:   1800032       1355288 444744 79440   9068   216236
-/+ buffers/cache: 1129984 670048
Swap:  1832956      995076  837880

38. grep

The grep command searches for a specified pattern in a file (or files) and displays in output lines containing that pattern.

$ grep Hello test.txt
Hello...how are you?

39. groups

The groups command displays the name of groups a user is part of.

$ groups himanshu

40. gzip
The gzip command compresses the input file, replacing the file itself with one having a .gz extension.

$ gzip file1

41. gunzip

Files compressed with gzip command can be restored to their original form using the gunzip command.

$ gunzip file1.gz

42. head

The head command displays the first 10 lines of the file to standard output

$ head CHANGELOG.txt
BEEBEEP (Secure Lan Messanger)
BeeBEEP
2.0.4
- Some GUI improvements (new icons, file sharing tree load faster)
- Always Beep on new message arrived (option)
- Favorite users (right click on user and enable star button) is on top of the list
- improved group usability
- Offline users can be removed from list (right click on an offline user in list and then remove)
- Clear all files shared (option)
- Load minimized at startup (option)

43. hostname

The hostname command not only displays the system's host name, but lets them set it as well.

$ hostname
himanshu-desktop

44. id

The id command prints user and group information for the current user or specified username.

$ id himanshu
uid=1000(himanshu) gid=1000(himanshu) groups=1000(himanshu),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),124(sambashare)

45. join

The join command allows you to join lines of two files on a common field (default is first).

join [OPTION]... FILE1 FILE2

46. kill

The kill command, as the name suggests, helps user kill a process by sending the TERM signal to it.

$ kill [process-id]

47. killall

The killall command lets you kill a process by name. Unlike kill - which requires ID of the process to be killed - killall just requires the name of the process.

$ killall nautilus

48. last

The last command shows listing of last logged in users.

$ last
himanshu pts/11 :0 Thu Mar 2 09:46 still logged in
himanshu pts/1 :0 Thu Mar 2 09:46 still logged in
himanshu :0 :0 Thu Mar 2 09:42 still logged in
reboot system boot 4.4.0-62-generic Thu Mar 2 09:41 - 10:36 (00:54)
himanshu pts/14 :0 Wed Mar 1 15:17 - 15:52 (00:35)
himanshu pts/13 :0 Wed Mar 1 14:40 - down (08:06)

49. ldd

The ldd command displays in output dependencies of a shared library.

$ ldd /lib/i386-linux-gnu/libcrypt-2.19.so
linux-gate.so.1 => (0xb77df000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb75da000)
/lib/ld-linux.so.2 (0x80088000)

50. ln

The ln command is used for creating link between files. For example, the following command would create a link named 'lnk' to a file with name 'test.txt':

$ ln test.txt lnk

51. locate

The locate command helps user find a file by name.

$ locate [file-name]

52. logname

The logname command prints the user-name of the current user.

$ logname
himanshu

53. ls

The ls command lists contents of a directory in output.

$ ls progress
capture.png hlist.o progress progress.h sizes.c
hlist.c LICENSE progress.1 progress.o sizes.h
hlist.h Makefile progress.c README.md sizes.o

54. lshw

The lshw command extracts and displays detailed information on the hardware configuration of the machine.

$ sudo lshw
[sudo] password for himanshu:
himanshu-desktop
description: Desktop Computer
product: To Be Filled By O.E.M. (To Be Filled By O.E.M.)
vendor: To Be Filled By O.E.M.
version: To Be Filled By O.E.M.
serial: To Be Filled By O.E.M.
width: 32 bits
capabilities: smbios-2.6 dmi-2.6 smp-1.4 smp
...
...
..

55. lscpu

The lscpu command displays in output system's CPU architecture information (such as number of CPUs, threads, cores, sockets, and more).

$ lscpu
Architecture: i686
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 1
On-line CPU(s) list: 0
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 1
Vendor ID: AuthenticAMD
CPU family: 16
Model: 6
Stepping: 3
CPU MHz: 2800.234
BogoMIPS: 5600.46
Virtualization: AMD-V
L1d cache: 64K
L1i cache: 64K
L2 cache: 1024K

56. lsof

The lsof command displays information (on stdout) related to files opened by processes. Files can be of any type, including regular files, directories, block special files, character special files, executing text reference, libraries, and stream/network files.

lsof


57. man

man lets you access reference manual for commands, programs/utilities, as well as functions.

$ man ls

58. md5sum

The md5sum command lets you print  or check MD5 (128-bit) checksums.

$ md5sum test.txt
ac34b1f34803a6691ff8b732bb97fbba test.txt

59. mkdir

The mkdir command lets you create directories.

$ mkdir [dir-name]

60. mkfifo

The mkfifo command is used to create named pipes.

$ mkfifo [pipe-name]

61. more

more is basically a filter for paging through text one screenful at a time.

$ cat [large-file] | more

62. mv
The mv command lets you either move a file from one directory to another, or rename it.

$ mv test.txt /home/himanshu/Desktop/

63. nano

The nano command in Linux launches the 'nano' editor. The editor is designed to emulate the features and user-friendliness of the UW Pico text editor.

$ nano

or

$ nano [file-name]

More about the Nano Editor:

    Nano editor usage and examples.

Nice

The nice command lets you run a program with modified scheduling priority.

$ nice -n[niceness-value] [program]

$ nice -n15 vim

64. nl

The nl command writes contents of a file to output, and prepends each line with line number.

$ nl file1
1 Hi
2 How are you
3 Bye

65. nm


The nm command is used to display symbols from object files.

$ nm test
0804a020 B __bss_start
0804841d T compare
0804a020 b completed.6591
0804a018 D __data_start
0804a018 W data_start
08048360 t deregister_tm_clones
080483d0 t __do_global_dtors_aux
08049f0c t __do_global_dtors_aux_fini_array_entry
0804a01c D __dso_handle
08049f14 d _DYNAMIC
0804a020 D _edata
0804a024 B _end
080484e4 T _fini
080484f8 R _fp_hw
080483f0 t frame_dummy
...
...
...

66. nproc

The nproc command displays the number of processing units available to the current process.

$ nproc
1

67. od

The od command lets you dump files in octal as well as some other formats.

$ od /bin/ls
0000000 042577 043114 000401 000001 000000 000000 000000 000000
0000020 000002 000003 000001 000000 140101 004004 000064 000000
0000040 122104 000001 000000 000000 000064 000040 000011 000050
0000060 000034 000033 000006 000000 000064 000000 100064 004004
0000100 100064 004004 000440 000000 000440 000000 000005 000000
0000120 000004 000000 000003 000000 000524 000000 100524 004004
...
...
...

68. passwd

The passwd command is used for changing passwords for user accounts.

$ passwd himanshu
Changing password for himanshu.
(current) UNIX password:

69. paste

The paste command lets you merge lines of files. For example, if 'file1' contains the following lines:

$ cat file1
Hi
My name is
Himanshu
Arora
I
Am
a
Linux researcher
and tutorial
writer

Then the following 'paste' command will join all the lines of the file:

$ paste -s file1
Hi My name is Himanshu Arora I Am a Linux researcher and tutorial writer

70. pidof

The pidof command gives you the process ID of a running program/process.

$ pidof nautilus
2714

71. ping

The ping command is used to check whether or not a system is up and responding. It sends ICMP ECHO_REQUEST to network hosts.

$ ping howtoforge.com
PING howtoforge.com (104.24.0.68) 56(84) bytes of data.
64 bytes from 104.24.0.68: icmp_seq=1 ttl=58 time=47.3 ms
64 bytes from 104.24.0.68: icmp_seq=2 ttl=58 time=51.9 ms
64 bytes from 104.24.0.68: icmp_seq=3 ttl=58 time=57.4 ms

72. ps

The ps command displays information (in the form of a snapshot) about the currently active processes.

$ ps
PID TTY TIME CMD
4537 pts/1 00:00:00 bash
20592 pts/1 00:00:00 ps

73. pstree

The pstree command produces information about running processes in the form of a tree.

$ pstree
init???ModemManager???2*[{ModemManager}]
??NetworkManager???dhclient
? ??dnsmasq
? ??3*[{NetworkManager}]
??accounts-daemon???2*[{accounts-daemon}]
??acpid
??atop

74. pwd

The pwd command displays the name of current/working directory.

$ pwd
/home/himanshu

75. rm

The rm command lets you remove files and/or directories.

$ rm [file-name]

76. rmdir

The rmdir command allows you delete empty directories.

$ rmdir [dir-name]

77. scp
The scp command lets you securely copy files between systems on a network.

$ scp [name-and-path-of-file-to-transfer] [user]@[host]:[dest-path]

78. sdiff

The sdiff command lets you perform a side-by-side merge of differences between two files.

$ sdiff file1 file2

79. sed

sed is basically a  stream editor that allows users to perform basic text transformations on an input stream (a file or input from a pipeline).

$ echo "Welcome to Howtoforge" | sed -e 's/Howtoforge/HowtoForge/g'
Welcome to HowtoForge

80. seq

The seq commands prints numbers from FIRST to LAST, in steps of INCREMENT. For example, if FIRST is 1, LAST is 10, and INCREMENT is 2, then here's the output this command produces:

$ seq 1 2 10
1
3
5
7
9

81. sha1sum

The sha1sum command is used to print or check SHA1 (160-bit) checksums.

$ sha1sum test.txt
955e48dfc9256866b3e5138fcea5ea0406105e68 test.txt

82. shutdown

The shutdown command lets user shut the system in a safe way.

$ shutdown

83. size

The size command lists the section sizes as well as the total size for an object or archive file.

$ size test
text data bss dec hex filename
1204 280 4 1488 5d0 test

84. sleep

The sleep command lets user specify delay for a specified amount of time. You can use it to delay an operation like:

$ sleep 10; shutdown

85. sort

The sort command lets you sort lines of text files. For example, if 'file2' contains the following names:

$ cat file2
zeus
kyan
sam
adam

Then running the sort command produces the following output:

$ sort file2
adam
kyan
sam
zeus

86. split

The split command, as the name suggests, splits a file into fixed-size pieces. By default, files with name like xaa, xab, and xac are produced.

$ split [file-name]

87. ssh

ssh is basically OpenSSH SSH client. It provides secure encrypted communication between two untrusted hosts over an insecure network.

$ ssh [user-name]@[remote-server]

88. stat

The stat command displays status related to a file or a file-system.

$ stat test.txt
File: ‘test.txt’
Size: 20 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 284762 Links: 2
Access: (0664/-rw-rw-r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-03-03 12:41:27.791206947 +0530
Modify: 2017-02-28 16:05:15.952472926 +0530
Change: 2017-03-02 11:10:00.028548636 +0530
Birth: -

89. strings

The strings command displays in output printable character sequences that are at least 4 characters long. It is used to search for printable text (strings) in binary files. For example, when a binary executable 'test' was passed as an argument to this command, following output was produced:

$ strings test
/lib/ld-linux.so.2
libc.so.6
_IO_stdin_used
puts
__libc_start_main
__gmon_start__
GLIBC_2.0
PTRh
QVhI
[^_]
EQUAL
;*2$"
GCC: (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
....
....
....

90. su

The su command lets you change user-identity. Mostly, this command is used to become root or superuser.

$ su [user-name]

91. sudo

The sudo command lets a permitted user run a command as another user (usually root or superuser).

$ sudo [command]

92. sum

The sum command prints checksum and block counts for each input file.

$ sum readme.txt
45252 5

93. tac
The tac command prints input files in reverse. Functionality-wise, it does the reverse of what the cat command does.

$ cat file2
zeus
kyan
sam
adam

$ tac file2
adam
sam
kyan
zeus

94. tail

The tail command displays in output the last 10 lines of a file.

$ tail [file-name]

95. talk

The talk command lets users talk with each other.

$ talk [user-name]

96. tar

tar is an archiving utility that lets you create as well as extract archive files. For example, to create archive.tar from files 'foo' and 'bar', use the following command:

$ tar -cf archive.tar foo bar

97. tee

The tee command reads from standard input and write to standard output as well as files.

$ uname | tee file2
Linux

$ cat file2
Linux

98. test

The test command checks file types and compare values. For example, you can use it in the following way:

$ test 7 -gt 5 && echo "true"
true

99. time

The time command is used to summarize system resource usage of a program. For example:

$ time ping google.com
PING google.com (216.58.220.206) 56(84) bytes of data.
64 bytes from del01s08-in-f14.1e100.net (216.58.220.206): icmp_seq=1 ttl=52 time=44.2 ms
^C
--- google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 44.288/44.288/44.288/0.000 ms
real 0m0.676s
user 0m0.000s
sys 0m0.000s

100. top

The top command gives  a dynamic real-time view of a running system (in terms of its processes). For example:

$ top

101. touch

The touch command lets you change file timestamps (the access and modification times). When name of a non-existent file is passed as an argument, that file gets created.

$ touch [file-name]

102. tr

The tr command can be used to translate/squeeze/delete characters. For example, here's how you can use it to convert lowercase characters to uppercase:

$ echo 'howtoforge' | tr "[:lower:]" "[:upper:]"
HOWTOFORGE

103. tty

The tty command prints the filename of the terminal connected to standard input.

$ tty
/dev/pts/10

104. uname

The uname command prints certain system information.

$ uname -a
Linux himanshu-desktop 4.4.0-62-generic #83~14.04.1-Ubuntu SMP Wed Jan 18 18:10:26 UTC 2017 i686 athlon i686 GNU/Linux

105. uniq

The Uniq command is used to report or omit repeated lines. For example, if 'file2' contains the following data:

$ cat file2
Welcome to lifeisrouting
Welcome to lifeisrouting
A Linux tutorial blog site
Thanks

Then you can use the uniq command to omit the repeated line.

$ uniq file2
Welcome to lifeisrouting
A Linux tutorial blog site
Thanks

106. unexpand

The unexpand command converts spaces present in the input file(s) into tabs, and writes the file contents to standard output.

$ unexpand file1

107. uptime

The uptime command tells how long the system has been running.

$ uptime
15:59:59 up 6:20, 4 users, load average: 0.81, 0.92, 0.82

108. users

The users command displays in output the usernames of users currently logged in to the current host.

$ users
himanshu himanshu himanshu himanshu

109. vdir

The vdir command lists information about contents of a directory (current directory by default).

$ vdir
total 1088
-rw-rw-r-- 1 himanshu himanshu 4850 May 20 2015 test_backup.pdf
-rw-rw-r-- 1 himanshu himanshu 2082 May 28 2015 test-filled.pdf
-rw-rw-r-- 1 himanshu himanshu 7101 May 28 2015 test.pdf

110. vim

vim is basically a text/programming editor. The name 'vim' stands for Vi IMproved as the editor is upwards compatible to the Vi editor.

$ vim [file-name]

111. w
The w command displays information about the users currently on the machine, and their processes.

$ w
16:18:07 up 6:39, 4 users, load average: 0.07, 0.32, 0.53
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
himanshu :0 :0 09:39 ?xdm? 1:08m 0.25s init --user
himanshu pts/0 :0 09:41 6:36m 0.84s 7.84s gnome-terminal
himanshu pts/10 :0 14:51 0.00s 0.16s 0.00s w
himanshu pts/11 :0 15:41 35:19 0.05s 0.05s bash

112. wall

The wall command lets you write and send a message to other users that are currently logged in.

$ wall [your-message]

113. watch

The watch command can be used to monitor a program's output. It runs the program repeatedly, displaying its output and errors. For example:

$ watch date

114. wc

The wc command prints newline, word, and byte counts for a file.

$ wc test.txt
0 3 20 test.txt

115. wget

The wget command line tool in Linux lets you perform a non-interactive download of files from the Web.

Here's how you can use it:

wget [URL]

116. whatis

The whatis command displays single-line manual page descriptions.

$ whatis mkdir
mkdir (1) - make directories
mkdir (2) - create a directory
mkdir (1posix) - make directories

117. which

The which command basically lets you locate a command - the file and the path of the file that gets executed. For example:

$ which date
/bin/date

118. who

The who command shows who is logged on.

$ who
himanshu :0 2017-03-03 09:39 (:0)
himanshu pts/0 2017-03-03 09:41 (:0)
himanshu pts/10 2017-03-03 14:51 (:0)
himanshu pts/11 2017-03-03 15:41 (:0)

119. whereis

The whereis command shows in output locations of the binary, source, and manual page files for a command.

$ whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1posix.gz /usr/share/man/man1/ls.1.gz

120. whoami

The whoami command prints effective userid of the current user.

$ whoami
himanshu

121. xargs

The xargs command builds and executes command lines from standard input. In layman's terms, it reads items from stdin and executes a command passed to it as an argument. For example, here's how you can use xargs to find the word "Linux" in the files whose names are passed to it as input.

$ xargs grep "Linux"
file1
file2
file3
file1:Linux researcher
file2:A Linux tutorial website
file3:Linux is opensource

122. yes

The Yes command outputs a string repeatedly until killed.

$ yes [string]

END