Как узнать, какие команды 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" удалит дублирующиеся строки (введенные вами команды) и подсчитает их, а последняя sort упорядочит ваши команды по числу, возвращаемому 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

Связанный контент