15 個鮮為人知的 Unix 命令
每個開發人員都應該有在終端操作的能力。你不可能總在你要操作的電腦旁邊,這時你就得遠程登錄那臺機器。雖然有些圖形界面應用可以幫助我們實現遠程作業,但是它的速度沒有通過終端訪問快(畢竟,它只是一些文字交流!)。
不管你是終端用戶新手還是有經驗的老用戶,我肯定你一定喜歡學習新技術和技巧。在這篇文章里面,我將會介紹15個你你可能還未聽說過的Unix命令。
注意:在這篇文章中,我將使用方括號來標識任何變量。當你運行命令時,你應該用去掉方括號,用實際的值替換它。例如我們第一個例子, man [command] 可以這樣用 man cd 或者 man grep。
1. man
我們以一個簡單的例子開始。man命令代表“manual”,手冊的意思。如果你想了解任何Unix命令,你可以運行下面的命令:
mman [command]
最簡單的使用例子是用man來查看man命令自己的使用手冊:
man man
man命令本身未必是一個鮮為人知的命令,你能在任何Unix教程中看到它。然而,我想強調它在那些在常規教程中很少見的特殊用法。
如果你需要知道ASCII字符,試試這個:
man ascii
是否曾經對pico-和femto-哪個更小而感到困惑?試試下面的命令來獲取有關unit前綴的信息:
man units
有很多這樣的手冊頁面,它們有些真的也很有趣(Tip:試試 man xkill),我讓你自己去玩它。同時,我們將繼續介紹其它更多的命令。
2. cd -
如果你在一個目錄里面工作,突然切換到另外一個目錄中去了,有一個方法讓你輕松的回到剛才的工作目錄。運行下面的命令即可回到剛剛的工作目錄:
cd -
3. sudo !!
由XKCD創作的這幅漫畫強調了sudo命令在Unix系統中的重要性。sudo 以管理員的權限運行命令,用戶也被添加到 sudo用戶組。
假設你運行一個沒帶 sudo 前綴的命令,如果你不想再次輸入這個相同的命令,你可以運行下面的命令來運行最近一次運行的命令。
sudo !!
4. mtr
mtr 是一個強大的網絡診斷工具。它結合了 traceroute 和 ping 這兩個命令的功能
mtr [hostname]
mtr檢測運行mtr這臺機子與遠程主機之間的網絡連接,這里有關于mtr的詳細說明,列舉了mtr的全部擴展命令。
5. [space] command
經常使用終端的用戶可能知道他們運行過的每個命令都會記載在日志文件~/.bash_history里面。可以用下面的命令來跳過運行命令是被日志記載:
[space] [command]
6. jot
正如其名所示,jot的為generates some text,包括從數字到字符以及一些亂碼。如果你想生成一定范圍內的數字,可運行下面的命令:
jot [number_of_numbers] [starting_number]
如果你只提供一個參數,它將會生成從1到這個數字之間的數字。
-r 參數可生成隨機數,語法如下:
jot -r [number_of_numbers] [lower_limit] [upper_limit]
-b 參數可重復給定的單詞。了解更多參數列表,你可以運行 man jot, 或者看這個文檔。
7. df
一個相對簡單的命令,df 代表“disk free”,并顯示你的磁盤空閑的空間。
8. pkill
pkill 也就是”process kill”,終止一個運行的進程。當一個應用沒反應的時候,這個命令非常有用。語法:
pkill [application_name]
pkiil的一個有趣的使用情況是你可以遠程登錄別人正在使用的計算機,檢查別人在運行的應用,并執行 pkill命令來終止那些進程,而當他們在四周盼望是誰在惡作劇的時候,你裝作沒什么事發生一樣。當然,你應該確認它不是關鍵應用,并且不會有很大的損失。
9. ddate
Discordian calendar 是一個備用日歷,用 1YOLD表示1166BC。ddate 可以顯示Discordian date。
10. cal
如果你想查看老的Gregorian日歷,使用 cal即可查看當月月份的日歷。
這只是默認的顯示,. 這個cal手冊 列出了不同的可選項參數,可以按不同的樣式顯示更多的月份。
11. tac
你可能聽說過 cat命令,它有一系列用途,包括creating、copying、merging 和 displaying 文本文件。tac 命令可以做同樣的工作,但是它是以相反的順序!瞧一瞧。
12. w
w 命令可以顯示當前誰登陸到了你的系統。它列出了用戶登陸日志,以及更多的像系統加載和運行的信息。
13. factor
如果你想分解一個數字,不需要其它的工作,僅運行下面的命令即可獲得一個數字的質因數分解。
factor [number]
14. yes
在來一個有趣的命令,yes 命令將一個字符串打印很多次。
yes [string]
如果你沒有提供一個字符串,它遞歸打印“y”,直達你停止這個命令。這個函數打印字符的速度太快了,以至于我無法在同一屏模式截取這個命令的輸出。如果你正在做一些事情,恰巧有人經過,你可以運行 yes 來迷糊他們,前提是他們對shell編程了解比較少。
注意,如果你要運行這個命令,你應該知道僅有的停止命令的方法:按 CTRL+C/CMD+C 或者關閉終端。
15. nl
nl命令附件了列數到文本。它最適合用于傳遞其他命令的輸出作為參數。另外一個函數的輸出使用”|“來作為參數傳遞。看下面兩個例子:
By: CodeCloud翻譯小組
轉載請注明來源:程序員的資料庫 :15 個鮮為人知的 Unix 命令