Linux中國

匯總你在 Linux 上的命令使用情況

匯總 Linux 系統上使用的命令只需一串相對簡單的命令以及幾條管道將它們綁定在一起。當你的歷史記錄緩衝區保留了最近的 1,000 或 2,000 條命令時,總結你的命令活動可能會變得很乏味。這篇文章提供了一種方便的方法來匯總命令的使用情況,並高亮顯示最常用的命令。

首先,請記住,典型的命令歷史記錄可能看起來像這樣。請注意,命令是顯示在命令序列號之後,並緊跟其參數。

91  sudo apt-get install ccrypt
     ^
     +-- command

請注意,history 命令遵循 HISTSIZE 的設置,這會決定保留多少條命令。可能是 500、1,000 或更多。如果你不喜歡它的設置,那麼可以在 .bashrc 或其他啟動文件中添加或更改 HISTSIZE 設置。

$ echo $HISTSIZE
1000
$ history | wc -l
1000
$ grep HISTSIZE ~/.bashrc
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000

記下大量命令的主要好處之一是,它可以讓你輕鬆地重新運行過去使用的命令,而不必重新輸入或記住它們。它還能讓你輕鬆地查看你在一個任務中已經做了多少工作。單獨使用 history 命令時,你會看到類似下面這樣,最早的在最前面:

$ 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 命令顯示的數字可以讓你輸入如 !1010 這樣的數字重新運行命令,這點通常更有用。

要提供已使用命令的匯總(例如 viecho),你可以首先使用 awk 將命令與 history 中保存的其他信息分隔開來:

$ history | awk '{print $2}'
vi
alias
echo
history
date
…

如果你將歷史記錄中的命令列表傳遞給 sort 命令以按字母順序對命令進行分組,那麼會得到以下內容:

$ history | awk '{print $2}' | sort
7z
7z
alias
apropos
cd
cd
…

接下來,將 sort 命令的輸出傳遞給 uniq -c ,這將計算每個命令使用了多少次:

$ history | awk '{print $2}' | sort | uniq -c
      2 7z
      1 alias
      2 apropos
     38 cd
     21 chmod
…

最後,添加第二個 sort 命令按倒序對命令組計數進行排序,這將先列出最常用的命令:

$ history | awk '{print $2}' | sort | uniq -c | sort -nr
    178 ls
     95 vi
     63 cd
     53 sudo
     41 more
…

這樣可以讓你了解使用最多的命令,但不會包括任何你可能故意從歷史記錄文件中刪除的命令,例如:

HISTIGNORE="pwd:clear:man:history"

當修改了歷史記錄格式時

對於默認的歷史記錄格式,history 命令輸出中的第一個欄位將是每個命令的序號,第二個欄位是使用的命令。因此,上面所有 awk 命令都設置成顯示 $2

$ alias cmds='history | awk '''{print $2}''' | sort | uniq -c | sort -nr'

如果你像下面那樣將日期和時間添加了到 history 命令中,那麼你還必須修改所設置的別名:

$ echo $HISTTIMEFORMAT
%d/%m/%y %T

這個日期/時間信息有時會很有幫助,但是這意味著你必須在選擇 history 命令的第 4 個欄位而不是第 2 個欄位來匯總命令,因為你的歷史記錄條目將如下所示:

91  05/07/20 16:37:39 sudo apt-get install ccrypt
                       ^
                       +-- command

因此,在將 $2 變為 $4 之後,用於檢查 history 命令的別名將改為這樣:

$ alias cmds='history | awk '''{print $4}''' | sort | uniq -c | sort -nr'

可將別名保存在 .bashrc 或其他啟動文件中,請確保在 $ 符號前面插入反斜杠,以便 bash 不會嘗試解釋 $4

alias cmds='history | awk '''{print $2}''' | uniq -c | sort -nr'
alias cmds='history | awk '''{print $4}''' | uniq -c | sort -nr'

請注意,日期和時間信息與命令本身保存在歷史記錄文件的不同行中。因此,添加此信息後,bash 歷史記錄文件的行數將增加一倍,儘管在 history 命令輸出時不會:

$ wc -l .bash_history
2000 .bash_history
$ history | wc -l
1000

總結

你可以隨時決定要保留多少命令歷史記錄,哪些命令不值得記錄,以使你的命令摘要最有用。

via: https://www.networkworld.com/article/3567050/summarizing-your-command-usage-on-linux.html

作者:Sandra Henry-Stocker 選題:lujun9972 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國