Если вы являетесь пользователем Linux, будь то Ubuntu, Centos, Fedora или любой другой дистрибутив, вы, скорее всего, провели много времени в bash, который является командной строкой по умолчанию в Linux. Вы наверняка использовали множество команд в Linux bash для различных целей, и вам часто приходится повторять те команды, которые вы выполняли в прошлом. К счастью, функция истории оболочки Linux bash поможет вам не только получить команды, которые вы выполняли ранее, но и получить наиболее используемые команды. Для этого используются записи из файла .bash_history, и файл истории обновляется каждый раз при закрытии терминальной сессии.
В этой статье мы покажем вам два метода, которые вы можете использовать для просмотра команд, которые вы чаще всего использовали в терминале.
Метод 1: Использование команд history, grep и awk
В этом методе мы рассмотрим наиболее используемые команды терминала с помощью команды History. Перед этим мы посмотрим, что на самом деле делает команда History. Она показывает все предыдущие команды, которые недавно использовались.
Чтобы увидеть, как она работает, введите history в терминале:
1 | history |
Вы также можете просмотреть список последних x команд, которые вы выполняли в последний раз, используя следующий синтаксис:
1 | history x |
Например, чтобы вывести список последних 10 команд, замените x на 10.
1 | history 10 |
Чтобы найти определенную команду в списке истории, используйте следующий синтаксис:
1 | history | grep command |
Например, чтобы найти команду ping в списке истории, выполните следующую команду в терминале:
1 | history | grep ping |
Чтобы просмотреть наиболее используемые команды, выполните следующую команду в Терминале:
1 | history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -nr |
Выше показан список истории, в котором наиболее используемые команды находятся вверху, а наименее используемые - внизу с момента установки Ubuntu 8.04 LTS. Согласно приведенному выше результату, команда sudo была самой часто используемой командой и была использована 104 раза, второй командой была History, а третьей - Locate.
Чтобы просмотреть конкретное количество наиболее часто используемых команд, выполните следующую команду в Терминале.
1 | history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -nr | head -n 10 |
Замените 10 на необходимое число
Если вы хотите просмотреть список истории в обратном порядке: наименее используемые команды вверху, а наиболее используемые внизу, вы можете легко сделать это. Удалите опцию r для второй сортировки, как показано в следующей команде.
1 | history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -n | head -n 30 |
На скриншоте выше видно, что он перечислил историю в обратном порядке.
Вы также можете просмотреть список истории только тех команд, которые встречаются один, два или любое определенное количество раз. Для этого используйте следующий синтаксис:
1 | history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -n | grep ' x ' |
Замените x на любое желаемое число. Например, чтобы просмотреть список команд, которые встречались только один раз, используйте следующую команду:
1 | history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -n | grep ' 1 ' |
Метод 2: Создание функции для просмотра статистики команд
Существует еще один метод, с помощью которого вы можете просмотреть список команд, которые были запущены ранее в оболочке bash. Для этого сначала выполните следующую команду в Терминале:
1 | function zsh-stats() { fc -l 1 | 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 -n25; } |
Затем выполните следующую команду:
1 | zsh-stats |
Она выведет список команд, а также количество раз, когда они выполнялись, и их процентное соотношение.
Мы рассмотрели выше два метода с использованием команд history и zsh-stats, вы можете использовать любой из них по своему усмотрению.