在本文中,我們將更深入地挖掘 /usr/bin 的隱秘角落,并發(fā)現(xiàn)一些更加有趣的寶藏。我們將探索一些獨(dú)特而有趣的程序,乍一看可能似乎已經(jīng)過時(shí),但實(shí)際上在今天仍然非常有用。 讓我們重上探險(xiǎn)之路,繼續(xù)發(fā)現(xiàn) Linux 為我們提供的更多精彩之處。
1、fold
首先,我們有一個(gè)非常有用的小工具,它可以幫助您將輸入行按照特定的長度進(jìn)行換行。您可以通過指定字節(jié)數(shù)或空格數(shù)來定義長度。使用 fold 工具,您可以快速處理具有不同長度的文件。 例如,假設(shè)我們有一行輸入,長度為六個(gè)字符。我們希望將每行限制為只有五個(gè)字符,并將剩余部分換行。使用 fold,我們可以使用以下命令實(shí)現(xiàn):
┌──(linuxmi?linuxmi)-[~/www.linuxmi.com] └─$ echo "12345678" | fold -w 7相應(yīng)的輸出應(yīng)為:
1234567 8現(xiàn)在我們可以快速將一些文本符合我們的長度限制。這對(duì)于將長文本流分解或?qū)Υa或其他配置文件強(qiáng)制施加行長度限制非常有用。 詳細(xì)了解使用 fold 的更多細(xì)節(jié),請(qǐng)查看維基頁面。
2、column
這是另一個(gè)非常有用的格式化工具。column工具可以幫助您在文本輸出中創(chuàng)建列,甚至生成整個(gè)表格,所有這些都可以通過命令行完成。 雖然使用awk等工具也可以實(shí)現(xiàn)相同的功能,但 column工具專為此特定用途而設(shè)計(jì),因此使用起來非常簡單,而且記住其語法也很容易。 如果我們想根據(jù)幾行輸入構(gòu)建一個(gè)簡單的表格,可以執(zhí)行以下命令:
┌──(linuxmi?linuxmi)-[~/www.linuxmi.com] └─$ echo -e "one two three 1 2 3 93139 777777 999999" | column -t該命令的輸出應(yīng)如下所示:
one two three 1 2 3 93139 777777 999999正如您所見,輸出被自動(dòng)格式化為整齊對(duì)齊的列。這在輸出中形成了一個(gè)小表格,并且會(huì)根據(jù)每行輸入的長度自動(dòng)調(diào)整大小。 如果您在命令行上處理稍長的非結(jié)構(gòu)化數(shù)據(jù)集,并希望快速創(chuàng)建一些表格形式,這個(gè)工具將會(huì)幫上大忙。 column 的 man 頁面提供了更多用法細(xì)節(jié)和處理不同輸入的獨(dú)特方法。
3、sg
您可能聽說過 newgrp 命令。該命令以其他組的身份執(zhí)行命令,但是有一種更簡單的實(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ì)于測試新的組權(quán)限或快速切換上下文以從另一個(gè)組運(yùn)行程序非常有幫助。
4、xxd
xxd 實(shí)用程序是在 Linux 上執(zhí)行十六進(jìn)制轉(zhuǎn)儲(chǔ)的眾多方法之一。有許多具有類似功能的實(shí)用程序,但 xxd 程序略有不同。它的附加優(yōu)勢在于您可以使用此實(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您還可以通過傳遞一個(gè)額外的文件名參數(shù)來直接將輸出發(fā)送到轉(zhuǎn)儲(chǔ)文件:
xxd linuxmi 93139這將將十六進(jìn)制轉(zhuǎn)儲(chǔ)發(fā)送到名為 93139 的文件中。 xxd 的 man 頁面可以在此處找到。
5、pwdx
這個(gè)方便的小實(shí)用程序來自于我們都熟悉和喜愛的古老 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。現(xiàn)在,我們只需要將該進(jìn)程的PID傳遞給pwdx來確定其工作目錄,像這樣:
┌──(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)您追蹤目錄范圍問題時(shí)。通過使用 pwdx 進(jìn)行快速檢查,您可以準(zhǔn)確地確定一個(gè)進(jìn)程認(rèn)為它應(yīng)該從哪個(gè)位置運(yùn)行。 在這里查看 pwdx 的 man 頁面。
6、write
這個(gè)強(qiáng)大的小程序可能不會(huì)像您一開始想的那樣執(zhí)行某個(gè)特定任務(wù)。它在 Linux 中已經(jīng)存在了幾十年,甚至可以追溯到 1975 年 Unix 的第 6版。 write 實(shí)用程序?qū)嶋H上允許您向同一系統(tǒng)上的其他用戶發(fā)送消息。您可以針對(duì)任何其他登錄的用戶發(fā)送消息。提供用戶名,您將進(jìn)入一個(gè)交互式shell,以向他們寫任何您想要的文本。您鍵入的所有內(nèi)容(包括換行符)都將出現(xiàn)在目標(biāo)用戶的控制臺(tái)上。 這里是一個(gè)快速示例:
write <用戶名>這將使您進(jìn)入一個(gè)交互式控制臺(tái),以向相應(yīng)的用戶發(fā)送消息。請(qǐng)記住,這是一種相當(dāng)侵入性的與其他用戶通信的方式。這將使他們的終端顯示您輸入的文本,而無需任何警告或提示。對(duì)他們來說,這將出現(xiàn)在他們的終端上,就像自動(dòng)出現(xiàn)的信息一樣。由于這是單向通信,他們也無法回復(fù)。 盡管現(xiàn)在有更好的方法來處理用戶之間的消息傳遞,但這是計(jì)算歷史的一部分。我相信今天仍然可以有一些創(chuàng)造性的用途。
-
Linux
+關(guān)注
關(guān)注
87文章
11345瀏覽量
210395 -
程序
+關(guān)注
關(guān)注
117文章
3795瀏覽量
81411 -
代碼
+關(guān)注
關(guān)注
30文章
4826瀏覽量
69052
原文標(biāo)題:有趣的寶藏!6 個(gè)你獨(dú)特而驚人的 Linux 實(shí)用工具
文章出處:【微信號(hào):良許Linux,微信公眾號(hào):良許Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論