查明命令行终端中特定函数的使用次数

查明命令行终端中特定函数的使用次数

是否有函数可以显示指定函数被使用了多少次?例如,如果我想知道我使用了 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

这将运行historyawk这里将仅打印第二个字段为 的行man,然后将这些行传递给 来wc计数它们。如果您需要经常运行它,您可以将其变成一个小函数。只需将这些行添加到~/.bashrc

countCom(){
    history | awk -vcom="$@" '$2==com' | wc -l
}

然后,为了计算man,你可以这样做:

$ countCom man
4460

但是,这将计算你在整个 shell 历史记录中运行的次数man。它不仅仅是从打开当前终端以来。这通常是你想要的,因为只看到你从打开以来运行的少数命令终端几乎毫无用处。毕竟,它们只是整体的一个子集。

如果你真的如果需要每个终端都执行此命令,您可以history -c在打开新终端时运行。这将清除此终端的历史记录,以便下次运行时history,您只会看到自打开此终端以来的命令。

不幸的是,您无法将history -c命令添加到 shell 的初始化文件中(~/.bashrc例如),因为历史记录是在读取 init 文件后读取的,所以它在那里不起作用。因此,如果您确实需要此终端的历史记录并且只需要此终端的历史记录,则必须history -c手动运行。

相关内容