使用合適的命令,你可以快速了解 Linux 系統(tǒng)上使用的命令以及執(zhí)行的頻率。
匯總 Linux 系統(tǒng)上使用的命令只需一串相對(duì)簡(jiǎn)單的命令以及幾條管道將它們綁定在一起。當(dāng)你的歷史記錄緩沖區(qū)保留了最近的 1,000 或 2,000 條命令時(shí),總結(jié)你的命令活動(dòng)可能會(huì)變得很乏味。這篇文章提供了一種方便的方法來匯總命令的使用情況,并高亮顯示最常用的命令。
首先,請(qǐng)記住,典型的命令歷史記錄可能看起來像這樣。請(qǐng)注意,命令是顯示在命令序列號(hào)之后,并緊跟其參數(shù)。
91 sudo apt-get install ccrypt
^
+-- command
請(qǐng)注意,history 命令遵循 HISTSIZE 的設(shè)置,這會(huì)決定保留多少條命令??赡苁?500、1,000 或更多。如果你不喜歡它的設(shè)置,那么可以在 .bashrc 或其他啟動(dòng)文件中添加或更改 HISTSIZE 設(shè)置。
$ echo $HISTSIZE
1000
$ history | wc -l
1000
$ grep HISTSIZE ~/.bashrc
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
記下大量命令的主要好處之一是,它可以讓你輕松地重新運(yùn)行過去使用的命令,而不必重新輸入或記住它們。它還能讓你輕松地查看你在一個(gè)任務(wù)中已經(jīng)做了多少工作。單獨(dú)使用 history 命令時(shí),你會(huì)看到類似下面這樣,最早的在最前面:
$ history
7 vi tasks
8 alias
9 echo $HISTTIMEFORMAT
10 history
11 date …
查看最新使用命令需要查看記錄的命令的尾部:
$ history | tail -4
1007 echo $HISTSIZE
1008 history | wc -l
1009 history
1010 history | tail -4
另外,你可以使用 tail 命令查看 .bash_history 文件的尾部,但是 history 命令顯示的數(shù)字可以讓你輸入如 !1010 這樣的數(shù)字重新運(yùn)行命令,這點(diǎn)通常更有用。
要提供已使用命令的匯總(例如 vi 和 echo),你可以首先使用 awk 將命令與 history 中保存的其他信息分隔開來:
$ history | awk ‘{print $2}’
vi
alias
echo
history
date
…
如果你將歷史記錄中的命令列表傳遞給 sort 命令以按字母順序?qū)γ钸M(jìn)行分組,那么會(huì)得到以下內(nèi)容:
$ history | awk ‘{print $2}’ | sort
7z
7z
alias
apropos
cdcd
…
接下來,將 sort 命令的輸出傳遞給 uniq -c ,這將計(jì)算每個(gè)命令使用了多少次:
$ history | awk ‘{print $2}’ | sort | uniq -c
2 7z
1 alias
2 apropos
38 cd
21 chmod
…
最后,添加第二個(gè) sort 命令按倒序?qū)γ罱M計(jì)數(shù)進(jìn)行排序,這將先列出最常用的命令:
$ history | awk ‘{print $2}’ | sort | uniq -c | sort -nr
178 ls
95 vi
63 cd
53 sudo
41 more
…
這樣可以讓你了解使用最多的命令,但不會(huì)包括任何你可能故意從歷史記錄文件中刪除的命令,例如:
HISTIGNORE=“pwd:clear:man:history”
當(dāng)修改了歷史記錄格式時(shí)
對(duì)于默認(rèn)的歷史記錄格式,history 命令輸出中的第一個(gè)字段將是每個(gè)命令的序號(hào),第二個(gè)字段是使用的命令。因此,上面所有 awk 命令都設(shè)置成顯示 $2。
$ alias cmds=‘history | awk ’\‘’{print $2}‘\’‘ | sort | uniq -c | sort -nr’
如果你像下面那樣將日期和時(shí)間添加了到 history 命令中,那么你還必須修改所設(shè)置的別名:
$ echo $HISTTIMEFORMAT
%d/%m/%y %T
這個(gè)日期/時(shí)間信息有時(shí)會(huì)很有幫助,但是這意味著你必須在選擇 history 命令的第 4 個(gè)字段而不是第 2 個(gè)字段來匯總命令,因?yàn)槟愕臍v史記錄條目將如下所示:
91 05/07/20 16:37:39 sudo apt-get install ccrypt
^
+-- command
因此,在將 $2 變?yōu)?$4 之后,用于檢查 history 命令的別名將改為這樣:
$ alias cmds=‘history | awk ’\‘’{print $4}‘\’‘ | sort | uniq -c | sort -nr’
可將別名保存在 .bashrc 或其他啟動(dòng)文件中,請(qǐng)確保在 $ 符號(hào)前面插入反斜杠,以便 bash 不會(huì)嘗試解釋 $4。
alias cmds=‘history | awk ’\‘’{print \$2}‘\’‘ | uniq -c | sort -nr’
alias cmds=‘history | awk ’\‘’{print \$4}‘\’‘ | uniq -c | sort -nr’
請(qǐng)注意,日期和時(shí)間信息與命令本身保存在歷史記錄文件的不同行中。因此,添加此信息后,bash 歷史記錄文件的行數(shù)將增加一倍,盡管在 history 命令輸出時(shí)不會(huì):
$ wc -l .bash_history
2000 .bash_history
$ history | wc -l
1000
總結(jié)
你可以隨時(shí)決定要保留多少命令歷史記錄,哪些命令不值得記錄,以使你的命令摘要最有用。
-
Linux
+關(guān)注
關(guān)注
87文章
11207瀏覽量
208717 -
命令
+關(guān)注
關(guān)注
5文章
676瀏覽量
21965 -
虛擬機(jī)
+關(guān)注
關(guān)注
1文章
904瀏覽量
28018
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論