最實用的 Linux 命令行使用技巧

Linux愛好者2017-08-25 07:08:23

(點擊上方公眾號,可快速關注)


英文:Seco Max,翻譯:開源中國/leoxu

www.oschina.net/translate/most-useful-linux-command-line-tricks

如有好文章投稿,請點擊 → 這裏瞭解詳情


我們可能每天都會要使用到很多的 Linux 命令行。 我們也會網絡上知曉一些使用它們的小技巧,但是如果我們沒有時常來進行練習,就有可能會忘掉怎麼去使用它們。 所以我就決定把那些你可能會忘記的小提示和小技巧,或者對你而言可能是全新的東西都列表來。


將輸出內容以表格的形式顯示出來


有時,在你看到命令行執行的輸出時,因為字符串過度擁擠(比如説 mount 命令的輸出)導致輸出內容難以識別。如果我們看到的內容是一張表格會如何呢?其實這是很容易做到的!


mount | column –t:



在此例中,由於內容中留了空格,所以輸出的形式就美觀了起來。 那如果想要的分隔符是別的什麼符號,比如説冒號,又該怎麼去做呢? (例如,在 cat/etc/passwd 的輸出內容中使用)


這時候只需要使用 -s 參數指定分隔符就行了,像下面這樣。


cat /etc/passwd | column -t -s:



重複執行一個命令,直到它運行成功


如果在 Google 上搜索這個功能,你會發現很多人都問到了如何重複執行命令,直到這個命令成功返回並且運行正常。 Google上的建議裏就包括 ping 服務器,直到它變得空閒為止,還有就是檢查是否有向特定的目錄上傳了具有特定擴展名的文件,還有就是檢查特定的URL是否已經存在,諸如此類的辦法。


其實你還可以使用 while true 的循環來實現來實現這個功能:



在上面這個示例中,>/dev/null 2>&1 會讓程序的輸出重定向到 /dev/ null。標準錯誤和標準輸出都會被包含進去。


這是我認為最酷的Linux命令行技巧之一。


按內存資源的使用量對進程進行排序


ps aux | sort -rnk 4:



按 CPU 資源的使用量對進程進行排序


ps aux | sort -nk 3:



如果想要檢查你的機器架構,那就執行 getconf LONG_BIT。


可以同時查看多個日誌文件


毫無疑問,你可能已經會使用 tail  命令來查看日誌文件了,但可能有時候你還想着能同時查看多個日誌文件。 使用 multi-tail 命令就支持支持文本的高亮顯示,內容過濾以及更多你可能需要的功能:



如果系統裏還沒有這個命令,運行 apt-get install multitail 命令就可以把它給裝上。


回到你操作過的上一個目錄去


只需敲入 cd – 就會返回到你操作過的上一個目錄中去。


讓非交互式 Shell 會話可進行交互


想要這樣做,那就把設置從 ~/.bashrc 改成 ~/.bash_profile 吧。


定時的監視性命令輸出


使用 watch 命令(watch df -h),你就可以查看到任何命令的任何輸出。例如,你可以查看可用空間以及它的使用量增長情況。


通過利用 watch 命令來操作會變化的數據,你可以盡情想象自己能拿這個來做些什麼哦。


在會話關掉以後繼續運行程序


如果你在後台運行了什麼程序,然後你關掉了的 shell 會話,那麼這個後台運行的程序就會被你的 shell 殺掉。關閉 shell 以後怎麼讓程序繼續運行下去呢?


這個可以用 nohup 命令做到 – 該指令表示不做掛斷操作:


nohup wget site.com/file.zip


此命令是最容易被遺忘的 Linux 命令行技巧之一,因為我們許多人都會使用另外一個類命令的 screen 環境:



這樣會在同一個目錄下生成一個名稱為 nohup.out 的文件,其中包含了正在運行的程序的輸出內容:



命令很酷,對吧?


自動對任何命令回答 Yes 或者 No


如果你想自動化需要向用户説的 Yes 的過程,可以使用 yes 命令來實現:yes | apt-get update。


也許你想做的是自動地説“No”。這個可以使用 yes no | 命令來實現。



創建具有指定大小的文件


可以使用 dd 命令來創建出具有指定大小的文件:dd if=/dev/zero of=out.txt bs=1M count=10。


這樣就會創建出一個 10 MB 的文件,填充零作為內容:



以根目錄用户來運行最後一個命令


有時,你會忘記在需要 root 權限的命令之前敲入 sudo。這時候你沒必要去重寫命令; 只要輸入 sudo !! 就行了。



對命令行會話進行記錄


如果想要把自己在 shell 屏幕上敲的內容記錄下來,可以使用 script 命令將所有敲寫的內容保存到一個名為 typescriptscript 的文件中去。


等你敲入 exit 命令以後,所有命令就都會被寫入該文件,以便你事後再回過頭去查看。


用標籤符號替換空格符


可以使用 tr 命令替換任何字符,這個用起來非常方便:cat geeks.txt | tr ‘:[space]:’ ‘\t’ > out.txt.



將文件內容轉換為大寫或者小寫


可以這樣實現:cat myfile | tr a-z A-Z> output.txt。


強大的 Xargs 命令


xargs 命令是最重要的 Linux 命令行技巧之一。你可以使用這個命令將命令的輸出作為參數傳遞給另一個命令。例如,搜索 png 文件然後對其進行壓縮或者其它操作:


find. -name *.png -type f -print | xargs tar -cvzf images.tar.gz


又或者你的文件中有一個 URL 的列表,而你想要做的是以不同的方式下載或者處理這些 URL,可以這樣做:


cat urls.txt | xargs wget




請你要記得,第一個命令的輸出會在 xargs 命令結尾處傳遞。


那如果命令需要中間過程的輸出,該怎麼辦呢?這個簡單!


只需要使用 {} 並結合 -i 參數就行了。如下所示,替換在第一個命令的輸出應該去的地方的參數:


ls /etc/*.conf | xargs -i cp {} /home/likegeeks/Desktop/out


這只是 Linux 命令行技巧其中的幾個而已。你可以使用其他命令來做一些更 HAPPY 的事情,比如 awk 命令和 sed 命令!


如果你知道一些我在這裏沒有提到的任何其它的極客命令,歡迎評論。



看完本文有收穫?請分享給更多人

關注「Linux 愛好者」,提升Linux技能

閲讀原文

TAGS:命令可以使用使用