在本文中,我們將更深入地挖掘 /usr/bin 的隱秘角落,并發現一些更加有趣的寶藏。我們將探索一些獨特而有趣的程序,乍一看可能似乎已經過時,但實際上在今天仍然非常有用。
讓我們重上探險之路,繼續發現 linux 為我們提供的更多精彩之處。
1、fold
首先,我們有一個非常有用的小工具,它可以幫助您將輸入行按照特定的長度進行換行。您可以通過指定字節數或空格數來定義長度。使用 fold 工具,您可以快速處理具有不同長度的文件。
例如,假設我們有一行輸入,長度為六個字符。我們希望將每行限制為只有五個字符,并將剩余部分換行。使用 fold,我們可以使用以下命令實現:
┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ echo "12345678" | fold -w 7
相應的輸出應為:
1234567
8
現在我們可以快速將一些文本符合我們的長度限制。這對于將長文本流分解或對代碼或其他配置文件強制施加行長度限制非常有用。
詳細了解使用 fold 的更多細節,請查看維基頁面。
2、column
這是另一個非常有用的格式化工具。column工具可以幫助您在文本輸出中創建列,甚至生成整個表格,所有這些都可以通過命令行完成。
雖然使用awk等工具也可以實現相同的功能,但 column工具專為此特定用途而設計,因此使用起來非常簡單,而且記住其語法也很容易。
如果我們想根據幾行輸入構建一個簡單的表格,可以執行以下命令:
┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ echo -e "one two threen1 2 3n93139 777777 999999" | column -t
該命令的輸出應如下所示:
one two three
1 2 3
93139 777777 999999
正如您所見,輸出被自動格式化為整齊對齊的列。這在輸出中形成了一個小表格,并且會根據每行輸入的長度自動調整大小。
如果您在命令行上處理稍長的非結構化數據集,并希望快速創建一些表格形式,這個工具將會幫上大忙。
column 的 man 頁面提供了更多用法細節和處理不同輸入的獨特方法。
3、sg
您可能聽說過 newgrp 命令。該命令以其他組的身份執行命令,但是有一種更簡單的實用程序可以實現相同的功能。sg 實用程序允許您使用指定的另一個組的權限直接執行命令。您不需要使用管道或更改現有的 Shell 組,只需指定一個組和一個命令即可。
要使用 sudo 組的權限執行 ls 命令,可以輸入以下命令:
┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ sg sudo ls
這將切換 ls 命令以使用 sudo 組的權限運行。一旦命令執行完畢,您將返回到執行前的正常組權限。
sg 命令對于測試新的組權限或快速切換上下文以從另一個組運行程序非常有幫助。
詳細了解使用信息,請參閱 sg 的 man 頁面。
4、xxd
xxd 實用程序是在 Linux 上執行十六進制轉儲的眾多方法之一。有許多具有類似功能的實用程序,但 xxd 程序略有不同。它的附加優勢在于您可以使用此實用程序進行十六進制的轉儲和還原。還有許多可配置的標志,您還可以對二進制文件執行修補操作。
假設我們想對以下名為 linuxmi 的文件進行十六進制轉儲:
linuxmi
我們只需提供輸入,xxd 將自動將文件編碼到 stdout(對于較短的輸入文件,這是一個很方便的默認功能):
┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ xxd linuxmi
00000000: 6c69 6e75 786d 690a
您還可以通過傳遞一個額外的文件名參數來直接將輸出發送到轉儲文件:
xxd linuxmi 93139
這將將十六進制轉儲發送到名為 93139 的文件中。
xxd 的 man 頁面可以在此處找到。
5、pwdx
這個方便的小實用程序來自于我們都熟悉和喜愛的古老 ps 實用程序家族。pwdx 實用程序可以讓您獲取運行中進程的當前工作目錄。您只需要將進程的 PID 傳遞給它,它就會告訴您該進程的工作目錄在哪里。
假設我們想找出 cron 進程在我們的機器上的工作目錄。首先,我們只需要使用 ps 搜索并找到它的 PID,像這樣:
┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ ps aux | grep cron
在這里,我們可以看到cron的PID是612。現在,我們只需要將該進程的PID傳遞給pwdx來確定其工作目錄,像這樣:
┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ sudo pwdx 691
如下圖:
由于cron是系統進程,您需要使用sudo才能獲取有關它的信息。命令完成后,我們得到了cron的當前工作目錄,即 /var/spool/cron。這可以是一個非常有價值的故障排除工具,特別是當您追蹤目錄范圍問題時。通過使用 pwdx 進行快速檢查,您可以準確地確定一個進程認為它應該從哪個位置運行。
在這里查看 pwdx 的 man 頁面。
6、write
這個強大的小程序可能不會像您一開始想的那樣執行某個特定任務。它在 Linux 中已經存在了幾十年,甚至可以追溯到 1975 年 Unix 的第 6版。
write 實用程序實際上允許您向同一系統上的其他用戶發送消息。您可以針對任何其他登錄的用戶發送消息。提供用戶名,您將進入一個交互式shell,以向他們寫任何您想要的文本。您鍵入的所有內容(包括換行符)都將出現在目標用戶的控制臺上。
這里是一個快速示例:
write <用戶名>
這將使您進入一個交互式控制臺,以向相應的用戶發送消息。請記住,這是一種相當侵入性的與其他用戶通信的方式。這將使他們的終端顯示您輸入的文本,而無需任何警告或提示。對他們來說,這將出現在他們的終端上,就像自動出現的信息一樣。由于這是單向通信,他們也無法回復。
盡管現在有更好的方法來處理用戶之間的消息傳遞,但這是計算歷史的一部分。我相信今天仍然可以有一些創造性的用途。
在這里查看官方的 man 頁面。