1. 程式人生 > 實用技巧 >最全linux命令

最全linux命令

cd命令:

  cd dirName --- dirName指切換的目錄目標

  cd /usr/bin --- 跳到usr/bin的目錄下

  cd~ --- 跳到自己的home目錄下

  cd .. --- 返回上級目錄 cd ../.. 返回上上級

pwd命令:可以得到您目前所有工作目錄的絕對路勁名稱

ls命令:

  ls --- 列出根目錄下的所有目錄

  ls -a --- 顯示所有檔案及目錄(包括.開頭的隱藏檔案也會列出)

ll命令:和ls差不多

cp命令:主要用於複製檔案或目錄。

  語法:cp 引數source dest

  • -a:此選項通常在複製目錄時使用,它保留連結、檔案屬性,並複製目錄下的所有內容。其作用等於dpR引數組合。
  • -d:複製時保留連結。這裡所說的連結相當於Windows系統中的快捷方式。
  • -f:覆蓋已經存在的目標檔案而不給出提示。
  • -i:與-f選項相反,在覆蓋目標檔案之前給出提示,要求使用者確認是否覆蓋,回答"y"時目標檔案將被覆蓋。
  • -p:除複製檔案的內容外,還把修改時間和訪問許可權也複製到新檔案中。
  • -r:若給出的原始檔是一個目錄檔案,此時將複製該目錄下所有的子目錄和檔案。
  • -l:不復制檔案,只是生成連結檔案。

  eg:$ cp r test/ newtest ---將當前目錄test/下的所有檔案複製到新目錄newtest

mv命令:用來為檔案或目錄改名、或將檔案或目錄移入其它位置

  語法:mv [options] source dest

     mv [options] source... directory

  

  引數說明

    • -b: 當目標檔案或目錄存在時,在執行覆蓋前,會為其建立一個備份。
    • -i: 如果指定移動的源目錄或檔案與目標的目錄或檔案同名,則會先詢問是否覆蓋舊檔案,輸入 y 表示直接覆蓋,輸入 n 表示取消該操作。
    • -f: 如果指定移動的源目錄或檔案與目標的目錄或檔案同名,不會詢問,直接覆蓋舊檔案。
    • -n: 不要覆蓋任何已存在的檔案或目錄。
    • -u:當原始檔比目標檔案新或者目標檔案不存在時,才執行移動操作。
命令格式執行結果
mv source_file(檔案) dest_file(檔案)
將原始檔名 source_file 改為目標檔名 dest_file
mv source_file(檔案) dest_directory(目錄)
將檔案 source_file 移動到目標目錄 dest_directory 中
mv source_directory(目錄) dest_directory(目錄)
目錄名 dest_directory 已存在,將 source_directory 移動到目錄名 dest_directory 中;目錄名 dest_directory 不存在則 source_directory 改名為目錄名 dest_directory
mv source_directory(目錄) dest_file(檔案)
出錯


more命令:

  more 命令類似 cat ,不過會以一頁一頁的形式顯示,更方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按 b 鍵就會往回(back)一頁顯示,而且還有搜尋字串的功能(與 vi 相似),使用中的說明檔案,請按 h 。

  more -s testfile ---逐頁顯示 testfile 文件內容,如有連續兩行以上空白行則以一行空白行顯示。

  more +20 testfile ---從第 20 行開始顯示 testfile 之文件內容。

less命令:與 more 類似,但使用 less 可以隨意瀏覽檔案,而 more 僅能向前移動,卻不能向後移動,而且 less 在檢視之前不會載入整個檔案。

  less log2013.log --- 檢視檔案

  less log2013.log log2014.log ---瀏覽多個檔案

head命令:可用於檢視檔案的開頭部分的內容,有一個常用的引數-n用於顯示行數,預設為 10,即顯示 10 行的內容。

head [引數] [檔案]  

引數:

  • -q 隱藏檔名
  • -v 顯示檔名
  • -c<數目> 顯示的位元組數。
  • -n<行數> 顯示的行數。

例項

要顯示 runoob_notes.log 檔案的開頭 10 行,請輸入以下命令:

head runoob_notes.log

顯示 notes.log 檔案的開頭 5 行,請輸入以下命令:

head -n 5 runoob_notes.log

顯示檔案前 20 個位元組:

head -c 20 runoob_notes.log

tail命令:命令可用於檢視檔案的內容,有一個常用的引數-f常用於查閱正在改變的日誌檔案。

tail -f filename會把 filename 檔案裡的最尾部的內容顯示在螢幕上,並且不斷重新整理,只要 filename 更新就可以看到最新的檔案內容。

命令格式:

tail [引數] [檔案]

例項

要顯示 notes.log 檔案的最後 10 行,請輸入以下命令:

tail notes.log

要跟蹤名為 notes.log 的檔案的增長情況,請輸入以下命令:

tail -f notes.log

此命令顯示 notes.log 檔案的最後 10 行。當將某些行新增至 notes.log 檔案時,tail 命令會繼續顯示這些行。 顯示一直繼續,直到您按下(Ctrl-C)組合鍵停止顯示。

顯示檔案 notes.log 的內容,從第 20 行至檔案末尾:

tail -n +20 notes.log

顯示檔案 notes.log 的最後 10 個字元:

tail -c 10 notes.log

rm命令:命令用於刪除一個檔案或者目錄。

語法

rm [options] name...

引數

  • -i 刪除前逐一詢問確認。
  • -f 即使原檔案屬性設為唯讀,亦直接刪除,無需逐一確認。
  • -r 將目錄及以下之檔案亦逐一刪除。

例項

刪除檔案可以直接使用rm命令,若刪除目錄則必須配合選項"-r",例如:

# rm  test.txt 
rm:是否刪除 一般檔案 "test.txt"? y  
# rm  homework  
rm: 無法刪除目錄"homework": 是一個目錄  
# rm  -r  homework  
rm:是否刪除 目錄 "homework"? y 

刪除當前目錄下的所有檔案及目錄,命令列為:

rm  -r  *

檔案一旦通過rm命令刪除,則無法恢復,所以必須格外小心地使用該命令。

date命令:可以用來顯示或設定系統的日期與時間,在顯示方面,使用者可以設定欲顯示的格式,格式設定為一個加號後接數個標記,其中可用的標記列表如下:

例項

顯示當前時間

# date
 5 12 14:08:12 CST 2010
# date '+%c' 
20100512 星期三 140902
# date '+%D' //顯示完整的時間
05/12/10
# date '+%x' //顯示數字日期,年份兩位數表示
20100512
# date '+%T' //顯示日期,年份用四位數表示
14:09:31
# date '+%X' //顯示24小時的格式
140939

rz命令:使用ZMODEM協議,將本地檔案批量上傳到遠端Linux/Unix伺服器,注意不能上傳資料夾。

rz [選項]

選項說明:

-+, --append:將檔案內容追加到已存在的同名檔案

-a,--ascii:以文字方式傳輸

-b, --binary:以二進位制方式傳輸,推薦使用

--delay-startup N:等待N秒

-e, --escape:對所有控制字元轉義,建議使用

-E, --rename:已存在同名檔案則重新命名新上傳的檔案,以點和數字作為字尾

-p, --protect:對ZMODEM協議有效,如果目標檔案已存在則跳過 -

q, --quiet:安靜執行,不輸出提示資訊

-v, --verbose:輸出傳輸過程中的提示資訊

-y, --overwrite:存在同名檔案則替換

-X, --xmodem:使用XMODEM協議

--ymodem:使用YMODEM協議

-Z, --zmodem:使用ZMODEM協議

--version:顯示版本資訊

--h, --help:顯示幫助資訊

sz命令:通過ZMODEM協議,可將多個檔案從遠端伺服器下載到本地。注意不能下載資料夾,如果下載資料夾,請先打包再下載

格式:

rz [選項] [filelist]

命令選項基本與rz相同,請參考上文rz的命令選項或者sz的manual,或者執行命令sz -h檢視。

常用示例

1 下載多個檔案

sz file1 file2 file3

Linux 不能使用rz/sz 命令?

有的機器可能不能使用 rz/sz 命令,這個時候我們就需要安裝 lrzsz

執行以下命令:

yum install lrzsz -y

tar命令:是用來建立,還原備份檔案的工具程式,它可以加入,解開備份檔案內的檔案。

壓縮檔案 非打包

# touch a.c       
# tar -czvf test.tar.gz a.c   //壓縮 a.c檔案為test.tar.gz
a.c

列出壓縮檔案內容

# tar -tzvf test.tar.gz 
-rw-r--r-- root/root     0 2010-05-24 16:51:59 a.c

解壓檔案

# tar -xzvf test.tar.gz 
a.c


zip命令:用於壓縮檔案。

引數

  • -b<工作目錄> 指定暫時存放檔案的目錄。
  • -d 從壓縮檔案內刪除指定的檔案。
  • -D 壓縮檔案內不建立目錄名稱。
  • -f 更新現有的檔案。
  • -F 嘗試修復已損壞的壓縮檔案。
  • -g 將檔案壓縮後附加在既有的壓縮檔案之後,而非另行建立新的壓縮檔案。
  • -J 刪除壓縮檔案前面不必要的資料。
  • -m 將檔案壓縮並加入壓縮檔案後,刪除原始檔案,即把檔案移到壓縮檔案中。
  • -n<字尾字串> 不壓縮具有特定字尾字串的檔案。
  • -o 以壓縮檔案內擁有最新更改時間的檔案為準,將壓縮檔案的更改時間設成和該檔案相同。
  • -q 不顯示指令執行過程。
  • -r 遞迴處理,將指定目錄下的所有檔案和子目錄一併處理。
  • -S 包含系統和隱藏檔案。
  • -u 與 -f 引數類似,但是除了更新現有的檔案外,也會將壓縮檔案中的其他檔案解壓縮到目錄中。
  • -z 替壓縮檔案加上註釋。

例項

將 /home/html/ 這個目錄下所有檔案和資料夾打包為當前目錄下的 html.zip:

zip -q -r html.zip /home/html

如果在我們在 /home/html 目錄下,可以執行以下命令:

zip -q -r html.zip *

從壓縮檔案 cp.zip 中刪除檔案 a.c

zip -dv cp.zip a.c

unzip命令:用於解壓縮zip檔案

引數

  • -c 將解壓縮的結果顯示到螢幕上,並對字元做適當的轉換。
  • -f 更新現有的檔案。
  • -l 顯示壓縮檔案內所包含的檔案。
  • -p 與-c引數類似,會將解壓縮的結果顯示到螢幕上,但不會執行任何的轉換。
  • -t 檢查壓縮檔案是否正確。
  • -u 與-f引數類似,但是除了更新現有的檔案外,也會將壓縮檔案中的其他檔案解壓縮到目錄中。
  • -v 執行是時顯示詳細的資訊。
  • -z 僅顯示壓縮檔案的備註文字。
  • -a 對文字檔案進行必要的字元轉換。
  • -b 不要對文字檔案進行字元轉換。
  • -C 壓縮檔案中的檔名稱區分大小寫。
  • -j 不處理壓縮檔案中原有的目錄路徑。
  • -L 將壓縮檔案中的全部檔名改為小寫。
  • -M 將輸出結果送到more程式處理。
  • -n 解壓縮時不要覆蓋原有的檔案。
  • -o 不必先詢問使用者,unzip執行後覆蓋原有檔案。
  • -P<密碼> 使用zip的密碼選項。
  • -q 執行時不顯示任何資訊。
  • -s 將檔名中的空白字元轉換為底線字元。
  • -V 保留VMS的檔案版本資訊。
  • -X 解壓縮時同時回存檔案原來的UID/GID。
  • [.zip檔案] 指定.zip壓縮檔案。
  • [檔案] 指定要處理.zip壓縮檔案中的哪些檔案。
  • -d<目錄> 指定檔案解壓縮後所要儲存的目錄。
  • -x<檔案> 指定不要處理.zip壓縮檔案中的哪些檔案。
  • -Z unzip -Z等於執行zipinfo指令。

例項

檢視壓縮檔案中包含的檔案:

# unzip -l abc.zip 
Archive: abc.zip
 Length   Date  Time  Name
--------  ----  ----  ----
  94618 05-21-10 20:44  a11.jpg
  202001 05-21-10 20:44  a22.jpg
    16 05-22-10 15:01  11.txt
  46468 05-23-10 10:30  w456.JPG
  140085 03-14-10 21:49  my.asp
--------          -------
  483188          5 files

-v 引數用於檢視壓縮檔案目錄資訊,但是不解壓該檔案。

# unzip -v abc.zip 
Archive: abc.zip
Length  Method  Size Ratio  Date  Time  CRC-32  Name
-------- ------ ------- -----  ----  ----  ------  ----
  94618 Defl:N  93353  1% 05-21-10 20:44 9e661437 a11.jpg
 202001 Defl:N  201833  0% 05-21-10 20:44 1da462eb a22.jpg
   16 Stored    16  0% 05-22-10 15:01 ae8a9910 ? +-|¥+-? (11).txt
  46468 Defl:N  39997 14% 05-23-10 10:30 962861f2 w456.JPG
 140085 Defl:N  36765 74% 03-14-10 21:49 836fcc3f my.asp
--------     ------- ---              -------
 483188      371964 23%              5 files


ps命令:命令用於顯示當前程序的狀態,類似於 windows 的工作管理員。

語法

ps [options] [--help]

引數

  • ps 的引數非常多, 在此僅列出幾個常用的引數並大略介紹含義
  • -A 列出所有的程序
  • -w 顯示加寬可以顯示較多的資訊
  • -au 顯示較詳細的資訊
  • -aux 顯示所有包含其他使用者的行程
  • au(x) 輸出格式 :
  • USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
  • USER: 行程擁有者
  • PID: pid
  • %CPU: 佔用的 CPU 使用率
  • %MEM: 佔用的記憶體使用率
  • VSZ: 佔用的虛擬記憶體大小
  • RSS: 佔用的記憶體大小
  • TTY: 終端的次要裝置號碼 (minor device number of tty)
  • STAT: 該行程的狀態:
  • D: 無法中斷的休眠狀態 (通常 IO 的程序)
  • R: 正在執行中
  • S: 靜止狀態
  • T: 暫停執行
  • Z: 不存在但暫時無法消除
  • W: 沒有足夠的記憶體分頁可分配
  • <: 高優先序的行程
  • N: 低優先序的行程
  • L: 有記憶體分頁分配並鎖在記憶體內 (實時系統或捱A I/O)
  • START: 行程開始時間
  • TIME: 執行的時間
  • COMMAND:所執行的指令

例項

# ps -A 顯示程序資訊
PID TTY     TIME CMD
  1 ?    00:00:02 init
  2 ?    00:00:00 kthreadd
  3 ?    00:00:00 migration/0
  4 ?    00:00:00 ksoftirqd/0
  5 ?    00:00:00 watchdog/0
  6 ?    00:00:00 events/0
  7 ?    00:00:00 cpuset
  8 ?    00:00:00 khelper
  9 ?    00:00:00 netns
  10 ?    00:00:00 async/mgr
  11 ?    00:00:00 pm
  12 ?    00:00:00 sync_supers
  13 ?    00:00:00 bdi-default
  14 ?    00:00:00 kintegrityd/0
  15 ?    00:00:02 kblockd/0
  16 ?    00:00:00 kacpid
  17 ?    00:00:00 kacpi_notify
  18 ?    00:00:00 kacpi_hotplug
  19 ?    00:00:27 ata/0
……省略部分結果
30749 pts/0  00:00:15 gedit
30886 ?    00:01:10 qtcreator.bin
30894 ?    00:00:00 qtcreator.bin 
31160 ?    00:00:00 dhclient
31211 ?    00:00:00 aptd
31302 ?    00:00:00 sshd
31374 pts/2  00:00:00 bash
31396 pts/2  00:00:00 ps

顯示指定使用者資訊

# ps -u root //顯示root程序使用者資訊
 PID TTY     TIME CMD
  1 ?    00:00:02 init
  2 ?    00:00:00 kthreadd
  3 ?    00:00:00 migration/0
  4 ?    00:00:00 ksoftirqd/0
  5 ?    00:00:00 watchdog/0
  6 ?    00:00:00 events/0
  7 ?    00:00:00 cpuset
  8 ?    00:00:00 khelper
  9 ?    00:00:00 netns
  10 ?    00:00:00 async/mgr
  11 ?    00:00:00 pm
  12 ?    00:00:00 sync_supers
  13 ?    00:00:00 bdi-default
  14 ?    00:00:00 kintegrityd/0
  15 ?    00:00:02 kblockd/0
  16 ?    00:00:00 kacpid
……省略部分結果
30487 ?    00:00:06 gnome-terminal
30488 ?    00:00:00 gnome-pty-helpe
30489 pts/0  00:00:00 bash
30670 ?    00:00:00 debconf-communi 
30749 pts/0  00:00:15 gedit
30886 ?    00:01:10 qtcreator.bin
30894 ?    00:00:00 qtcreator.bin 
31160 ?    00:00:00 dhclient
31211 ?    00:00:00 aptd
31302 ?    00:00:00 sshd
31374 pts/2  00:00:00 bash
31397 pts/2  00:00:00 ps

顯示所有程序資訊,連同命令列

# ps -ef //顯示所有命令,連帶命令列
UID    PID PPID C STIME TTY     TIME CMD
root     1   0 0 10:22 ?    00:00:02 /sbin/init
root     2   0 0 10:22 ?    00:00:00 [kthreadd]
root     3   2 0 10:22 ?    00:00:00 [migration/0]
root     4   2 0 10:22 ?    00:00:00 [ksoftirqd/0]
root     5   2 0 10:22 ?    00:00:00 [watchdog/0]
root     6   2 0 10:22 ?    /usr/lib/NetworkManager
……省略部分結果
root   31302 2095 0 17:42 ?    00:00:00 sshd: root@pts/2 
root   31374 31302 0 17:42 pts/2  00:00:00 -bash
root   31400   1 0 17:46 ?    00:00:00 /usr/bin/python /usr/sbin/aptd
root   31407 31374 0 17:48 pts/2  00:00:00 ps -ef

kill命令:用於刪除執行中的程式或工作。

語法

kill [-s <資訊名稱或編號>][程式] 或 kill [-l <資訊編號>]

引數說明

  • -l <資訊編號>  若不加<資訊編號>選項,則 -l 引數會列出全部的資訊名稱。
  • -s <資訊名稱或編號>  指定要送出的資訊。
  • [程式]  [程式]可以是程式的PID或是PGID,也可以是工作編號。

例項

殺死程序

# kill 12345

強制殺死程序

# kill -KILL 123456

傳送SIGHUP訊號,可以使用一下訊號

# kill -HUP pid

徹底殺死程序

# kill -9 123456

grep命令:用於查詢檔案裡符合條件的字串。

awk命令:主要看看-F 引數的用法
sed命令:
| 命令:管道,注意管道的用法