汇总你在Linux上的命令使用情况

系统 Windows
使用合适的命令,你可以快速了解 Linux 系统上使用的命令以及执行的频率。

[[337878]]

使用合适的命令,你可以快速了解 Linux 系统上使用的命令以及执行的频率。

汇总 Linux 系统上使用的命令只需一串相对简单的命令以及几条管道将它们绑定在一起。当你的历史记录缓冲区保留了最近的 1,000 或 2,000 条命令时,总结你的命令活动可能会变得很乏味。这篇文章提供了一种方便的方法来汇总命令的使用情况,并高亮显示最常用的命令。

首先,请记住,典型的命令历史记录可能看起来像这样。请注意,命令是显示在命令序列号之后,并紧跟其参数。

  1. 91 sudo apt-get install ccrypt
  2. ^
  3. +-- command

请注意,history 命令遵循 HISTSIZE 的设置,这会决定保留多少条命令。可能是 500、1,000 或更多。如果你不喜欢它的设置,那么可以在 .bashrc 或其他启动文件中添加或更改 HISTSIZE 设置。

  1. $ echo $HISTSIZE
  2. 1000
  3. $ history | wc -l
  4. 1000
  5. $ grep HISTSIZE ~/.bashrc
  6. # for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
  7. HISTSIZE=1000

记下大量命令的主要好处之一是,它可以让你轻松地重新运行过去使用的命令,而不必重新输入或记住它们。它还能让你轻松地查看你在一个任务中已经做了多少工作。单独使用 history 命令时,你会看到类似下面这样,最早的在最前面:

  1. $ history
  2. 7 vi tasks
  3. 8 alias
  4. 9 echo $HISTTIMEFORMAT
  5. 10 history
  6. 11 date

查看最新使用命令需要查看记录的命令的尾部:

  1. $ history | tail -4
  2. 1007 echo $HISTSIZE
  3. 1008 history | wc -l
  4. 1009 history
  5. 1010 history | tail -4

另外,你可以使用 tail 命令查看 .bash_history 文件的尾部,但是 history 命令显示的数字可以让你输入如 !1010 这样的数字重新运行命令,这点通常更有用。

要提供已使用命令的汇总(例如 vi 和 echo),你可以首先使用 awk 将命令与 history 中保存的其他信息分隔开来:

  1. $ history | awk '{print $2}'
  2. vi
  3. alias
  4. echo
  5. history
  6. date

如果你将历史记录中的命令列表传递给 sort 命令以按字母顺序对命令进行分组,那么会得到以下内容:

  1. $ history | awk '{print $2}' | sort
  2. 7z
  3. 7z
  4. alias
  5. apropos
  6. cd
  7. cd

接下来,将 sort 命令的输出传递给 uniq -c ,这将计算每个命令使用了多少次:

  1. $ history | awk '{print $2}' | sort | uniq -c
  2. 2 7z
  3. 1 alias
  4. 2 apropos
  5. 38 cd
  6. 21 chmod

最后,添加第二个 sort 命令按倒序对命令组计数进行排序,这将先列出最常用的命令:

  1. $ history | awk '{print $2}' | sort | uniq -c | sort -nr
  2. 178 ls
  3. 95 vi
  4. 63 cd
  5. 53 sudo
  6. 41 more

这样可以让你了解使用最多的命令,但不会包括任何你可能故意从历史记录文件中删除的命令,例如:

  1. HISTIGNORE="pwd:clear:man:history"

当修改了历史记录格式时

对于默认的历史记录格式,history 命令输出中的第一个字段将是每个命令的序号,第二个字段是使用的命令。因此,上面所有 awk 命令都设置成显示 $2

  1. $ alias cmds='history | awk '\''{print $2}'\'' | sort | uniq -c | sort -nr'

如果你像下面那样将日期和时间添加了到 history 命令中,那么你还必须修改所设置的别名:

  1. $ echo $HISTTIMEFORMAT
  2. %d/%m/%y %T

这个日期/时间信息有时会很有帮助,但是这意味着你必须在选择 history 命令的第 4 个字段而不是第 2 个字段来汇总命令,因为你的历史记录条目将如下所示:

  1. 91 05/07/20 16:37:39 sudo apt-get install ccrypt
  2. ^
  3. +-- command

因此,在将 $2 变为 $4 之后,用于检查 history 命令的别名将改为这样:

  1. $ alias cmds='history | awk '\''{print $4}'\'' | sort | uniq -c | sort -nr'

可将别名保存在 .bashrc 或其他启动文件中,请确保在 $ 符号前面插入反斜杠,以便 bash 不会尝试解释 $4

  1. alias cmds='history | awk '\''{print \$2}'\'' | uniq -c | sort -nr'
  2. alias cmds='history | awk '\''{print \$4}'\'' | uniq -c | sort -nr'

请注意,日期和时间信息与命令本身保存在历史记录文件的不同行中。因此,添加此信息后,bash 历史记录文件的行数将增加一倍,尽管在 history 命令输出时不会:

  1. $ wc -l .bash_history
  2. 2000 .bash_history
  3. $ history | wc -l
  4. 1000

总结

你可以随时决定要保留多少命令历史记录,哪些命令不值得记录,以使你的命令摘要最有用。 

责任编辑:庞桂玉 来源: Linux中国
相关推荐

2017-01-18 21:57:14

2022-07-13 14:26:26

Linux

2019-06-24 08:53:01

Bash脚本Linux系统运维

2020-02-10 19:50:08

Linux内存使用命令

2010-10-14 16:10:28

MySQL排序

2009-06-16 09:18:26

Linux系统管理系统资源

2010-02-03 17:16:58

Linux内存使用

2010-06-02 11:06:15

Linux 内存监控

2021-03-01 13:11:20

duf终端工具Linux

2017-03-17 16:00:20

2010-06-02 12:47:12

Linux 内存监控

2009-10-21 12:42:20

Linux系统资源操作系统

2023-08-21 14:18:48

操作系统Linux

2018-09-14 16:38:43

FilelightLinux磁盘

2009-12-14 17:25:20

Linux操作系统

2014-04-24 16:26:31

UbuntuUbuntu 磁盘Linux基础

2021-05-10 11:25:24

Linux命令磁盘

2009-07-09 18:03:25

tomcatJVM内存

2009-06-30 14:11:00

Hibernate缓存

2018-07-06 14:52:49

Docker容器云服务
点赞
收藏

51CTO技术栈公众号