Як я можу скласти список з найбільш використовуваними командами в терміналі?


13

Як я можу скласти список з найбільш використовуваними командами в терміналі?

Я знаю, що це питання може бути непридатним для будь-яких майбутніх пропозицій для когось із нас, але навіть як це, цей список може бути корисним, коли ми не пам'ятаємо команду, яку використовували один чи кілька разів у минулому, коли ми можемо шукати в кінець цього списку.


Який термінал?
Ілля Лінн

Відповіді:


20

Для цього ми використаємо записи з .bash_historyфайлу. Наступна команда надасть вам список усіх команд для того, щоб ви їх використовували найчастіше:

history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -nr

Якщо ви хочете лише вгорі 10, ви повинні додати headкоманду вище:

history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -nr | head

Для того, щоб отримати певну вершину, наприклад , зверху 5, використовувати headз -n 5опцією:

Топ-5 команд

Якщо ви хочете, щоб список був у зворотному порядку (зверху до рідко використовуваних команд), не використовуйте roprion на секунду sort:

history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -n

І, нарешті, щоб отримати список із командами, що використовуються один раз, наприклад, використовуйте grep ' 1 '(змініть 1на потрібне число):

history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | grep ' 1 '

Для роботи з sudoкомандами (на зразок sudo vim foo) замість просто {print $3}команди awk використовуйте:

{if($3 ~ /sudo/) print $4; else print $3}

Отже вся команда виглядала б так:

history | awk 'BEGIN {FS="[ \t]+|\\|"} {if($3 ~ /sudo/) print $4; else print $3}' | sort | uniq -c | sort -nr

Наприклад:

$ history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -nr | head
    284 vim
    260 git
    187 find
    174 man
    168 echo
    149 rm
    134 awk
    115 pac
    110 sudo
    102 l

$ history | awk 'BEGIN {FS="[ \t]+|\\|"} {if($3 ~ /sudo/) print $4; else print $3}' | sort | uniq -c | sort -nr | head
    298 vim
    260 git
    189 find
    174 man
    168 echo
    153 rm
    134 awk
    115 pac
    102 l
     95 cd

Ви можете побачити стрибок в імпульсах для vim, rmі т.д.


1
Може хочете поповнити свій джерело в своїй відповіді: stackoverflow.com/a/68390/1210983
ohaal

3
@ohaal Вірити чи ні, я не знав про вищезгадане джерело; щиро це була лабораторна проблема знайомого, який навчався в Яссі з комп'ютерних наук .
Radu Rădeanu

@muru Редагування, яке ви зробили для sudo, не працює для чогось подібного, sudo -iтому що воно дає мені -iкоманду
geek1011

1
@ geek1011 sudo -iзапускає нову оболонку. Ця історія вже не в історії вашої оболонки, а в rootросійській. Очевидно, ці команди не працюють для багатьох крайових випадків; немає можливості поводитися з усіма можливими командами без написання власного аналізатора мови оболонки.
муру

1
@ geek1011 впевнений, додайте ще один чек, щось на кшталт:if ($3 ~ /sudo/ && $4 !~ /^-/)
muru

3

Нижче наведено список top 10найбільш часто використовуваних термінальних команд,

history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head

Команда, щоб перелічити всі команди, які найчастіше використовуються в терміналі,

history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn

2

Fish & Bash - у питанні не вказана конкретна оболонка, а лише "термінал". Поміняйте голову на будь-яке число, яке вам потрібно.

Риба

history | awk '{print $1}' | sort | uniq --count | sort --numeric-sort --reverse | head -10

517 git
314 drush
197 sudo
171 cd
115 man
103 echo
 95 vi
 81 dig
 67 set
 66 ls

Цей Баш, здається, працює і трохи коротший і легший для розуміння, ніж інші відповіді. Мені подобаються довгі варіанти, які допоможуть читати в таких типах прикладів.

Баш

history | awk '{print $2}' | sort | uniq --count | sort --numeric-sort --reverse | head -10

73 drush
72 exit
65 sudo
46 g
40 echo
35 ll
34 tmux
30 history
30 fish
27 mux
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.