如何查看我最常用的 Linux 命令是什麼?

如何查看我最常用的 Linux 命令是什麼?

我想知道我在命令列上最常使用哪個命令。我想知道這樣我可以改進命令列的使用。如果我知道我最常使用哪個命令,我就可以閱讀有關它們的更多信息,嘗試找出更好的使用方法。

我知道歷史記錄保存了我之前輸入的所有命令的清單。我將如何處理它以查看前 10 或 20 個最常用命令的清單。

答案1

我剛剛在上面看到這個帖子http://linux.byexamples.com/

基本上你使用一個簡單的一行 awk 腳本

history | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl |  head -n10

完整的解釋可以在上面的連結中找到。

我的機器上的輸出範例是:

 1  211  21.1%  ls
 2  189  18.9%  sudo
 3  58   5.8%   man
 4  52   5.2%   cd
 5  43   4.3%   ping
 6  40   4%     apropos
 7  34   3.4%   less
 8  22   2.2%   cat
 9  18   1.8%   which
10  18   1.8%   aspell

答案2

awk '{print $1}' ~/.bash_history | sort | uniq -c | sort -n

awk 命令將列印~/.bash_history 中的第一個字串(不顯示命令選項或參數),然後sort 將按字母順序對所有行進行排序,然後「uniq -c」將刪除重複的行(您鍵入的命令)並對它們進行計數,然後最後一個排序將按照 uniq 返回的計數對命令進行排序。

答案3

您可以hash在終端機中使用該命令,該命令會保留您使用的每個命令的雜湊條目以及命中次數,並根據命中次數對它們進行排序和處理。

查看本文了解更多。

答案4

其他答案中的腳本僅計算每個命令列中執行的第一個命令;它們不包括在管道(即“|”)之後執行的命令。例如,如果此行本身位於您的 bash 歷史記錄中:

awk '{print $1}' ~/.bash_history | sort | uniq -c | sort -n

然後,在傳回的最常執行命令的摘要中,不會包含“sort”和“uniq”以及第二個“sort”,因為它們不是該行中的第一個標記。

基於 nelaar 的答案,首先在每個管道上分割 bash 歷史記錄中的行就足夠了:

sed 's/|/\n/g' ~/.bash_history | awk '{CMD[$1]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl |  head -n10

相關內容