Linux有大量的命令行工具,從每天都會(huì)使用的ls、cd以及ps這些工具,到您可能還沒(méi)有使用過(guò),或者甚至沒(méi)有聽(tīng)說(shuō)過(guò)的不常見(jiàn)的工具。
我們將看一下五個(gè)不常見(jiàn),但可以讓您的使用更輕松的工具。我們會(huì)簡(jiǎn)單地看看每一個(gè)命令及其標(biāo)志和參數(shù),但請(qǐng)不要忘了對(duì)每一個(gè)命令使用man命令,去獲取所有可能的標(biāo)志和參數(shù)信息。
logsave
我們將查看的第一個(gè)工具是logsave。logsave命令可以將一個(gè)命令的輸出保存到一個(gè)日志文件中:
$ logsave /var/log/partsize df –h
這里,logsave命令將df命令的輸出保存到/var/log/partsize文件中,同時(shí)會(huì)添加一個(gè)時(shí)間戳并將命令的執(zhí)行結(jié)果輸出到標(biāo)準(zhǔn)輸出。
聽(tīng)起來(lái)并不是那么的有趣,是嗎?logsave特殊的魔力在于,如果文件,在這個(gè)例子中是/var/log/partsize,并不存在,那么
logsave會(huì)在內(nèi)存中將數(shù)據(jù)進(jìn)行排隊(duì),等待該文件的產(chǎn)生。對(duì)于在啟動(dòng)過(guò)程中,當(dāng)您在對(duì)一個(gè)還沒(méi)有掛載上的分區(qū)進(jìn)行寫(xiě)操作時(shí),用logsave去跟蹤命
令的執(zhí)行輸出是非常有用的。為了保存可能會(huì)丟失的命令行輸出,我經(jīng)常在自動(dòng)配置和引導(dǎo)過(guò)程中,使用logsave。
diff3
下一個(gè)工具是diff3命令。您可能已經(jīng)使用過(guò)diff命令去生成文件之間的差異。相對(duì)于diff的兩個(gè)文件,diff3可以對(duì)三個(gè)文件執(zhí)行同樣的功
能,但包括diff中的一些更復(fù)雜的選項(xiàng)。讓我們看一個(gè)簡(jiǎn)單的例子。我們有三個(gè)文件:cat、dog以及mouse,它們各自包含一個(gè)字符串。我們可以用
diff3對(duì)所有的三個(gè)文件進(jìn)行比較:
$ diff3 dog cat mouse
====
1:1c
This is a dog
2:1c
This is a cat
3:1c
This is a mouse
diff3命令顯示了三個(gè)文件中不同的字符串。您也可以用“-”標(biāo)記代表一個(gè)文件。這將會(huì)把標(biāo)準(zhǔn)輸入和其他文件進(jìn)行比較。
您也可以使用-A標(biāo)記,在所有的文件里面,去合并不同,并對(duì)任何沖突之處進(jìn)行高亮顯示。
$ diff3 -A dog cat mouse
1a
||||||| cat
This is a cat
=======
This is a mouse
>>>>>>> mouse
.
0a
<<<<<<< dog
.
pstree
您可能已經(jīng)在您的主機(jī)上,使用過(guò)ps去列出所有的進(jìn)程。但您可能還沒(méi)有聽(tīng)說(shuō)過(guò)pstree——一個(gè)用于以樹(shù)的形式顯示您的進(jìn)程的命令。一個(gè)進(jìn)程或者從
init進(jìn)程,從一個(gè)您可以指定的PID(進(jìn)程ID)分支出來(lái),或者從一個(gè)您可以指定的用戶分支出來(lái)。每一個(gè)進(jìn)程及其子進(jìn)程如下所示:

pstree命令也包括一些您可以使用的命令行標(biāo)志。比如-a標(biāo)志會(huì)顯示進(jìn)程所使用的命令行,而-p標(biāo)志會(huì)在樹(shù)中添加進(jìn)程的進(jìn)程ID。
nl
nl命令很少有人知道,但卻可以執(zhí)行一個(gè)很漂亮的小功能——它在輸出中添加行號(hào)。讓我們看一個(gè)簡(jiǎn)單的例子,對(duì)一個(gè)叫做dog的文件執(zhí)行nl命令。
$ nl dog
1 This is a dog
2 This is not a dog
您可以看到nl獲取了dog文件的內(nèi)容,并在輸出中添加了行號(hào)。然后,您可以將這些輸出通過(guò)管道放到一個(gè)新文件中。
$ nl dog > dog_numbered
然后,我們就可以顯示這個(gè)帶有新的行號(hào)內(nèi)容的文件:
$ cat dog_numbered
1 This is a dog
2 This is not a dog
split
我們要看的最后一個(gè)命令是split。split命令通常基于尺寸將文件分割為多個(gè)片段。我使用這個(gè)命令,去將大的日志文件分割為更好管理的日志片段,例如:
$ split --bytes=1m /tmp/largelogfile /tmp/smallerfile
split命令有根據(jù)字節(jié)數(shù)和行數(shù)對(duì)文件進(jìn)行分割的參數(shù)。這里,我們通過(guò)指定--bytes=1m參數(shù),將大的日志文件分割為1M字節(jié)的塊(您可以指定b去代表字節(jié),k代表千字節(jié),g代表十億字節(jié))。
我們可以像這樣根據(jù)行數(shù)對(duì)文件進(jìn)行分割:
$ split --lines=1000 /tmp/largelogfile /tmp/smallerfile
這里,文件會(huì)被分為多個(gè)1000行的塊。
在我們的例子中,會(huì)將每個(gè)塊都存在/tmp目錄下,其文件名會(huì)包含一個(gè)前綴smallerfile。第一個(gè)文件為smallerfileaa,第二個(gè)是
smallerfileab等等。您也可以使用-d標(biāo)記,去使用數(shù)字而不是通過(guò)字母的增長(zhǎng)來(lái)對(duì)塊進(jìn)行計(jì)數(shù)。最后,除了可以指定一個(gè)文件,您也可以使用
“-”去讓split命令以標(biāo)準(zhǔn)輸入為輸入,并分割為獨(dú)立的文件。
from:
http://www.searchsv.com.cn/showcontent_31396.htm
posted on 2010-03-06 11:26
chatler 閱讀(335)
評(píng)論(0) 編輯 收藏 引用 所屬分類(lèi):
Shell