Linux命令列命令速查手冊(整理)
阿新 • • 發佈:2019-01-06
Linux命令列命令速查手冊
【作者原創】Jan【ls】
2017-02-09 ls命令會列出當前所在目錄的內容 2017-02-09 ls music注 | 想要看看music目錄中有什麼內容,那麼只需要輸入ls命令,後面再跟上你想要檢視其內容的資料夾名稱 |
注 | 使用萬用字元只顯示以.wmv結尾的檔案 |
注 |
使用了萬用字元:只查詢檔名包含tiger這個單詞的檔案 |
注 | -R選項會遞迴地遍歷iso目錄,顯示iso目錄和它的每個子目錄的內容。每個資料夾都以原命令中指定的目錄作為開始,顯示為它們各自相對於該目錄的路徑,路徑名稱後面跟著一個冒號,接著再列出相應子資料夾中的所有內容 |
注 | 用單獨一列的方式來檢視ls命令的結果 |
注 |
-m中的m看作是“,(逗號)”的助記符。 如果你正在編寫指令碼,需要以逗號分隔的列表來表示目錄的內容時,這個選項也很有用。不過,這是這個有價值的選項更為高階的一種用法 |
注 |
檢視這些隱藏檔案,只要使用-a選項 ls -a[a代表all(所有)]命令既能顯示隱藏內容,也能顯示非隱藏內容 |
注 |
檔案後面的“*”(星號)表示該檔案是可執行檔案,“/”(斜槓)表示它是一個目錄。如果檔名後面沒有任何附加符號,那這個檔案就是一個普通的檔案 |
注 |
可以讓shell用不同的顏色顯示內容,這樣就能夠用另一種方法把不同的內容進行分類,將它們區分開來 普通檔案 綠色 可執行檔案 藍色 目錄 紫紅色 符號連結檔案 黃色 管道(FIFO) 紫紅色 套接字(socket) 紅色 壓縮檔案(.tar、.zip、.deb、.rpm) 紫紅色 圖片檔案(.jpg、.gif、.png、.tiff) 紫紅色 音訊檔案(.mp3、.ogg、.wav) |
注 | 統為各種檔案映射了什麼顏色。 |
注 | 命令修改這些顏色配置 |
注 | -l選項代表long,可以看到,它提供了目錄中檔案的大量資料 |
注 |
以相反的順序來排列顯示內容。 -r表示反向,而-R則表示遞迴 |
注 |
對檔案的副檔名進行字母順序的排序。 如果你想按相反的順序排序,只需加上-r選項。 |
注 | 按日期和時間對目錄的內容進行排序,在-l選項的基礎上使用-t選項。 |
注 |
使用-S(或--sort=size)選項按照檔案大小來排序。 體積最大的檔案會排在第一位。要按相反順序排序,讓體積最小的檔案排在第一位,只需使用-r選項。 |
注 | 使用-h(或--human-readable)選項將位元組轉換為相應的千位元組、兆位元組或者吉位元組顯示。 |
【pwd】
2017-02-09 pwd注 | 顯示當前目錄(或工作目錄)的完整的絕對路徑。 |
【cd】
2017-02-09 cd注 |
切換到一個新目錄。 只需輸入cd,後面跟著你想要切換到的目錄。你可以基於當前路徑使用相對路徑(例如,cd src或cd../../);或者使用絕對路徑(例如,cd/tmp或cd/home/scott/bin) |
注 | 立即返回到home目錄。 |
注 |
返回到以前的目錄,然後再執行pwd命令,顯示出新位置。 $ pwd /home/scott $ cd music/new $ pwd /home/scott/music/new $ cd - /home/scott |
【touch】
2017-02-09 touch注 |
建立一個新的空檔案,更新訪問或修改時間。 touch存在的主要目的是更新檔案訪問和修改時間。 如果你只想更新訪問時間,就可以使用-a選項(或--time=access)。如果只想更新修改時間,則使用-m(或--time=modify)。 |
注 |
只要使用這個選項和一定的模式,就可以修改任何日期和時間:-t [[CC]YY]MMDDhhmm[.ss] CC 4位年份數字中的前2位字元 YY 2位數字的年份: ·如果是00~68,則假設年份的前2位數字是20 ·如果是69~99,則假設年份的前2位數字是19 ·如果什麼也沒有,則假設是當前年份 MM 月份(01~12) DD 日期(01~31) hh 小時(01~23) mm 分鐘(00~59) ss 秒(00~59) 完整的4位數字的年份(1970)、月(02)、日期(16)、小時(07)、以及分鐘(01) $ ls -l -rw-r--r-- 239 2005-10-19 14:00 wireless.log $ touch -t 197002160701 wireless.log $ ls -l -rw-r--r-- 239 1970-02-16 07:01 wireless.log $ touch -t 9212310000 wireless.log $ls -l -rw-r--r-- 239 1992-12-31 00:00 wireless.log $ touch -t 3405170234 wireless.log $ ls -l -rw-r--r-- 239 2034-05-17 02:34 wireless.log $ touch -t 10191703 wireless.log $ls -l -rw-r--r-- 239 2005-10-19 17:03 wireless.log |
【mkdir】
2017-02-09 mkdir注 | 建立新的空資料夾,如果要建立的目錄已經存在,命令執行將會失敗,並返回一個警告資訊。 |
注 | 在新的子目錄的新子目錄中再建立一個新的子目錄。 |
注 | 能告訴你mkdir命令所執行的每一步操作,這樣你就不需要再進行實際檢查來確定mkdir命令是否正確完成了任務。 |
【cp】
2017-02-09 cp注 | 將檔案複製到另一個目錄中,甚至可以從非當前工作目錄複製到檔案系統的其他任何目錄。 |
注 |
用萬用字元一次將多個檔案複製到目錄中。精心命名檔案,將非常節約時間,因為這樣你可以準確地指定一組檔案。 可以使用的萬用字元並不只限於“*”。實際上,還可以使用方括號([]),通過匹配“[”和“]”之間的任意字元來更準確地指定你想要複製哪些檔案。 $ cp ~/pix/by_pool*.jpg . $ cp ~/pix/on_floor_0[1-3].jpg . |
注 | 增加-v選項(或--verbose),則可以在cp命令完成複製任務的同時顯示其進度。 |
注 |
如果你需要在使用cp命令覆蓋檔案前得到預警,則可以使用-i選項(或--interactive)。 如果你想繼續並複製這個檔案,輸入y,否則就輸入n。如果你選擇輸入n,並不意味著cp命令會完全停下來,相反,它會詢問你下一個檔案如何處置,再下一個檔案,直至最後。 |
注 | 複製目錄,會自動把目錄下的檔案一併複製。 |
注 |
cp命令也可以作為備份各種檔案和目錄的有效方法。在這種情況下最有用的選項就是-a選項(或--archive)。 -a選項可以確保cp命令不會複製符。 號連結的內容(否則可能會極大地增加複製量),只儲存關鍵的檔案屬性(例如擁有者、時間戳),並遞迴處理子目錄。 |
注 |
mv命令實際上執行了一個cp-a操作,在成功複製檔案後再移除原有的檔案。 用最簡單的話來說,mv命令的作用就是將檔案系統的檔案從一個地方移動到另一個地方。 -v可以在複製和移動檔案時顯示執行過程。 -i在複製和移動檔案時互動式地提示是否覆蓋已經有的檔案。 它也可以用來重新命名檔案。 |
【rm】
2017-02-09 rm注 | 這條命令會徹底地刪除檔案,檔案將不復存在。 |
注 |
知道rm命令執行時到底在做什麼,可以使用-v(或--verbose)選項。 $ pwd /home/scott/libby/by_pool/lieberman_pool $ ls pool_01.jpg pool_03.jpg pool_01.jpg_bak pool_03.jpg_bak $ rm -v *_bak removed 'pool_01.jpg_bak' removed 'pool_03.jpg_bak' $ ls pool_01.jpg pool_03.jpg |
注 |
-i選項(或--interactive)可以提供一定的安全機制。在刪除每個檔案之前,它會先詢問你是否要刪除。當你作為root使用者執行系統的時候,這可是個好東西! 當rm命令詢問你要如何做的時候,y表示同意刪除檔案,n表示忽略這個檔案,並繼續處理下一個檔案。 |
注 |
刪除非空目錄,還有一種更為簡單的方法: 把-R(或--recursive)和-f(或--force)選項結合起來使用。 -r選項告訴rm命令進入到它發現的每個子目錄中去刪除檔案。 -f選項只是告訴rm命令完成任務但不要因為些細節問題(比如資料夾非空)而煩擾使用者。 當作為root登入時,不要輸入rm -Rf /*命令。這樣你將刪除你的系統。你會覺得很糟糕,覺得這樣做很傻。 刪除Cousin Harold.jpg的帶空格的檔名並不太難。只需要將檔案的名稱用雙引號括起來就可以了。 $ rm "cousin harold.jpg" 在有問題的檔名稱的前面放“--”,它會告訴命令:跟在後面的任何東西都不能作為選項,而是檔案或資料夾的名稱。 $ rm -- -cousin_roy.jpg $ rm ./-cousin_roy.jpg |
【su】
2017-02-09 su username注 |
su命令代表“switch user”(切換使用者),並不是大多數人想象的“super user”(超級使用者),能夠讓某個使用者暫時以另一個使用者的身份進行操作。 快速切換使用者。 $ ls /home/scott/libby $ whoami scott $ su gromit Password: $ whoami gromit $ ls /home/scott/libby |
注 | 它只是告訴你你是誰(就shell關心的使用者來說)。這裡用它來檢驗su命令是否按你所期待的那樣工作。 |
注 |
變更到其他使用者,包括其環境變數。 -l選項告訴su命令使用一個登入shell,好像gromit真正登入到機器中一樣。現在你用的是gromit的名字,使用的也是gromit的環境變數,還位於gromit的home目錄(就是gromit初次登入到這臺機器後所在的位置)。 |
注 |
變更成root使用者。 你可以使用su root,或者更好一些,使用su -l root,但是還有一種更快捷的方法: $ whoami scott $ su Password: $ whoami root |
注 |
當使用su -時,不但使用者變更成了root,而且還使用了root的環境變數。 在su後面附加“-”與su -l root的效果相同,但是輸入的字元少一些。 |
【man】
2017-02-09 man ls注 |
假設你想查ls命令的更多資訊,輸入man ls,就會開啟man page(man是manual的縮寫,因此man page就是“手冊頁面”),顯示關於ls命令各個方面的資訊。 一次向下移動一行,使用向下的箭頭鍵;一次向上行一行,使用向上的箭頭鍵。向下翻動一頁,按空格鍵或者f[代表“forward(向前)”];向上翻動一頁,按b鍵[代表“backward(向後)”]。 輸入“/”,後面跟上搜索的詞語,然後按Enter(回車)鍵。如果搜尋的詞語存在,頁面就會跳轉到相應的位置;如果要跳轉到下一個搜尋結果,再按一次Enter鍵(或者n鍵),然後一直按Enter鍵(或者n鍵)以便在螢幕上檢視找到的每個搜尋資訊;按Shift+n,返回。 |
注 |
假設你對命令能完成的功能有點了解,但不知道命令的實際名稱,該怎麼辦呢?這時可以試試-k選項(或--apropos),搜尋一個描述你想找的那種命令的詞或短語。 $ man -k list last (1) - show listing of last logged in users ls (1) - list directory contents lshal (1) - List devices and their properties lshw (1) - list hardware lsof (8) - list open files [Listing condensed due to length] |
注 |
使用-f選項(或--whatis),就可以看到這個命令的簡單說明。 $ man -f ls ls (1) - list directory contents |
注 | man命令偶爾可能會報告並沒有該命令的頁面。在放棄查詢之前,還可以再試試-u選項(或--update),這個選項強制man命令重建它使用的命令資料庫和man page。 |
注 |
要檢視passwd檔案特定的man page,需要為man命令提供你想檢視的資料所屬於的區段序號。 $ man 5 passwd (1)普通命令,如cd、chmod、lp、mkdir和passwd。 (2)由核心提供的底層系統呼叫,如intro和chmod。 (3)C庫函式,如beep、HTML::Parser和Mail::Internet。 (4)特殊檔案,如/dev中找到的裝置,包括控制檯(console)、印表機(lp)和滑鼠(mouse)。 (5)檔案格式和約定,如apt.conf、dpkg.cfg、hosts和passwd。 (6)遊戲,如atlantik、bouncingcow、kmahjongg和rubik。 (7)雜項,包括巨集包(macro package)。如ascii、samba和utf-8。 (8)root使用者使用的系統管理命令,如mount和shutdown。 |
注 |
$ man -t ls | lpr -P hp_laserjet 假設有一臺印表機已經連線到系統中,並將它標記為hp_laserjet。要將ls命令的man page直接用這個印表機列印,就需要使用-t選項(或--troff),再通過管道(pipe)輸出至lpr命令,並在lpr命令中用-P選項來標識相應的印表機。 $ man -t ls > ls.ps && ps2pdf ls.ps && rm ls.ps 如果處理過程成功完成,就可以使用ps2pdf命令將PostScript檔案轉換為PDF檔案。轉換正常完成後,可以刪除掉原來的PostScript檔案,因為不再需要它了。 |
【info】
2017-02-09 info注 |
Info頁面,它使用Info命令檢視。 $ info info 這就打開了info命令的Info頁面。 如果想一次向下移動一個頁面,可以使用鍵盤的PageDown鍵;一次向上移動一個頁面,則使用PageUp鍵。但是你不能離開所在的特定區段。 如果到達區段的底部時想跳回到頂端,只需要按b(代表beginning)就能夠回到開始的位置。同樣,按e(代表end)則是跳回到底部。 可以使用空格鍵向下翻頁。 如果在Info中迷失方向,需要幫助,只需要隨時按“?”鍵,視窗的下半部分就會顯示Info的各種選項。可以使用前面學過的鍵盤操作來上下移動。要退出幫助,按l。 最後,或許也是最重要的一點,要完全退出Info,只需要按q(表示quit),就能夠返回到shell中。 |
注 |
檢視命令的可執行程式、它的原始檔(如果存在的話)及其man page的路徑。 $ whereis kword kword: /usr/src/koffice-1.4.1/kword /usr/bin/kword/usr/bin/X11/kword usr/share/man/man1/kword.1.gz whereis命令首先報告原始檔的位置/usr/src/koffice-1.4.1/kword。接著報告任何可二進位制可執行檔案的位置/usr/bin/kword和/usr/bin/X11/kword。在這臺計算機的兩個位置都能找到KWord,雖然有些不尋常但還不算奇怪。最後找到的是man page的位置/usr/share/man/man1/kword.1.gz。 如果只想搜尋二進位制檔案,可以使用-b選項,如下所示: $ whereis -b kword kword: /usr/bin/kword /usr/bin/X11/kword 如果只想搜尋man page,使用-m選項,如下所示: $ whereis -m kword kword: /usr/share/man/man1/kword.1.gz 最後,如果只想搜尋原始檔,可以嘗試-s選項,如下所示: $ whereis -s kword kword: /usr/src/koffice-1.4.1/kword whereis命令是一種非常好用的快捷方法,可以找到你正在使用的計算機中程式的重要資訊。你會發現它的用處超乎你的想象。 |
注 |
顯示命令的man page的描述。 $ man -f ls ls (1) - list directory contents $ whatis ls ls (1) - list directory contents $ whatis -w ls* ls (1) - list directory contentslsb (8) - Linux Standard Base support for Debian lshal (1) - List devices and their properties lshw (1) - list hardware lskat (6) - Lieutnant Skat card game for KDE [Listing condensed due to length] whatis命令便於記憶(至少要比man -f更容易),而且它還能快速返回一些重要資訊,因此一定要記住它。 |
注 |
與man -k類似。這兩個命令都能夠在man page中搜索命令的名稱和描述,當你只記得命令的功能而不記得具體名稱時,就可以為你提供幫助。 $ man list No manual entry for list $ man -k list last (1) - show listing of last logged in users ls (1) - list directory contents lshw (1) - list hardware lsof (8) - list open files [Listing condensed due to length] $ apropos list last (1) - show listing of last logged in users ls (1) - list directory contents lshw (1) - list hardware lsof (8) - list open files [Listing condensed due to length] 如果只想密切關注某個詞或者短語,沒有任何其他內容,則可以使用-e選項(或--exact)。 $ apropos -e list ls (1) - list directory contents lshw (1) - list hardware lsof (8) - list open files [Listing condensed due to length] |
注 |
$ which kword /usr/bin/kword 只要輸入命令的名稱,which命令就能告訴你這個命令的哪個版本將會執行。換句話說,如果你輸入kword,然後按Enter鍵,shell將會執行/usr/bin目錄下找到的kword程式。 which命令也是一種快速判斷系統中是否存在特定命令的方法。 如果要查詢命令的所有位置(就像使用whereis -b一樣),則可以使用-a(表示all)選項。 $ which -a kword /usr/bin/kword /usr/bin/X11/kword |
【特殊符號】
2017-02-09 ;注 |
命令棧(command stacking)可以解決這一問題。 命令棧是將所有需要執行的命令放到shell的一行上,再用分號(;)隔開每個具體的命令。接著依次順序執行每個命令,只有一個命令結束執行(無論成功或失敗),才會執行下一個命令。 $ ls -l /home/scott/music -rw-r--r-- 1437931 2005-11-07 17:19 JohnColtrane.zip $ unzip /home/scott/music/JohnColtrane.zip ; →mkdir -p /home/scott/music/coltrane ; →mv /home/scott/music/JohnColtrane*.mp3 →/home/scott/music/coltrane/ ; →rm /home/scott/music/JohnColtrane.zip |
注 |
【只有前面的命令執行成功,才執行下一個命令】 分隔命令的一個更好的辦法就是用&&,它同樣也是依次順序執行每個命令,但只有當前面一條命 |