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

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