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

Существует ли функция, показывающая, сколько раз указанная функция использовалась? Например, если бы я хотел узнать, сколько раз я использовал функцию cp или что-то еще?

1
задан 24 April 2019 в 12:04

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
[ 1123] Это первые 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 вручную.

0
ответ дан 24 April 2019 в 12:04

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

Похожие вопросы: