我如何才能唯一地记录我使用的每个新命令,并可能为其添加时间戳?

我如何才能唯一地记录我使用的每个新命令,并可能为其添加时间戳?

我使用 Linux 已有 6 个多月了,但从未过多使用过 CLI(命令行界面或终端或 shell)

现在,当我在这里提问、获得答案或从其他网站获得帮助时,我学习了新的命令......

我怎样才能将每条新命令存储在文本文件中?只有新的/独特的命令,而不是重复相同的命令。

以下是一个例子:

  1. 在终端中,我输入如下命令-
$  command1
$  command2
$  command3
$  command4
$  command1
  1. 现在,这些命令应该保存在文本文件中,commandrec如下所示
command1
command2
command3
command4

笔记: 终端中的最后一条命令command1不会再次记录/保存在文本文件中。

下次我打开终端并输入新命令时command 5,它应该被附加到列表中commandrec

(但如果该命令在其他日期之前使用过,则仍应忽略。例如,command 1再次进入command 5在新的一天/时间,但是command1未记录为已使用)

  1. commandrec文件看起来应该是这样的
31/05/12 12:00:00
command1
command2
command3
command4
01/06/12 13:00:00
command 5

(如果可能的话,有时间和日期就更好了,但是没有也没关系)

这样,我就可以记录迄今为止我使用过的所有命令。

如何才能做到这一点?

答案1

如何成功地尝试改变这些设置.bashrc

  • 实验之前:使用 将当前内容保存.bash_history到另一个文件cp
  • 在实验过程中有效的方法是:rm ~/.bash_history在您更改.bashrc历史控制参数后,否则新旧条目的组合可能会给您带来奇怪的结果。
    • 例如,启用时间戳之前的所有条目将显示相同的当前日期/时间!
  • 一旦你找到可行的方法,不要rm再这样了!!

  • .bashrc还要注意,只有当您退出并实例化新的终端/shell 时,才会反映任何更改。

增加历史记录大小并消除重复项

  • 将这些行添加到您的~/.bashrc

    导出 HISTCONTROL=erasedups
    导出 HISTSIZE=10000
  • 历史记录大小设置为 10000,重复项会被自动删除,因此有足够的空间:)

时间戳

  • 可以通过添加另一行表格来轻松设置时间export HISTTIMEFORMAT="%F %T",这将在使用时在每行之前显示时间/日期history
    • 例子:
      izx@preciseunity:~$ 历史
      1 2012-06-01 07:16:22 rm ~/.bash_history
      2 2012-06-01 07:16:23 退出
      3 2012-06-01 07:16:27 ls
      4 2012-06-01 07:16:31 测试
      5 2012-06-01 07:16:34 ls /etc
      6 2012-06-01 07:16:36 下
      7 2012-06-01 07:16:37 上
      8 2012-06-01 07:16:40 hustory
      9 2012-06-01 07:16:48 历史
      
    • 请注意,由于消除了重复项,因此显示的命令时间是最新的(最新)上次执行的时间。
    • 您可以HISTTIMEFORMAT根据自己的选择/语言环境自定义strftime

答案2

你的目标是学习新命令?我建议使用CLI 伴侣

CLI Companion 是一款用于从 GUI 存储和运行终端命令的工具。不熟悉终端的人会发现 CLI Companion 是熟悉终端并发挥其潜力的有用方法。经验丰富的用户可以使用 CLI Companion 将大量命令存储在可搜索的列表中。

在此处输入图片描述

你可以通过运行来获得它:

sudo add-apt-repository ppa:clicompanion-devs/clicompanion-nightlies
sudo apt-get update
sudo apt-get install clicompanion

如果你不想添加 PPA,请尝试这个文件适用于 12.04(最新版本 1.1-6,发布于 2012-04-14 - 检查这一页以获得较新的版本。) - 或者在使用 安装后删除 PPA sudo add-apt-repository -r ppa:clicompanion-devs/clicompanion-nightlies


附言:我发现这个问题这也可能有帮助。

答案3

根据 Dirk 的建议.bash_history和 Chris 的使用命令的建议sort,您可能想要做的是:

cat ~/.bash_history | sed 's/sudo //g' | sort -u +0 -0 | cut -d\  -f1 > commandrec.txt

管道中的第二个命令将删除出现的“sudo”,因此当您排序时,您将对仅在调用后才可能输入的命令进行排序sudo

Bash 历史记录不会跟踪命令的使用时间/日期,但我脑海中浮现的念头是,您可以编写一个脚本,在退出终端时调用该脚本。该脚本将调用上述命令(但保存到 commandrec-$DATE.txt,其中有类似 DATE = `date "+%Y-%m-%dT%H:%M:%S"` 的内容)。然后,您可以与 commandrec-$DATE.txt.bash-history中的新命令进行差异处理并仅保留新命令。因此,您将拥有一组此类日期化的 commandrec 文件。实际上,由于数量有限(我认为我的系统上的默认值是 500),您可能应该与通过-ing 所有 commandrec*.txt 文件和.bash_history获得的文件进行差异处理。 cat.bash_history

然后,无论何时您想要查看迄今为止的所有命令,您都可以将所有文件放到一个文件中。

答案4

在你的主目录中检查.bash_history文件,它会保存你输入的每个命令

相关内容