
(本文字数:3156,阅读时长大约:4分钟)
汇总Linux系统上使用的命令只需一串相对简单的命令以及几条管道将它们绑定在一起。当你的历史记录缓冲区保留了最近的1,000或2,000条命令时,总结你的命令活动可能会变得很乏味。这篇文章提供了一种方便的方法来汇总命令的使用情况,并高亮显示最常用的命令。
首先,请记住,典型的命令历史记录可能看起来像这样。请注意,命令是显示在命令序列号之后,并紧跟其参数。
91sudoapt-getinstallccrypt^+--command
请注意,history命令遵循HISTSIZE的设置,这会决定保留多少条命令。可能是500、1,000或更多。如果你不喜欢它的设置,那么可以在.bashrc或其他启动文件中添加或更改HISTSIZE设置。
$echo$HISTSIZE1000$history|wc-l1000$grepHISTSIZE~/.bashrc#forsettinghistorylengthseeHISTSIZEandHISTFILESIZEinbash(1)HISTSIZE=1000
记下大量命令的主要好处之一是,它可以让你轻松地重新运行过去使用的命令,而不必重新输入或记住它们。它还能让你轻松地查看你在一个任务中已经做了多少工作。单独使用history命令时,你会看到类似下面这样,最早的在最前面:
$history7vitasks8alias9echo$HISTTIMEFORMAT10history11date…
查看最新使用命令需要查看记录的命令的尾部:
$history|tail-41007echo$HISTSIZE1008history|wc-l1009history1010history|tail-4
另外,你可以使用tail命令查看.bash_history文件的尾部,但是history命令显示的数字可以让你输入如!1010这样的数字重新运行命令,这点通常更有用。
要提供已使用命令的汇总(例如vi和echo),你可以首先使用awk将命令与history中保存的其他信息分隔开来:
$history|awk'{print$2}'vialiasechohistorydate…如果你将历史记录中的命令列表传递给sort命令以按字母顺序对命令进行分组,那么会得到以下内容:
$history|awk'{print$2}'|sort7z7zaliasaproposcdcd…接下来,将sort命令的输出传递给uniq-c,这将计算每个命令使用了多少次:
$history|awk'{print$2}'|sort|uniq-c27z1alias2apropos38cd21chmod…最后,添加第二个sort命令按倒序对命令组计数进行排序,这将先列出最常用的命令:
$history|awk'{print$2}'|sort|uniq-c|sort-nr178ls95vi63cd53sudo41more…这样可以让你了解使用最多的命令,但不会包括任何你可能故意从历史记录文件中删除的命令,例如:
HISTIGNORE="pwd:clear:man:history"当修改了历史记录格式时
对于默认的历史记录格式,history命令输出中的第一个字段将是每个命令的序号,第二个字段是使用的命令。因此,上面所有awk命令都设置成显示$2。
$aliascmds='history|awk'\''{print$2}'\''|sort|uniq-c|sort-nr'如果你像下面那样将日期和时间添加了到history命令中,那么你还必须修改所设置的别名:
$echo$HISTTIMEFORMAT%d/%m/%y%T
这个日期/时间信息有时会很有帮助,但是这意味着你必须在选择history命令的第4个字段而不是第2个字段来汇总命令,因为你的历史记录条目将如下所示:
9105/07/2016:37:39sudoapt-getinstallccrypt^+--command
因此,在将$2变为$4之后,用于检查history命令的别名将改为这样:
$aliascmds='history|awk'\''{print$4}'\''|sort|uniq-c|sort-nr'可将别名保存在.bashrc或其他启动文件中,请确保在$符号前面插入反斜杠,以便bash不会尝试解释$4。
aliascmds='history|awk'\''{print\$2}'\''|uniq-c|sort-nr'aliascmds='history|awk'\''{print\$4}'\''|uniq-c|sort-nr'请注意,日期和时间信息与命令本身保存在历史记录文件的不同行中。因此,添加此信息后,bash历史记录文件的行数将增加一倍,尽管在history命令输出时不会:
$__history$history|wc-l1000总结
你可以随时决定要保留多少命令历史记录,哪些命令不值得记录,以使你的命令摘要最有用。
via:
作者:SandraHenry-Stocker选题:lujun9972译者:geekpi校对:wxy
本文由LCTT原创编译,Linux中国荣誉推出