Friday, 15 April 2016

50 Linux commands you must know


50 mostly used commands, you must know them
pwd, ls, cd, mkdir, rm, cp, mv, cat, chmod, chown, vim, tail, less, diff, sort, grep, find, locate, sed, awk, tar, gzip, bzip2, unzip, date, ping, wget, ifconfig, ps, kill, su, passwd, uname, whereis, whatis, service, shutdown, rpm, yum, mysql, top, df, free, mount, crontab, man, ssh, ftp, export, xargs

1. pwd
Print working directory
$ pwd

2. ls
Display filesize in human readable format (e.g. KB, MB etc.,)
$ ls -lh
-rw-r----- 1 shaan team-dev 9.8M Mar 01 13:27 linux-cmd.txt.gz

Order files based on last modified time (in reverse order)
$ ls -ltr

Classification of files with special characters
$ ls -F

3. cd
Use “cd -” to toggle between the last two directories
$ cd -

4. mkdir
Creates a directory "tony" under your home directory
$ mkdir /tony

Create nested directories
If any of these directories exist already, it will not display any error.
If any of these directories doesn’t exist, it will create them.
$ mkdir -p dir1/dir2/dir3/dir4/

5. rm
Get confirmation before removing the file
$ rm -i filename.txt

Print the filename and get confirmation before removing the file
$ rm -i file*

Recursively removes all files and directories under the "dir1" directory. This also removes the "dir1" directory itself.
$ rm -r dir1


6. cp
Copy file1 to file2 preserving the mode, ownership and timestamp
$ cp -p file1 file2

Copy file1 to file2
if file2 exists prompt for confirmation before overwritting it.
$ cp -i file1 file2


7. mv
Rename file1 to file2. if file2 exists prompt for confirmation before overwritting it.
$ mv -i file1 file2
Note: mv -f is just the opposite, which will overwrite file2 without prompting.

mv -v will print what is happening during file rename, which is useful while specifying shell metacharacters in the file name argument.
$ mv -v file1 file2


8. cat
You can view multiple files at the same time.
Prints the content of file1 followed by file2 to standard output
$ cat file1 file2

While displaying the file, prepend the line number to each line of the output
$ cat -n /etc/hello.conf
    1    hello
    2    bonjour
    3    ola
    4    marhaba
    5    namaste
    6    hola
 
9. chmod
Change the permissions for a file or directory
Give full access to user and group (read, write and execute) on a specific file
$ chmod ug+rwx file.txt

Revoke all access for the group (read, write and execute ) on a specific file
$ chmod g-rwx file.txt

Apply the file permissions recursively to all the files in the sub-directories
$ chmod -R ug+rwx file.txt


10. chown
Change the owner and group of a file
To change owner to "shaan" and group to "dev" on a file (Change both owner and group at the same time)
$ chown shaan:dev hello.sh

Use -R to change the ownership recursively
$ chown -R shaan:dev /home/dir1


11. vim
Go to the 143rd line of file
$ vim +143 filename.txt


Go to the first match of the specified$ vim +/search-term filename.txt

Open the file in read only mode
$ vim -R /etc/passwd


12. tail
Print the last 10 lines of a file by default

$ tail filename.txt

Print N number of lines from the file named filename.txt
$ tail -n N filename.txt

View the content of the file in real time using tail -f.
This is useful to view the log files, that keeps growing. The command can be terminated using CTRL-C.

$ tail -f logfile
 
13. less
less is very efficient while viewing huge log files, as it doesn’t need to load the full file while opening.

$ less logfile.log
One you open a file using less command, following two keys are very helpful.
CTRL+F – forward one window
CTRL+B – backward one window



14. diff
Compares two files
Ignore white space while comparing.

# diff -w file1.txt file2.txt
2c2,3
< Shaan Rahul --- > Shaan R2
> Johny


15. sort
Sort a file in ascending order

$ sort names.txt

Sort a file in descending order
$ sort -r names.txt

Sort password file by 3rd field.
$ sort -t: -k 3n /etc/passwd | more


16. grep
Search for a given string in a file (case in-sensitive search)

$ grep -i "the" hello.txt

Print the matched line, along with the 3 lines after it.
$ grep -A 3 -i "example" hello.txt

Search for a given string in all files recursively
$ grep -r "example" *


17. find
Find files using file-name ( case in-sensitve find)

# find -iname "MyProgram.c"

Find all empty files in home directory
# find ~ -empty


18. locate
Quickly search for the location of a specific file (or group of files).
Locate command uses the database created by updatedb.

Locate all files in the system that contains the word crontab in it

$ locate crontab
/etc/anacrontab
/etc/crontab
/usr/bin/crontab
/usr/share/doc/cron/examples/crontab2en.pl.gz
/usr/share/man/man1/crontab.1.gz
/usr/share/man/man5/anacrontab.5.gz
/usr/share/man/man5/crontab.5.gz
/usr/share/vim/vim72/syntax/crontab.vim


19. sed
When you copy a DOS file to Unix, you could find \r\n in the end of each line.
Converts the DOS file format to Unix file format using sed command : 

$sed 's/.$//' filename

Print file content in reverse order
$ sed -n '1!G;h;$p' filename

Add line number for all non-empty-lines in a file
$ sed '/./=' hello.txt | sed 'N; s/\n/ /'


20. awk
Remove duplicate lines using awk

$ awk '!($0 in array) { array[$0]; print }' temp

Print all lines from /etc/passwd that has the same uid and gid
$ awk -F ':' '$3==$4' passwd.txt

Print only specific field from a file
$ awk '{print $2,$5;}' employee.txt


21. tar
Create a new tar archive

$ tar cvf archive-name.tar dirname

Extract from an existing tar archive
$ tar xvf archive-name.tar

View an existing tar archive
$ tar tvf archive-name.tar
 
22. gzip
Create a *.gz compressed file

$ gzip test.txt

Uncompress a *.gz file
$ gzip -d test.txt.gz

Display compression ratio of the compressed file
$ gzip -l *.gz
 compressed        uncompressed  ratio     uncompressed_name
 23709             97975         75.8%     java-rpms.txt

23. bzip2
Create a *.bz2 compressed file

$ bzip2 test.txt

Uncompress a *.bz2 file
$ bzip2 -d test.txt.bz2

24. unzip
Extract a *.zip compressed file

$ unzip test.zip

View the contents of *.zip file (without unzipping it)
$ unzip -l jasper.zip
Archive:  jasper.zip
Length     Date     Time    Name
--------   ----     ----    ----
40995      11-30-98 23:50   META-INF/MANIFEST.MF
32169      08-25-98 21:07   classes_
15964      08-25-98 21:07   classes_names
10542      08-25-98 21:07   classes_ncomp

25. date
Set the system date

# date -s "01/31/2010 23:59:53"

Once you’ve changed the system date, you should syncronize the hardware clock with the system date as follows :
# hwclock –systohc
# hwclock --systohc –utc

26. ping
Ping a remote host by sending only 5 packets

$ ping -c 5 gmail.com

27. wget
Quick and effective method to download software, music, video from internet.

$ wget http://mydownloads.net/hello/scripProd.tar.gz
$ wget http://10.120.34.5/hello/myService?wsdl
$ wget http://www.gmail.com

Download and store it with a different name
$ wget -O myFile.zip http//mydownloads.net/hello/download?id=101

28. ifconfig
View or configure a network interface on the Linux system
View all the interfaces along with status
$ ifconfig -a

Start or stop a specific interface using up and down command as shown below.$ ifconfig eth0 up
$ ifconfig eth0 down

29. ps
Display information about the processes that are running in the system
View current running processes
$ ps -ef | more

View current running processes in a tree structure (H option stands for process hierarchy)$ ps -efH | more

View a specific type of process$ pd -aef | grep java

30. kill
Terminate a process
First get the process id using ps -ef command, then use kill -9 to kill the running Linux process as shown below.
You can also use killall, pkill, xkill to terminate a unix process.
$ ps -ef | grep java
shaan    7243  7222  9 22:43 pts/2    00:00:00 java


31. su
Switch to a different user account
Super user can switch to any other user without entering their password.
$ su - username

Execute a single command from a different account name 
In the following example, shaan can execute the ls command as rahul username. 
Once the command is executed, it will come back to shaan’s account.
[shaan@dev-server]$ su - rahul -c 'ls'
[shaan@dev-server]$

Login to a specified user account and execute the specified shell instead of the default shell.$ su -s 'shellname' username

32. passwd
Change your password from command line using password.
This will prompt for the old password followed by the new password.
$ passwd

Super user can use passwd command to reset others password.
This will not prompt for current password of the user.
# passwd username

Remove password for a specific user
Root user can disable password for a specific user.
Once the password is disabled, the user can login without entering the password.
# passwd -d username

33. uname
Displays important information about the system such as — Kernel name, Host name, Kernel release number, processor type etc.
$ uname -a
Linux shaan-laptop 2.6.32-24-generic #41-Ubuntu SMP Thu May 29 01:12:52 UTC 2010 i686 GNU/Linux

34. whereis
When you want to find out where a specific Unix command exists.
For example, where does ls command exists ?
$ whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

When you want to search an executable from a path other than the whereis default path, you can use -B option and give path as argument to it.
This searches for the executable lsmk in the /tmp directory, and displays it, if it is available.
$ whereis -u -B /tmp -f lsmk
lsmk: /tmp/lsmk

35. whatis
Displays a single line description about a command
$ whatis lsls        (1)  - list directory contents

$ whatis ifconfigifconfig (8)         - configure a network interface

36. service
Instead of calling the scripts located in the /etc/init.d/ directory with their full path, you can use the service command.
Check the status of a service
# service ssh status
Check the status of all the services# service --status-all
Restart a service# service ssh restart
37. shutdown
Shutdown the system and turn the power off immediately
# shutdown -h now
Shutdown the system after 10 minutes.# shutdown -h +10
Reboot the system using shutdown command.
# shutdown -r now
Force the filesystem check during reboot.
# shutdown -Fr now
38. rpm
To install apache
# rpm -ivh httpd-2.2.3-22.0.1.el5.i386.rpm
To upgrade apache# rpm -uvh httpd-2.2.3-22.0.1.el5.i386.rpm
To uninstall/remove apache# rpm -ev httpd
39. yum
To install apache
$ yum install httpd
To upgrade apache
$ yum update httpd
To uninstall/remove apache$ yum remove httpd
40. mysql
To connect to a remote mysql database
This will prompt for a password.
$ mysql -u root -p -h 192.168.1.2
To connect to a local mysql database.
$ mysql -u root -p
If you want to specify the mysql root password in the command line itself, enter it immediately after -p (without any space).$ mysql -u root -padminHere, root is the username and admin is passowrd.

41. top
Displays the top processes in the system (by default sorted by CPU usage).
$ top 

To sort top output by any column, Press O (upper-case O), which will display all the possible columns that you can sort.
Current Sort Field:  P  for window 1:Def
Select sort field via field letter, type any other key to return
  a: PID        = Process Id    v: nDRT       = Dirty Pages count
  d: UID        = User Id       y: WCHAN      = Sleeping in Function
  e: USER       = User Name     z: Flags      = Task Flags
  ........


To displays only the processes that belong to a particular user use -u option. $ top -u mysql
42. df
Displays the file system disk space usage. (By default df -k displays output in bytes)
$ df -kFilesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             29530400   3233104  24797232  12% /
/dev/sda2            120367992  50171596  64082060  44% /home

df -h displays output in human readable form. (size will be displayed in GB’s)
shaan@shaan-laptop:~$ df -hFilesystem            Size  Used Avail Use% Mounted on
/dev/sda1              29G  3.1G   24G  12% /
/dev/sda2             115G   48G   62G  44% /home


Use -T option to display what type of file system
shaan@shaan-laptop:~$ df -TFilesystem    Type   1K-blocks      Used Available Use% Mounted on
/dev/sda1     ext4    29530400   3233120  24797216  12% /
/dev/sda2     ext4   120367992  50171596  64082060  44% /home

43. free
Display the free, used, swap memory available in the system. (Typical output is displayed in bytes)
$ free        total      used       free     shared    buffers   cached
Mem:    3566408    1580220    1986188  0         203988    902960
-/+ buffers/cache:     473272    3093136
Swap:      4000176          0    4000176
If you want to quickly check how many GB of RAM your system has use the -g option, -b option displays in bytes, -k in kilo bytes, -m in mega bytes.$ free -g         total     used       free     shared    buffers     cached
Mem:         3        1          1          0          0          0
-/+ buffers/cache:          0          2
Swap:            3          0          3
If you want to see a total memory ( including the swap), use the -t switch, which will display a total line.shaan@shaan-laptop:~$ free -t
          total    used       free     shared    buffers     cached
Mem:      3566408  1592148    1974260       0     204260     912556
-/+ buffers/cache:     475332    3091076
Swap:      4000176          0    4000176
Total:     7566584    1592148    5974436

44. mount
Mount a file system. You should first create a directory and mount it.
# mkdir /u01
# mount /dev/sdb1 /u01

You can also add this to the fstab for automatic mounting. Means, Anytime system is restarted, the filesystem will be mounted./dev/sdb1 /u01 ext2 defaults 0 2
45. crontab
View crontab entry for a specific user
# crontab -u shaan -l
Schedule a cron job every 10 minutes.*/10 * * * * /home/shaan/check-disk-space
46. man
Display the man page of a specific command.
$ man crontab
When a man page for a command is located under more than one section, you can view the man page for that command from a specific section.
Following 8 sections are available in the man page : 
  • General commands
  • System calls
  • C library functions
  • Special files (usually devices, those found in /dev) and drivers
  • File formats and conventions
  • Games and screensavers
  • Miscellaneous
  • System administration commands and daemons

$ man SECTION-NUMBER commandname
For example, when you do whatis crontab, you’ll notice that crontab has two man pages (section 1 and section 5).

$ whatis crontab
crontab (1)      - maintain crontab files for individual users (V3)
crontab (5)      - tables for driving cron

To view section 5 of crontab man page, do the following :
$ man 5 crontab

47. ssh
Login to remote host
ssh -l shaan remotehost.hello.com

Debug ssh client
ssh -v -l shaan remotehost.hello.com

Display ssh client version
$ ssh -V
OpenSSH_3.9p1, OpenSSL 0.9.7a Mar 12 2001

48. ftp
Both ftp and secure ftp (sftp) has similar commands.
To connect to a remote server and download multiple files :
$ ftp IP/hostname
ftp> mget *.html

To view the file names located on the remote server before downloading :
ftp> mls *.html -
/ftptest/features.html
/ftptest/index.html
/ftptest/othertools.html
/ftptest/samplereport.html
/ftptest/usage.html

49. export
To view mysql related environment variables.
$ export | grep MYSQL
declare -x MYSQL_BASE="/opt/mysql"
declare -x MYSQL_HOME="/opt/mysql/5.2.2"

To export an environment variable
$ export MYSQL_HOME=/opt/mysql/5.2.2

50. xargs
Copy all images to external hard-drive
# ls *.jpg | xargs -n1 -i cp {} /external-hard-drive/directory

Search all jpg images in the system and archive it
# find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz

Download all the URLs mentioned in the url-list.txt file
# cat url-list.txt | xargs wget –c

No comments:

Post a Comment

Note: only a member of this blog may post a comment.