Узнайте, сколько раз определенная функция используется в терминале командной строки

Есть ли функция, чтобы показать, сколько раз указанная функция была использована? Например, если бы я хотел знать, сколько раз я использовал функцию 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 вручную.

Другие вопросы по тегам