xiaoxiao2021-03-26  16

    You might have found the first article very much useful, this article is an extension of the 20 Useful Commands for Linux Newbies. The first article was intended for newbies and this article is for Middle-Level-User and Advanced Users. Here you will find how to customise search, know the processes running guide to kill them, how to make your Linux terminal productive is an important aspect and how to compile cc++java programs in nix.

    20 Linux Advanced & Expert Commands

    21. Command: Find

    Search for files in the given directory, hierarchically starting at the parent directory and moving to sub-directories.

    root@tecmint:~# find -name *.sh ./Desktop/ ./Desktop/ ./Desktop/ ./Binary/firefox/ ./Downloads/kdewebdev-3.5.8/quanta/scripts/ ./Downloads/kdewebdev-3.5.8/admin/ ./Downloads/kdewebdev-3.5.8/admin/ ./Downloads/kdewebdev-3.5.8/admin/ ./Downloads/

    Note: The `-name‘ option makes the search case sensitive. You can use the `-iname‘ option to find something regardless of case. (* is a wildcard and searches all the file having extension ‘.sh‘ you can use filename or a part of file name to customise the output).

    root@tecmint:~# find -iname *.SH ( find -iname *.Sh / find -iname *.sH) ./Desktop/ ./Desktop/ ./Desktop/ ./Binary/firefox/ ./Downloads/kdewebdev-3.5.8/quanta/scripts/ ./Downloads/kdewebdev-3.5.8/admin/ ./Downloads/kdewebdev-3.5.8/admin/ ./Downloads/kdewebdev-3.5.8/admin/ ./Downloads/ root@tecmint:~# find -name *.tar.gz /var/www/modules/update/tests/aaa_update_test.tar.gz ./var/cache/flashplugin-nonfree/install_flash_player_11_linux.i386.tar.gz ./home/server/Downloads/drupal-7.22.tar.gz ./home/server/Downloads/smtp-7.x-1.0.tar.gz ./home/server/Downloads/noreqnewpass-7.x-1.2.tar.gz ./usr/share/gettext/archive.git.tar.gz ./usr/share/doc/apg/php.tar.gz ./usr/share/doc/festival/examples/speech_pm_1.0.tar.gz ./usr/share/doc/argyll/examples/spyder2.tar.gz ./usr/share/usb_modeswitch/configPack.tar.gz

    Note: The above command searches for all the file having extension ‘tar.gz‘ in root directory and all the sub-directories including mounted devices.

    Read more examples of Linux ‘find‘ command at 35 Find Command Examples in Linux

    22. Command: grep

    The ‘grep‘ command searches the given file for lines containing a match to the given strings or words. Search ‘/etc/passwd‘ for ‘tecmint‘ user.

    root@tecmint:~# grep tecmint /etc/passwd tecmint:x:1000:1000:Tecmint,,,:/home/tecmint:/bin/bash

    Ignore word case and all other combination with ‘-i‘ option.

    root@tecmint:~# grep -i TECMINT /etc/passwd tecmint:x:1000:1000:Tecmint,,,:/home/tecmint:/bin/bash

    Search recursively (-ri.e. read all files under each directory for a string ““.

    root@tecmint:~# grep -r "" /etc/ /etc/vlc/lua/http/.hosts: /etc/speech-dispatcher/modules/ivona.conf:#IvonaServerHost "" /etc/mysql/my.cnf:bind-address = /etc/apache2/mods-available/status.conf: Allow from ::1 /etc/apache2/mods-available/ldap.conf: Allow from ::1 /etc/apache2/mods-available/info.conf: Allow from ::1 /etc/apache2/mods-available/proxy_balancer.conf:# Allow from ::1 /etc/security/access.conf:#+ : root : /etc/dhcp/dhclient.conf:#prepend domain-name-servers; /etc/dhcp/dhclient.conf:# option domain-name-servers; /etc/init/network-interface.conf: ifconfig lo up || true /etc/java-6-openjdk/ localhost & /etc/java-6-openjdk/ http.nonProxyHosts=localhost| /etc/java-6-openjdk/ localhost & /etc/java-6-openjdk/ ftp.nonProxyHosts=localhost| /etc/hosts: localhost

    Note: You can use these following options along with grep.

    -w for word (egrep -w ‘word1|word2‘ /path/to/file). -c for count (i.e., total number of times the pattern matched) (grep -c ‘word‘ /path/to/file). –color for coloured output (grep –color server /etc/passwd).

    23. Command: man

    The ‘man‘ is the system’s manual pager. Man provides online documentation for all the possible options with a command and its usages. Almost all the command comes with their corresponding manual pages. For example,

    root@tecmint:~# man man MAN(1) Manual pager utils MAN(1) NAME man - an interface to the on-line reference manuals SYNOPSIS man [-C file] [-d] [-D] [--warnings[=warnings]] [-R encoding] [-L locale] [-m system[,...]] [-M path] [-S list] [-e extension] [-i|-I] [--regex|--wildcard] [--names-only] [-a] [-u] [--no-subpages] [-P pager] [-r prompt] [-7] [-E encoding] [--no-hyphenation] [--no-justification] [-p string] [-t] [-T[device]] [-H[browser]] [-X[dpi]] [-Z] [[section] page ...] ... man -k [apropos options] regexp ... man -K [-w|-W] [-S list] [-i|-I] [--regex] [section] term ... man -f [whatis options] page ... man -l [-C file] [-d] [-D] [--warnings[=warnings]] [-R encoding] [-L locale] [-P pager] [-r prompt] [-7] [-E encoding] [-p string] [-t] [-T[device]] [-H[browser]] [-X[dpi]] [-Z] file ... man -w|-W [-C file] [-d] [-D] page ... man -c [-C file] [-d] [-D] page ... man [-hV]

    Manual page for man page itself, similarly ‘man cat‘ (Manual page for cat command) and ‘man ls‘ (Manual page for command ls).

    Note: man page is intended for command reference and learning.

    24. Command: ps

    ps (Process) gives the status of running processes with a unique Id called PID.

    root@tecmint:~# ps PID TTY TIME CMD 4170 pts/1 00:00:00 bash 9628 pts/1 00:00:00 ps

    To list status of all the processes along with process id and PID, use option ‘-A‘.

    root@tecmint:~# ps -A PID TTY TIME CMD 1 ? 00:00:01 init 2 ? 00:00:00 kthreadd 3 ? 00:00:01 ksoftirqd/0 5 ? 00:00:00 kworker/0:0H 7 ? 00:00:00 kworker/u:0H 8 ? 00:00:00 migration/0 9 ? 00:00:00 rcu_bh ....

    Note: This command is very useful when you want to know which processes are running or may need PID sometimes, for process to be killed. You can use it with ‘grep‘ command to find customised output. For example,

    root@tecmint:~# ps -A | grep -i ssh 1500 ? 00:09:58 sshd 4317 ? 00:00:00 sshd

    Here ‘ps‘ is pipelined with ‘grep‘ command to find customised and relevant output of our need.

    25. Command: kill

    OK, you might have understood what this command is for, from the name of the command. This command is used to kill process which is not relevant now or is not responding. It is very useful command, rather a very very useful command. You might be familiar with frequent windows restarting because of the fact that most of the time a running process can’t be killed, and if killed it needs windows to get restart so that changes could be taken into effect but in the world of Linux, there is no such things. Here you can kill a process and start it without restarting the whole system.

    You need a process’s pid (ps) to kill it.

    Let suppose you want to kill program ‘apache2‘ that might not be responding. Run ‘ps -A‘ along with grep command.

    root@tecmint:~# ps -A | grep -i apache2 1285 ? 00:00:00 apache2

    Find process ‘apache2‘, note its pid and kill it. For example, in my case ‘apache2‘ pid is ‘1285‘.

    root@tecmint:~# kill 1285 (to kill the process apache2)

    Note: Every time you re-run a process or start a system, a new pid is generated for each process and you can know about the current running processes and its pid using command ‘ps‘.

    Another way to kill the same process is.

    root@tecmint:~# pkill apache2

    Note: Kill requires job id / process id for sending signals, where as in pkill, you have an option of using pattern, specifying process owner, etc.

    26. Command: whereis

    The ‘whereis‘ command is used to locate the BinarySources and Manual Pages of the command. For example, to locate the BinarySources and Manual Pages of the command ‘ls‘ and ‘kill‘.

    root@tecmint:~# whereis ls ls: /bin/ls /usr/share/man/man1/ls.1.gz root@tecmint:~# whereis kill kill: /bin/kill /usr/share/man/man2/kill.2.gz /usr/share/man/man1/kill.1.gz

    Note: This is useful to know where the binaries are installed for manual editing sometimes.

    27. Command: service

    The ‘service‘ command controls the StartingStopping or Restarting of a ‘service‘. This command make it possible to startrestart or stop a service without restarting the system, for the changes to be taken into effect.

    Startting an apache2 server on Ubuntu

    root@tecmint:~# service apache2 start * Starting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using for ServerName httpd (pid 1285) already running [ OK ]

    Restarting a apache2 server on Ubuntu

    root@tecmint:~# service apache2 restart * Restarting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using for ServerName ... waiting .apache2: Could not reliably determine the server's fully qualified domain name, using for ServerName [ OK ]

    Stopping a apache2 server on Ubuntu

    root@tecmint:~# service apache2 stop * Stopping web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using for ServerName ... waiting [ OK ]

    Note: All the process script lies in ‘/etc/init.d‘, and the path might needs to be included on certain system, i.e., in spite of running “service apache2 start” you would be asked to run “/etc/init.d/apache2 start”.

    28. Command: alias

    alias is a built in shell command that lets you assign name for a long command or frequently used command.

    I uses ‘ls -l‘ command frequently, which includes 5 characters including space. Hence I created an alias for this to ‘l‘.

    root@tecmint:~# alias l='ls -l'

    check if it works or not.

    root@tecmint:~# l total 36 drwxr-xr-x 3 tecmint tecmint 4096 May 10 11:14 Binary drwxr-xr-x 3 tecmint tecmint 4096 May 21 11:21 Desktop drwxr-xr-x 2 tecmint tecmint 4096 May 21 15:23 Documents drwxr-xr-x 8 tecmint tecmint 4096 May 20 14:56 Downloads drwxr-xr-x 2 tecmint tecmint 4096 May 7 16:58 Music drwxr-xr-x 2 tecmint tecmint 4096 May 20 16:17 Pictures drwxr-xr-x 2 tecmint tecmint 4096 May 7 16:58 Public drwxr-xr-x 2 tecmint tecmint 4096 May 7 16:58 Templates drwxr-xr-x 2 tecmint tecmint 4096 May 7 16:58 Videos

    To remove alias ‘l‘, use the following ‘unalias‘ command.

    root@tecmint:~# unalias l

    check, if ‘l‘ still is alias or not.

    root@tecmint:~# l bash: l: command not found

    Making a little fun out of this command. Make alias of certain important command to some other important command.

    alias cd='ls -l' (set alias of ls -l to cd) alias su='pwd' (set alias of pwd to su) .... (You can create your own) ....

    Now when your friend types ‘cd‘, just think how funny it would be when he gets directory listing and not directory changing. And when he tries to be ‘su‘ the all he gets is the location of working directory. You can remove the alias later using command ‘unalias‘ as explained above.

    29. Command: df

    Report disk usages of file system. Useful for user as well as System Administrator to keep track of their disk usages. ‘df‘ works by examining directory entries, which generally are updated only when a file is closed.

    root@tecmint:~# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 47929224 7811908 37675948 18% / none 4 0 4 0% /sys/fs/cgroup udev 1005916 4 1005912 1% /dev tmpfs 202824 816 202008 1% /run none 5120 0 5120 0% /run/lock none 1014120 628 1013492 1% /run/shm none 102400 44 102356 1% /run/user /dev/sda5 184307 79852 94727 46% /boot /dev/sda7 95989516 61104 91045676 1% /data /dev/sda8 91953192 57032 87218528 1% /personal

    For more examples of ‘df‘ command, read the article 12 df Command Examples in Linux.

    30. Command: du

    Estimate file space usage. Output the summary of disk usages by ever file hierarchically, i.e., in recursive manner.

    root@tecmint:~# du 8 ./Daily Pics/wp-polls/images/default_gradient 8 ./Daily Pics/wp-polls/images/default 32 ./Daily Pics/wp-polls/images 8 ./Daily Pics/wp-polls/tinymce/plugins/polls/langs 8 ./Daily Pics/wp-polls/tinymce/plugins/polls/img 28 ./Daily Pics/wp-polls/tinymce/plugins/polls 32 ./Daily Pics/wp-polls/tinymce/plugins 36 ./Daily Pics/wp-polls/tinymce 580 ./Daily Pics/wp-polls 1456 ./Daily Pics 36 ./Plugins/wordpress-author-box 16180 ./Plugins 12 ./May Articles 2013/Xtreme Download Manager 4632 ./May Articles 2013/XCache

    Note: ‘df‘ only reports usage statistics on file systems, while ‘du‘, on the other hand, measures directory contents. For more ‘du‘ command examples and usage, read 10 du (Disk Usage) Commands.

    31. Command: rm

    The command ‘rm‘ stands for remove. rm is used to remove files (s) and directories.

    Removing a directory

    root@tecmint:~# rm PassportApplicationForm_Main_English_V1.0 rm: cannot remove `PassportApplicationForm_Main_English_V1.0': Is a directory

    The directory can’t be removed simply by ‘rm‘ command, you have to use ‘-rf‘ switch along with ‘rm‘.

    root@tecmint:~# rm -rf PassportApplicationForm_Main_English_V1.0

    Warning: “rm -rf” command is a destructive command if accidently you make it to the wrong directory. Once you ‘rm -rf‘ a directory all the files and the directory itself is lost forever, all of a sudden. Use it with caution.

    32. Command: echo

    echo as the name suggest echoes a text on the standard output. It has nothing to do with shell, nor does shell reads the output of echo command. However in an interactive script, echo passes the message to the user through terminal. It is one of the command that is commonly used in scripting, interactive scripting.

    root@tecmint:~# echo " is a very good website" is a very good website
    creating a small interactive script

    1. create a file, named ‘‘ on desktop. (Remember ‘.sh‘ extension is must). 2. copy and paste the below script, exactly same, as below.

    #!/bin/bash echo "Please enter your name:" read name echo "Welcome to Linux $name"

    Next, set execute permission and run the script.

    root@tecmint:~# chmod 777 root@tecmint:~# ./ Please enter your name: Ravi Saive Welcome to Linux Ravi Saive

    Note: ‘#!/bin/bash‘ tells the shell that it is an script an it is always a good idea to include it at the top of script. ‘read‘ reads the given input.

    33. Command: passwd

    This is an important command that is useful for changing own password in terminal. Obviously you need to know your current passowrd for Security reason.

    root@tecmint:~# passwd Changing password for tecmint. (current) UNIX password: ******** Enter new UNIX password: ******** Retype new UNIX password: ******** Password unchanged [Here was passowrd remians unchanged, i.e., new password=old password] Enter new UNIX password: ##### Retype new UNIX password:#####

    34. Command: lpr

    This command print files named on command line, to named printer.

    root@tecmint:~# lpr -P deskjet-4620-series 1-final.pdf

    Note: The ‘lpq‘ command lets you view the status of a printer (whether it’s up or not), and the jobs (files) waiting to be printed.

    35. Command: cmp

    compare two files of any type and writes the results to the standard output. By default, ‘cmp‘ Returns 0 if the files are the same; if they differ, the byte and line number at which the first difference occurred is reported.

    To provide examples for this command, lets consider two files:

    root@tecmint:~# cat file1.txt Hi My name is Tecmint
    root@tecmint:~# cat file2.txt Hi My name is tecmint [dot] com

    Now, let’s compare two files and see output of the command.

    root@tecmint:~# cmp file1.txt file2.txt file1.txt file2.txt differ: byte 15, line 1

    36. Command: wget

    Wget is a free utility for non-interactive (i.e., can work in background) download of files from the Web. It supports HTTPHTTPSFTP protocols and HTTP proxies.

    Download ffmpeg using wget

    root@tecmint:~# wget --2013-05-22 18:54:52-- Resolving ( Connecting to (||:80... connected. HTTP request sent, awaiting response... 302 Found Location: [following] --2013-05-22 18:54:54-- Resolving ( Connecting to (||:80... connected. HTTP request sent, awaiting response... 200 OK Length: 275557 (269K) [application/octet-stream] Saving to: ‘ffmpeg-php-0.6.0.tbz2’ 100%[===========================================================================>] 2,75,557 67.8KB/s in 4.0s 2013-05-22 18:55:00 (67.8 KB/s) - ‘ffmpeg-php-0.6.0.tbz2’ saved [275557/275557]

    37. Command: mount

    Mount is an important command which is used to mount a filesystem that don’t mount itself. You need root permission to mount a device.

    First run ‘lsblk‘ after plugging-in your filesystem and identify your device and note down you device assigned name.

    root@tecmint:~# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 931.5G 0 disk ├─sda1 8:1 0 923.6G 0 part / ├─sda2 8:2 0 1K 0 part └─sda5 8:5 0 7.9G 0 part [SWAP] sr0 11:0 1 1024M 0 rom sdb 8:16 1 3.7G 0 disk └─sdb1 8:17 1 3.7G 0 part

    From this screen it was clear that I plugged in a 4 GB pendrive thus ‘sdb1‘ is my filesystem to be mounted. Become a root to perform this operation and change to /dev directory where all the file system is mounted.

    root@tecmint:~# su Password: root@tecmint:~# cd /dev

    Create a directory named anything but should be relevent for reference.

    root@tecmint:~# mkdir usb

    Now mount filesystem ‘sdb1‘ to directory ‘usb‘.

    root@tecmint:~# mount /dev/sdb1 /dev/usb

    Now you can navigate to /dev/usb from terminal or X-windows system and acess file from the mounted directory.

    Time for Code Developer to know how rich Linux environment is

    38. Command: gcc

    gcc is the in-built compiler for ‘c‘ language in Linux Environment. A simple c program, save it on ur desktop as Hello.c (remember ‘.c‘ extension is must).

    #include <stdio.h> int main() { printf("Hello world\n"); return 0; }
    Compile it
    root@tecmint:~# gcc Hello.c
    Run it
    root@tecmint:~# ./a.out Hello world

    Note: On compiling a c program the output is automatically generated to a new file “a.out” and everytime you compile a c program same file “a.out” gets modified. Hence it is a good advice to define a output file during compile and thus there is no risk of overwrite to output file.

    Compile it this way
    root@tecmint:~# gcc -o Hello Hello.c

    Here ‘-o‘ sends the output to ‘Hello‘ file and not ‘a.out‘. Run it again.

    root@tecmint:~# ./Hello Hello world

    39. Command: g++

    g++ is the in-built compiler for ‘C++‘ , the first object oriented programming language. A simple c++ program, save it on ur desktop as Add.cpp (remember ‘.cpp‘ extension is must).

    #include <iostream> using namespace std; int main() { int a; int b; cout<<"Enter first number:\n"; cin >> a; cout <<"Enter the second number:\n"; cin>> b; cin.ignore(); int result = a + b; cout<<"Result is"<<" "<<result<<endl; cin.get(); return 0; }
    Compile it
    root@tecmint:~# g++ Add.cpp
    Run it
    root@tecmint:~# ./a.out Enter first number: ... ...

    Note: On compiling a c++ program the output is automatically generated to a new file “a.out” and everytime you compile a c++ program same file “a.out” gets modified. Hence it is a good advice to define a output file during compile and thus there is no risk of overwrite to output file.

    Compile it this way
    root@tecmint:~# g++ -o Add Add.cpp
    Run it
    root@tecmint:~# ./Add Enter first number: ... ...

    40. Command: java

    Java is one of the world’s highly used programming language and is considered fast, secure, and reliable. Most of the the web based service of today runs on java.

    Create a simple java program by pasting the below test to a file, named (remember ‘.java‘ extension is must).

    class tecmint { public static void main(String[] arguments) { System.out.println("Tecmint "); } }
    compile it using javac
    root@tecmint:~# javac
    Run it
    root@tecmint:~# java tecmint

    Note: Almost every distribution comes packed with gcc compiler, major number of distros have inbuilt g++ and java compiler, while some may not have. You can apt or yum the required package.

    Don’t forget to mention your valueable comment and the type of article you want to see here. I will soon be back with an interesting topic about the lesser known facts about Linux.