Узнайте, сколько раз определенная функция используется в терминале командной строки
Есть ли функция, чтобы показать, сколько раз указанная функция была использована? Например, если бы я хотел знать, сколько раз я использовал функцию cp или что-то еще?
1 ответ
Bash хранит историю последних N команд, которые вы выполнили ~/.bash_history
(по умолчанию см. значение $HISTFILE
) и вы можете увидеть этот список, запустив history
:
$ history | head
1 test.py file.txt outf
2 cat outf
3 test.py file.txt outf
4 cat outf
5 test.py file.txt outf
6 cat outf
7 cat file.t
8 cat file.txt
9 rm file.tex
10 test.py file.txt outf
Это первые 10 команд в моей истории. Как видите, формат - "номер команды", за которым следует фактическая команда. Итак, посчитать, сколько раз вы использовали man
Вы могли бы сделать:
history | awk '$2=="man"' | wc -l
Это будет работать history
, awk
который здесь будет печатать только те строки, чье второе поле man
, а затем передать эти строки wc
который считает их. Если вам нужно запускать это часто, вы можете превратить это в небольшую функцию. просто добавьте эти строки в ~/.bashrc
:
countCom(){
history | awk -vcom="$@" '$2==com' | wc -l
}
Затем посчитать man
, вы бы сделали:
$ countCom man
4460
Тем не менее, это будет подсчитывать количество раз вы запустили man
за всю историю вашей оболочки. Это не только с момента открытия текущего терминала. Обычно это то, что вам нужно, поскольку вы видите только несколько команд, которые вы запускаете, поскольку открытие этого терминала редко, если вообще полезно. В конце концов, это подмножество целого.
Если вам действительно нужно это для каждого терминала, вы можете запустить history -c
когда вы открываете новый терминал. Это очистит историю для этого терминала, так что в следующий раз вы запустите history
, вы увидите только команды с момента открытия этого терминала.
К сожалению, вы не можете добавить history -c
команда для файлов инициализации вашей оболочки (~/.bashrc
например) потому что история читается после чтения файла инициализации, поэтому она не имеет никакого эффекта там. Так что если вам действительно нужна история для этого терминала и только для этого терминала, вам придется запустить history -c
вручную.