有趣的寶藏!六個(gè)獨(dú)特而驚人的 Linux 實(shí)用工具
在本文中,我們將更深入地挖掘 /usr/bin 的隱秘角落,并發(fā)現(xiàn)一些更加有趣的寶藏。我們將探索一些獨(dú)特而有趣的程序,乍一看可能似乎已經(jīng)過(guò)時(shí),但實(shí)際上在今天仍然非常有用。
讓我們重上探險(xiǎn)之路,繼續(xù)發(fā)現(xiàn) Linux 為我們提供的更多精彩之處。
1、fold
首先,我們有一個(gè)非常有用的小工具,它可以幫助您將輸入行按照特定的長(zhǎng)度進(jìn)行換行。您可以通過(guò)指定字節(jié)數(shù)或空格數(shù)來(lái)定義長(zhǎng)度。使用 fold 工具,您可以快速處理具有不同長(zhǎng)度的文件。
例如,假設(shè)我們有一行輸入,長(zhǎng)度為六個(gè)字符。我們希望將每行限制為只有五個(gè)字符,并將剩余部分換行。使用 fold,我們可以使用以下命令實(shí)現(xiàn):
┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ echo "12345678" | fold -w 7相應(yīng)的輸出應(yīng)為:
1234567
8
現(xiàn)在我們可以快速將一些文本符合我們的長(zhǎng)度限制。這對(duì)于將長(zhǎng)文本流分解或?qū)Υa或其他配置文件強(qiáng)制施加行長(zhǎng)度限制非常有用。
詳細(xì)了解使用 fold 的更多細(xì)節(jié),請(qǐng)查看維基頁(yè)面。
2、column
這是另一個(gè)非常有用的格式化工具。column工具可以幫助您在文本輸出中創(chuàng)建列,甚至生成整個(gè)表格,所有這些都可以通過(guò)命令行完成。
雖然使用awk等工具也可以實(shí)現(xiàn)相同的功能,但 column工具專(zhuān)為此特定用途而設(shè)計(jì),因此使用起來(lái)非常簡(jiǎn)單,而且記住其語(yǔ)法也很容易。
如果我們想根據(jù)幾行輸入構(gòu)建一個(gè)簡(jiǎn)單的表格,可以執(zhí)行以下命令:
┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ echo -e "one two three\n1 2 3\n93139 777777 999999" | column -t該命令的輸出應(yīng)如下所示:
one    two     three
1      2       3
93139  777777  999999
正如您所見(jiàn),輸出被自動(dòng)格式化為整齊對(duì)齊的列。這在輸出中形成了一個(gè)小表格,并且會(huì)根據(jù)每行輸入的長(zhǎng)度自動(dòng)調(diào)整大小。
如果您在命令行上處理稍長(zhǎng)的非結(jié)構(gòu)化數(shù)據(jù)集,并希望快速創(chuàng)建一些表格形式,這個(gè)工具將會(huì)幫上大忙。
column 的 man 頁(yè)面提供了更多用法細(xì)節(jié)和處理不同輸入的獨(dú)特方法。
3、sg
您可能聽(tīng)說(shuō)過(guò) newgrp 命令。該命令以其他組的身份執(zhí)行命令,但是有一種更簡(jiǎn)單的實(shí)用程序可以實(shí)現(xiàn)相同的功能。sg 實(shí)用程序允許您使用指定的另一個(gè)組的權(quán)限直接執(zhí)行命令。您不需要使用管道或更改現(xiàn)有的 Shell 組,只需指定一個(gè)組和一個(gè)命令即可。
要使用 sudo 組的權(quán)限執(zhí)行 ls 命令,可以輸入以下命令:
┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ sg sudo ls
這將切換 ls 命令以使用 sudo 組的權(quán)限運(yùn)行。一旦命令執(zhí)行完畢,您將返回到執(zhí)行前的正常組權(quán)限。
sg 命令對(duì)于測(cè)試新的組權(quán)限或快速切換上下文以從另一個(gè)組運(yùn)行程序非常有幫助。
詳細(xì)了解使用信息,請(qǐng)參閱 sg 的 man 頁(yè)面。
4、xxd
xxd 實(shí)用程序是在 Linux 上執(zhí)行十六進(jìn)制轉(zhuǎn)儲(chǔ)的眾多方法之一。有許多具有類(lèi)似功能的實(shí)用程序,但 xxd 程序略有不同。它的附加優(yōu)勢(shì)在于您可以使用此實(shí)用程序進(jìn)行十六進(jìn)制的轉(zhuǎn)儲(chǔ)和還原。還有許多可配置的標(biāo)志,您還可以對(duì)二進(jìn)制文件執(zhí)行修補(bǔ)操作。
假設(shè)我們想對(duì)以下名為 linuxmi 的文件進(jìn)行十六進(jìn)制轉(zhuǎn)儲(chǔ):
linuxmi我們只需提供輸入,xxd 將自動(dòng)將文件編碼到 stdout(對(duì)于較短的輸入文件,這是一個(gè)很方便的默認(rèn)功能):
┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ xxd linuxmi
00000000: 6c69 6e75 786d 690a
您還可以通過(guò)傳遞一個(gè)額外的文件名參數(shù)來(lái)直接將輸出發(fā)送到轉(zhuǎn)儲(chǔ)文件:
xxd linuxmi 93139
這將將十六進(jìn)制轉(zhuǎn)儲(chǔ)發(fā)送到名為 93139 的文件中。
xxd 的 man 頁(yè)面可以在此處找到。
5、pwdx
這個(gè)方便的小實(shí)用程序來(lái)自于我們都熟悉和喜愛(ài)的古老 ps 實(shí)用程序家族。pwdx 實(shí)用程序可以讓您獲取運(yùn)行中進(jìn)程的當(dāng)前工作目錄。您只需要將進(jìn)程的 PID 傳遞給它,它就會(huì)告訴您該進(jìn)程的工作目錄在哪里。
假設(shè)我們想找出 cron 進(jìn)程在我們的機(jī)器上的工作目錄。首先,我們只需要使用 ps 搜索并找到它的 PID,像這樣:
┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ ps aux | grep cron
在這里,我們可以看到cron的PID是612?,F(xiàn)在,我們只需要將該進(jìn)程的PID傳遞給pwdx來(lái)確定其工作目錄,像這樣:
┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ sudo pwdx 691如下圖:

由于cron是系統(tǒng)進(jìn)程,您需要使用sudo才能獲取有關(guān)它的信息。命令完成后,我們得到了cron的當(dāng)前工作目錄,即 /var/spool/cron。這可以是一個(gè)非常有價(jià)值的故障排除工具,特別是當(dāng)您追蹤目錄范圍問(wèn)題時(shí)。通過(guò)使用 pwdx 進(jìn)行快速檢查,您可以準(zhǔn)確地確定一個(gè)進(jìn)程認(rèn)為它應(yīng)該從哪個(gè)位置運(yùn)行。
在這里查看 pwdx 的 man 頁(yè)面。
6、write
這個(gè)強(qiáng)大的小程序可能不會(huì)像您一開(kāi)始想的那樣執(zhí)行某個(gè)特定任務(wù)。它在 Linux 中已經(jīng)存在了幾十年,甚至可以追溯到 1975 年 Unix 的第 6版。
write 實(shí)用程序?qū)嶋H上允許您向同一系統(tǒng)上的其他用戶(hù)發(fā)送消息。您可以針對(duì)任何其他登錄的用戶(hù)發(fā)送消息。提供用戶(hù)名,您將進(jìn)入一個(gè)交互式shell,以向他們寫(xiě)任何您想要的文本。您鍵入的所有內(nèi)容(包括換行符)都將出現(xiàn)在目標(biāo)用戶(hù)的控制臺(tái)上。
這里是一個(gè)快速示例:
write <用戶(hù)名>這將使您進(jìn)入一個(gè)交互式控制臺(tái),以向相應(yīng)的用戶(hù)發(fā)送消息。請(qǐng)記住,這是一種相當(dāng)侵入性的與其他用戶(hù)通信的方式。這將使他們的終端顯示您輸入的文本,而無(wú)需任何警告或提示。對(duì)他們來(lái)說(shuō),這將出現(xiàn)在他們的終端上,就像自動(dòng)出現(xiàn)的信息一樣。由于這是單向通信,他們也無(wú)法回復(fù)。
盡管現(xiàn)在有更好的方法來(lái)處理用戶(hù)之間的消息傳遞,但這是計(jì)算歷史的一部分。我相信今天仍然可以有一些創(chuàng)造性的用途。
在這里查看官方的 man 頁(yè)面。















 
 
 












 
 
 
 