作為一個日常在Linux環境下工作的工程師,每天都要大量使用Linux指令行。有時候我們會在網上翻查指令行的使用技巧,但是一旦未能及時進行練習,很快就會把這些小技巧給忘了。是以我決定把這些小東西整理一下,以防止以後再有遺忘的事情發生。
使用指令行的時候,經常可以看到輸出的内容一團糟:太多字元串擠在一起,根本沒法看到底輸出了什麼,不信你就試試 mount 指令。
為了看清楚些,我們可以把輸出轉化為一張表格,隻需要加幾個字元就行了:
mount | column –t:
在這個小例子中,我們用空格把輸出結果隔成了一個表格,整個界面瞬間清楚美觀了很多。如果你不太喜歡空格作為分隔符,你也可以換成其他的,比如換成冒号(:)。
依然非常簡單:隻需要在末尾使用 -s 參數制定一下相應的分割符就可以了:
cat /etc/passwd | column -t -s:
在寫這篇文章之前,我特地搜尋了一下。在 Google 上,很多人都在問如何實作指令重複執行直至成功這個操作。搜尋結果裡提到了 ping 伺服器,一直到它變得空閑位置,或者檢查是不是向某個目錄裡上傳過特定的檔案,再有就是檢查某個指定的連結是否存在之類的方法。
不過你還是有其他選擇,比如使用 while true 循環來把事情搞定:
在上面這個示例中,>/dev/null 2>&1 會讓程式的輸出重定向到 /dev/ null。标準錯誤和标準輸出都會被包含進去。
這是我認為最酷的Linux指令行技巧之一。
ps aux | sort -rnk 4:
ps aux | sort -nk 3:
如果想要檢查你的機器架構,那就執行 getconf LONG_BIT。
大部分人檢視日志用什麼指令?回答可能是 tail 指令。不過如果要檢視很多日志檔案的時候, tail 就顯得比較麻煩了。這個時候就輪到我們的 multi-tail 指令登場了!不僅支援文本高亮顯示,還支援内容過濾和更多的其他功能哦~
有時候你需要安裝一下才能運作這條指令,不過也非常簡單 apt-get install multitail 輕松搞定。
傳回上一個目錄的操作非常簡單, cd – 就可以了。
想要這樣做,那就把設定從 ~/.bashrc 改成 ~/.bash_profile 吧。
使用 watch 指令(watch df -h),你就可以檢視到任何指令的任何輸出。例如,你可以檢視可用空間以及它的使用量增長情況。
通過利用 watch 指令來操作會變化的資料,你可以盡情想象自己能拿這個來做些什麼哦。
正常情況下,你運作了一個背景程式,當你關閉shell會話的時候這個程式也會随之被殺掉。有的情況下需要讓程式繼續運作應該怎麼做?
這個可以用 nohup 指令做到 – 該指令表示不做挂斷操作:
nohup wget site.com/file.zip
這個指令大部分人都不會用,這全拜 screen 環境所賜:
這樣會在同一個目錄下生成一個名稱為 nohup.out 的檔案,其中包含了正在運作的程式的輸出内容:
指令很酷,對吧?
如果你想自動化需要向使用者說的 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]:’ ‘ ’ > out.txt.
可以這樣實作:
cat myfile | tr a-z A-Z> output.txt。
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 指令!
如果你知道一些我在這裡沒有提到的任何其它的極客指令,歡迎評論。