歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> 對中級Linux用戶非常有用的20個命令

對中級Linux用戶非常有用的20個命令

日期:2017/3/1 15:29:25   编辑:關於Linux
對中級Linux用戶非常有用的20個命令 21. 命令: Find 搜索指定目錄下的文件,從開始於父目錄,然後搜索子目錄。 01 root@tecmint:~# find -name *.sh 02 03 ./Desktop/load.sh 04 ./Desktop/test.sh 05 ./Desktop/shutdown.sh 06 ./Binary/firefox/run-mozilla.sh 07 ./Downloads/kdewebdev-3.5.8/quanta/scripts/externalpreview.sh 08 ./Downloads/kdewebdev-3.5.8/admin/doxygen.sh 09 ./Downloads/kdewebdev-3.5.8/admin/cvs.sh 10 ./Downloads/kdewebdev-3.5.8/admin/ltmain.sh 11 ./Downloads/wheezy-nv-install.sh 注意: `-name‘選項是搜索大小寫敏感。可以使用`-iname‘選項,這樣在搜索中可以忽略大小寫。(*是通配符,可以搜索所有的文件;‘.sh‘你可以使用文件名或者文件名的一部分來制定輸出結果) 01 root@tecmint:~# find -iname *.SH ( find -iname *.Sh / find -iname *.sH) 02 03 ./Desktop/load.sh 04 ./Desktop/test.sh 05 ./Desktop/shutdown.sh 06 ./Binary/firefox/run-mozilla.sh 07 ./Downloads/kdewebdev-3.5.8/quanta/scripts/externalpreview.sh 08 ./Downloads/kdewebdev-3.5.8/admin/doxygen.sh 09 ./Downloads/kdewebdev-3.5.8/admin/cvs.sh 10 ./Downloads/kdewebdev-3.5.8/admin/ltmain.sh 11 ./Downloads/wheezy-nv-install.sh 01 root@tecmint:~# find -name *.tar.gz 02 03 /var/www/modules/update/tests/aaa_update_test.tar.gz 04 ./var/cache/flashplugin-nonfree/install_flash_player_11_linux.i386.tar.gz 05 ./home/server/Downloads/drupal-7.22.tar.gz 06 ./home/server/Downloads/smtp-7.x-1.0.tar.gz 07 ./home/server/Downloads/noreqnewpass-7.x-1.2.tar.gz 08 ./usr/share/gettext/archive.git.tar.gz 09 ./usr/share/doc/apg/php.tar.gz 10 ./usr/share/doc/festival/examples/speech_pm_1.0.tar.gz 11 ./usr/share/doc/argyll/examples/spyder2.tar.gz 12 ./usr/share/usb_modeswitch/configPack.tar.gz 注意:以上命令查找根目錄下和所有文件夾以及加載的設備的子目錄下的所有包含‘tar.gz'的文件。 22. 命令: grep ‘grep‘命令搜索指定文件中包含給定字符串或者單詞的行。舉例搜索‘/etc/passwd‘文件中的‘tecmint' 1 root@tecmint:~# grep tecmint /etc/passwd 2 3 tecmint:x:1000:1000:Tecmint,,,:/home/tecmint:/bin/bash 使用’-i'選項將忽略大小寫。 1 root@tecmint:~# grep -i TECMINT /etc/passwd 2 3 tecmint:x:1000:1000:Tecmint,,,:/home/tecmint:/bin/bash 使用’-r'選項遞歸搜索所有自目錄下包含字符串 “127.0.0.1“.的行。 01 root@tecmint:~# grep -r "127.0.0.1" /etc/ 02 03 /etc/vlc/lua/http/.hosts:127.0.0.1 04 /etc/speech-dispatcher/modules/ivona.conf:#IvonaServerHost "127.0.0.1" 05 /etc/mysql/my.cnf:bind-address = 127.0.0.1 06 /etc/apache2/mods-available/status.conf: Allow from 127.0.0.1 ::1 07 /etc/apache2/mods-available/ldap.conf: Allow from 127.0.0.1 ::1 08 /etc/apache2/mods-available/info.conf: Allow from 127.0.0.1 ::1 09 /etc/apache2/mods-available/proxy_balancer.conf:# Allow from 127.0.0.1 ::1 10 /etc/security/access.conf:#+ : root : 127.0.0.1 11 /etc/dhcp/dhclient.conf:#prepend domain-name-servers 127.0.0.1; 12 /etc/dhcp/dhclient.conf:# option domain-name-servers 127.0.0.1; 13 /etc/init/network-interface.conf: ifconfig lo 127.0.0.1 up || true 14 /etc/java-6-openjdk/net.properties:# localhost & 127.0.0.1). 15 /etc/java-6-openjdk/net.properties:# http.nonProxyHosts=localhost|127.0.0.1 16 /etc/java-6-openjdk/net.properties:# localhost & 127.0.0.1). 17 /etc/java-6-openjdk/net.properties:# ftp.nonProxyHosts=localhost|127.0.0.1 18 /etc/hosts:127.0.0.1 localhost 注意:您還可以使用以下選項: -w 搜索單詞 (egrep -w ‘word1|word2‘ /path/to/file). -c 用於統計滿足要求的行 (i.e., total number of times the pattern matched) (grep -c ‘word‘ /path/to/file). –color 彩色輸出 (grep –color server /etc/passwd). 23. 命令: man ‘man‘是系統幫助頁。Man提供命令所有選項及用法的在線文檔。幾乎所有的命令都有它們的幫助頁,例如: 01 root@tecmint:~# man man 02 03 MAN(1) Manual pager utils MAN(1) 04 05 NAME 06 man - an interface to the on-line reference manuals 07 08 SYNOPSIS 09 man [-C file] [-d] [-D] [--warnings[=warnings]] [-R encoding] [-L locale] [-m system[,...]] [-M path] [-S list] [-e extension] [-i|-I] 10 [--regex|--wildcard] [--names-only] [-a] [-u] [--no-subpages] [-P pager] [-r prompt] [-7] [-E encoding] [--no-hyphenation] [--no-justification] [-p 11 string] [-t] [-T[device]] [-H[browser]] [-X[dpi]] [-Z] [[section] page ...] ... 12 man -k [apropos options] regexp ... 13 man -K [-w|-W] [-S list] [-i|-I] [--regex] [section] term ... 14 man -f [whatis options] page ... 15 man-l [-C file] [-d] [-D] [--warnings[=warnings]] [-R encoding] [-L locale] [-P pager] [-r prompt] [-7] [-E encoding] [-p string] [-t] [-T[device]] 16 [-H[browser]] [-X[dpi]] [-Z] file ... 17 man -w|-W [-C file] [-d] [-D] page ... 18 man -c [-C file] [-d] [-D] page ... 19 man [-hV] 上面是man命令的系統幫助頁,類似的有cat和ls的幫助頁。 注意:系統幫助頁是為了命令的使用和學習而設計的。 24. 命令: ps ps命令給出正在運行的某個進程的狀態,每個進程有特定的id成為PID。 1 root@tecmint:~# ps 2 3 PID TTY TIME CMD 4 4170 pts/1 00:00:00 bash 5 9628 pts/1 00:00:00 ps 使用‘-A‘選項可以列出所有的進程及其PID。 01 root@tecmint:~# ps -A 02 03 PID TTY TIME CMD 04 1 ? 00:00:01 init 05 2 ? 00:00:00 kthreadd 06 3 ? 00:00:01 ksoftirqd/0 07 5 ? 00:00:00 kworker/0:0H 08 7 ? 00:00:00 kworker/u:0H 09 8 ? 00:00:00 migration/0 10 9 ? 00:00:00 rcu_bh 11 .... 注意:當你要知道有哪些進程在運行或者需要知道想殺死的進程PID時ps命令很管用。你可以把它與‘grep‘合用來查詢指定的輸出結果,例如: 1 root@tecmint:~# ps -A | grep -i ssh 2 3 1500 ? 00:09:58 sshd 4 4317 ? 00:00:00 sshd ps命令與grep命令用管道線分割可以得到我們想要的結果。 25. 命令: kill 也許你從命令的名字已經猜出是做什麼的了,kill是用來殺死已經無關緊要或者沒有響應的進程.它是一個非常有用的命令,而不是非常非常有用.你可能很熟悉Windows下要殺死進程可能需要頻繁重啟機器因為一個在運行的進程大部分情況下不能夠殺死,即使殺死了進程也需要重新啟動操作系統才能生效.但在linux環境下,事情不是這樣的.你可以殺死一個進程並且重啟它而不是重啟整個操作系統. 殺死一個進程需要知道進程的PID. 假設你想殺死已經沒有響應的‘apache2'進程,運行如下命令: 1 root@tecmint:~# ps -A | grep -i apache2 2 3 1285 ? 00:00:00 apache2 搜索‘apache2'進程,找到PID並殺掉它.例如:在本例中‘apache2'進程的PID是1285.. 1 root@tecmint:~# kill 1285 (to kill the process apache2) 注意:每次你重新運行一個進程或者啟動系統,每個進程都會生成一個新的PID.你可以使用ps命令獲得當前運行進程的PID. 另一個殺死進程的方法是: 1 root@tecmint:~# pkill apache2 注意:kill需要PID作為參數,pkill可以選擇應用的方式,比如指定進程的所有者等. 26. 命令: whereis whereis的作用是用來定位命令的二進制文件\資源\或者幫助頁.舉例來說,獲得ls和kill命令的二進制文件/資源以及幫助頁: 1 root@tecmint:~# whereis ls 2 3 ls: /bin/ls /usr/share/man/man1/ls.1.gz 1 root@tecmint:~# whereis kill 2 3 kill: /bin/kill /usr/share/man/man2/kill.2.gz /usr/share/man/man1/kill.1.gz 注意:當需要知道二進制文件保存位置時有用. 27. 命令: service ‘service‘命令控制服務的啟動、停止和重啟,它讓你能夠不重啟整個系統就可以讓配置生效以開啟、停止或者重啟某個服務。 在Ubuntu上啟動apache2 server: 1 root@tecmint:~# service apache2 start 2 3 * Starting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 forServerName 4 httpd (pid 1285) already running [ OK ] 重啟apache2 server: 1 root@tecmint:~# service apache2 restart 2 3 * Restarting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 forServerName 4 ... waiting .apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 forServerName [ OK ] 停止apache2 server: 1 root@tecmint:~# service apache2 stop 2 3 * Stopping web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 forServerName 4 ... waiting [ OK ] 注意:要想使用service命令,進程的腳本必須放在‘/etc/init.d‘,並且路徑必須在指定的位置。 如果要運行“service apache2 start”實際上實在執行“service /etc/init.d/apache2 start”. 28. 命令: alias alias是一個系統自建的shell命令,允許你為名字比較長的或者經常使用的命令指定別名。 我經常用‘ls -l‘命令,它有五個字符(包括空格)。於是我為它創建了一個別名‘l'。 1 root@tecmint:~# alias l='ls -l' 試試它是否能用: 01 root@tecmint:~# l 02 03 total 36 04 drwxr-xr-x 3 tecmint tecmint 4096 May 10 11:14 Binary 05 drwxr-xr-x 3 tecmint tecmint 4096 May 21 11:21 Desktop 06 drwxr-xr-x 2 tecmint tecmint 4096 May 21 15:23 Documents 07 drwxr-xr-x 8 tecmint tecmint 4096 May 20 14:56 Downloads 08 drwxr-xr-x 2 tecmint tecmint 4096 May 7 16:58 Music 09 drwxr-xr-x 2 tecmint tecmint 4096 May 20 16:17 Pictures 10 drwxr-xr-x 2 tecmint tecmint 4096 May 7 16:58 Public 11 drwxr-xr-x 2 tecmint tecmint 4096 May 7 16:58 Templates 12 drwxr-xr-x 2 tecmint tecmint 4096 May 7 16:58 Videos 去掉’l'別名,要使用unalias命令: 1 root@tecmint:~# unalias l 再試試: 1 root@tecmint:~# l 2 3 bash: l: command not found 開個玩笑,把一個重要命令的別名指定為另一個重要命令: 1 alias cd='ls -l' (set alias of ls -l to cd) 2 alias su='pwd' (set alias of pwd to su) 3 .... 4 (You can create your own) 5 .... 想想多麼有趣,現在如果你的朋友敲入‘cd'命令,當他看到的是目錄文件列表而不是改變目錄;當他試圖用’su‘命令時,他會進入當前目錄。你可以隨後去掉別名,向他解釋以上情況。 29.命令: df 報告系統的磁盤使用情況。在跟蹤磁盤使用情況方面對於普通用戶和系統管理員都很有用。 ‘df‘ 通過檢查目錄大小工作,但這一數值僅當文件關閉時才得到更新。 01 root@tecmint:~# df 02 03 Filesystem 1K-blocks Used Available Use% Mounted on 04 /dev/sda1 47929224 7811908 37675948 18% / 05 none 4 0 4 0% /sys/fs/cgroup 06 udev 1005916 4 1005912 1% /dev 07 tmpfs 202824 816 202008 1% /run 08 none 5120 0 5120 0% /run/lock 09 none 1014120 628 1013492 1% /run/shm 10 none 102400 44 102356 1% /run/user 11 /dev/sda5 184307 79852 94727 46% /boot 12 /dev/sda7 95989516 61104 91045676 1% /data 13 /dev/sda8 91953192 57032 87218528 1% /personal ‘df’命令的更多例子請參閱 12 df Command Examples in Linux. 30. 命令: du 估計文件的空間占用。 逐層統計文件(例如以遞歸方式)並輸出摘要。 01 root@tecmint:~# du 02 03 8 ./Daily Pics/wp-polls/images/default_gradient 04 8 ./Daily Pics/wp-polls/images/default 05 32 ./Daily Pics/wp-polls/images 06 8 ./Daily Pics/wp-polls/tinymce/plugins/polls/langs 07 8 ./Daily Pics/wp-polls/tinymce/plugins/polls/img 08 28 ./Daily Pics/wp-polls/tinymce/plugins/polls 09 32 ./Daily Pics/wp-polls/tinymce/plugins 10 36 ./Daily Pics/wp-polls/tinymce 11 580 ./Daily Pics/wp-polls 12 1456 ./Daily Pics 13 36 ./Plugins/wordpress-author-box 14 16180 ./Plugins 15 12 ./May Articles 2013/Xtreme Download Manager 16 4632 ./May Articles 2013/XCache 注意: ‘df‘ 只顯示文件系統的使用統計,但‘du‘統計目錄內容。‘du‘命令的更詳細信息請參閱10 du (Disk Usage) Commands. 31. 命令: rm 'rm' 標准移除命令。 rm 可以用來刪除文件和目錄。 刪除目錄 1 root@tecmint:~# rm PassportApplicationForm_Main_English_V1.0 2 3 rm: cannot remove `PassportApplicationForm_Main_English_V1.0': Is a directory 'rm' 不能直接刪除目錄,需要加上相應的'-rf'參數才可以。 1 root@tecmint:~# rm -rf PassportApplicationForm_Main_English_V1.0 警告: "rm -rf" 命令是一個破壞性的命令,假如你不小心刪除一個錯誤的目錄。一旦你使用'rm -rf' 刪除一個目錄,在目錄中所有的文件包括目錄本身會被永久的刪除,所以使用這個命令要非常小心。 32. 命令: echo echo 的功能正如其名,就是基於標准輸出打印一段文本。它和shell無關,shell也不讀取通過echo命令打印出的內容。然而在一種交互式腳本中,echo通過終端將信息傳遞給用戶。它是在腳本語言,交互式腳本語言中經常用到的命令。 1 root@tecmint:~# echo "Tecmint.com is a very good website" 2 3 Tecmint.com is a very good website 創建一小段交互式腳本 1. 在桌面上新建一個文件,命名為 ‘interactive_shell.sh‘ (記住必須帶 ‘.sh‘擴展名)。 2. 復制粘貼如下腳本代碼,確保和下面的一致。 1 #!/bin/bash 2 echo "Please enter your name:" 3 readname 4 echo "Welcome to Linux $name" 接下來,設置執行權限並運行腳本。 1 root@tecmint:~# chmod 777 interactive_shell.sh 1 root@tecmint:~# ./interactive_shell.sh 2 3 Please enter your name: 4 Ravi Saive 5 Welcome to Linux Ravi Saive 注意: ‘#!/bin/bash‘ 告訴shell這是一個腳本,並且在腳本首行寫上這句話是個好習慣。. ‘read‘ 讀取給定的輸出. 33. 命令: passwd 這是一個很重要的命令,在終端中用來改變自己密碼很有用。顯然的,因為安全的原因,你需要知道當前的密碼。 1 root@tecmint:~# passwd 2 3 Changing password fortecmint. 4 (current) UNIX password: ******** 5 Enter new UNIX password: ******** 6 Retype new UNIX password: ******** 7 Password unchanged [這裡表示密碼未改變,例如:新密碼=舊密碼] 8 Enter new UNIX password: ##### 9 Retype new UNIX password:##### 34. 命令: lpr 這個命令用來在命令行上將指定的文件在指定的打印機上打印。 1 root@tecmint:~# lpr -P deskjet-4620-series 1-final.pdf 注意: "lpq"命令讓你查看打印機的狀態(是開啟狀態還是關閉狀態)和等待打印中的工作(文件)的狀態。 35. 命令: cmp 比較兩個任意類型的文件並將結果輸出至標准輸出。如果兩個文件相同, ‘cmp‘默認返回0;如果不同,將顯示不同的字節數和第一處不同的位置。 以下面兩個文件為例: file1.txt 1 root@tecmint:~# cat file1.txt 2 3 Hi My name is Tecmint file2.txt 1 root@tecmint:~# cat file2.txt 2 3 Hi My name is tecmint [dot] com 比較一下這兩個文件,看看命令的輸出。 1 root@tecmint:~# cmp file1.txt file2.txt 2 3 file1.txt file2.txt differ: byte 15, line 1 36. 命令: wget Wget是用於非交互式(例如後台)下載文件的免費工具.支持HTTP, HTTPS, FTP協議和 HTTP 代理。 使用wget下載ffmpeg 01 root@tecmint:~# wget http://downloads.sourceforge.net/project/ffmpeg-php/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2 02 03 --2013-05-22 18:54:52-- http://downloads.sourceforge.net/project/ffmpeg-php/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2 04 Resolving downloads.sourceforge.net (downloads.sourceforge.net)... 216.34.181.59 05 Connecting to downloads.sourceforge.net (downloads.sourceforge.net)|216.34.181.59|:80... connected. 06 HTTP request sent, awaiting response... 302 Found 07 Location: http://kaz.dl.sourceforge.net/project/ffmpeg-php/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2 [following] 08 --2013-05-22 18:54:54-- http://kaz.dl.sourceforge.net/project/ffmpeg-php/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2 09 Resolving kaz.dl.sourceforge.net (kaz.dl.sourceforge.net)... 92.46.53.163 10 Connecting to kaz.dl.sourceforge.net (kaz.dl.sourceforge.net)|92.46.53.163|:80... connected. 11 HTTP request sent, awaiting response... 200 OK 12 Length: 275557 (269K) [application/octet-stream] 13 Saving to: ‘ffmpeg-php-0.6.0.tbz2’ 14 15 100%[===========================================================================>] 2,75,557 67.8KB/s in4.0s 16 17 2013-05-22 18:55:00 (67.8 KB/s) - ‘ffmpeg-php-0.6.0.tbz2’ saved [275557/275557] 37 命令: mount mount 是一個很重要的命令,用來掛載不能自動掛載的文件系統。你需要root權限掛載設備。 在插入你的文件系統後,首先運行"lsblk"命令,識別出你的設備,然後把分配的設備名記下來。 01 root@tecmint:~# lsblk 02 03 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT 04 sda 8:0 0 931.5G 0 disk 05 ├─sda1 8:1 0 923.6G 0 part / 06 ├─sda2 8:2 0 1K 0 part 07 └─sda5 8:5 0 7.9G 0 part [SWAP] 08 sr0 11:0 1 1024M 0 rom 09 sdb 8:16 1 3.7G 0 disk 10 └─sdb1 8:17 1 3.7G 0 part 從這個輸出上來看,很明顯我插入的是4GB的U盤,因而“sdb1”就是要掛載上來的文件系統。以root用戶操作,然後切換到/dev目錄,它是所有文件系統掛載的地方。 1 root@tecmint:~# su 2 Password: 1 root@tecmint:~# cd /dev 創建一個任何名字的目錄,但是最好和引用相關。 1 root@tecmint:~# mkdir usb 現在將“sdb1”文件系統掛載到“usb”目錄. 1 root@tecmint:~# mount /dev/sdb1 /dev/usb 現在你就可以從終端進入到/dev/usb或者通過X窗口系統從掛載目錄訪問文件。 是時候讓程序猿見識見識Linux環境是多麼豐富了! 38. 命令: gcc gcc 是Linux環境下C語言的內建編譯器。下面是一個簡單的C程序,在桌面上保存為Hello.c (記住必須要有‘.c‘擴展名)。 1 #include <stdio.h> 2 int main() 3 { 4 printf("Hello world\n"); 5 return 0; 6 } 編譯 1 root@tecmint:~# gcc Hello.c 運行 1 root@tecmint:~# ./a.out 2 3 Hello world 注意: 編譯C程序時,輸出會自動保存到一個名為“a.out”的新文件,因此每次編譯C程序 “a.out”都會被修改。 因此編譯期間最好定義輸出文件名.,這樣就不會有覆蓋輸出文件的風險了。 用這種方法編譯 1 root@tecmint:~# gcc -o Hello Hello.c 這裡‘-o‘將輸出寫到‘Hello‘文件而不是 ‘a.out‘。再運行一次。 1 root@tecmint:~# ./Hello 2 3 Hello world 39. 命令: g++ g++是C++的內建編譯器。下面是一個簡單的C++程序,在桌面上保存為Add.cpp (記住必須要有‘.cpp‘擴展名)。 01 #include <iostream> 02 03 using namespace std; 04 05 int main() 06 { 07 int a; 08 int b; 09 cout<<"Enter first number:\n"; 10 cin >> a; 11 cout <<"Enter the second number:\n"; 12 cin>> b; 13 cin.ignore(); 14 int result = a + b; 15 cout<<"Result is"<<" "<<result<<endl; 16 cin.get(); 17 return 0; 18 } 編譯 1 root@tecmint:~# g++ Add.cpp 運行 1 root@tecmint:~# ./a.out 2 3 Enter first number: 4 ... 5 ... 注意:編譯C++程序時,輸出會自動保存到一個名為“a.out”的新文件,因此每次編譯C++程序 “a.out”都會被修改。 因此編譯期間最好定義輸出文件名.,這樣就不會有覆蓋輸出文件的風險了。 用這種方法編譯 1 root@tecmint:~# g++ -o Add Add.cpp 運行 1 root@tecmint:~# ./Add 2 3 Enter first number: 4 ... 5 ... 40. 命令: java Java 是世界上使用最廣泛的編程語言之一. 它也被認為是高效, 安全和可靠的編程語言. 現在大多數基於網絡的服務都使用Java實現. 拷貝以下代碼到一個文件就可以創建一個簡單的Java程序. 不妨把文件命名為tecmint.java (記住: '.java'擴展名是必需的). 1 class tecmint { 2 public static void main(String[] arguments) { 3 System.out.println("Tecmint "); 4 } 5 } 用javac編譯tecmint.java 1 root@tecmint:~# javac tecmint.java 運行 1 root@tecmint:~# java tecmint 注意: 幾乎所有的Linux發行版都帶有gcc編譯器, 大多數發行版都內建了g++ 和 java 編譯器, 有些也可能沒有. 你可以用apt 或 yum 安裝需要的包.
Copyright © Linux教程網 All Rights Reserved