显示目录和日期的历史命令

显示目录和日期的历史命令

有没有办法在 .bash_history 文件中列出:输入命令的目录、日期和命令?

答案1

您也可以将当前工作目录写入历史文件中,但您必须创建自己的历史文件:

按照如下方式编写你的 .bashrc:

export CUSTOM_HISTFILE="/tmp/bash_history" #path of the new history file
export PROMPT_COMMAND="history -a; history -c; history -r; date | xargs echo -n >>$CUSTOM_HISTFILE; echo -n ' - ' >>$CUSTOM_HISTFILE; pwd | xargs echo -n >>$CUSTOM_HISTFILE; echo -n ' - ' >>$CUSTOM_HISTFILE; tail -n 1 $HISTFILE >>$CUSTOM_HISTFILE; $PROMPT_COMMAND"

虽然有点不切实际,但确实有效。条目可能如下所示:

Mit Nov 13 13:44:39 CET 2013 - /home/test - ls -la

答案2

显示目录的历史命令:没有!:(

显示日期的历史命令:是的!:)

那是因为(来自man history):

The history list is an array of history entries.  A  history  entry is
declared as follows:

   typedef void * histdata_t;

   typedef struct _hist_entry {
     char *line;
     char *timestamp;
     histdata_t data;
   } HIST_ENTRY;

因此,没有关于输入命令的目录的任何信息。

要了解某个命令的确切执行时间,请参阅help history

If the $HISTTIMEFORMAT variable is set and not null, its value is used
as a format string for strftime(3) to print the time stamp associated
with each displayed history entry.  No time stamps are printed
otherwise.

$HISTTIMEFORMAT因此,您所要做的就是在当前 shell 中设置如下内容:

export HISTTIMEFORMAT="%F %T "

要永久设置它,请运行以下命令:

echo 'export HISTTIMEFORMAT="%F %T "' >> ~/.bashrc

上述命令将export HISTTIMEFORMAT="%F %T "在文件末尾添加一个新行()~/.bashrc

现在,的输出history将看起来像这样:

 ...
 1613  2013-11-13 13:00:15 cat .bash_history
 1614  2013-11-13 13:01:04 man history
 1615  2013-11-13 13:11:58 help history
 1616  2013-11-13 13:19:07 ls
 1617  2013-11-13 13:19:09 cd
 1618  2013-11-13 13:19:15 history

答案3

你能稍微解释一下你的问题吗?ubuntu 中有一个名为 fc(固定命令)的命令,它使你能够显示历史文件、编辑和重新执行上一个命令。基本上它是为历史命令设置的别名。

默认情况下,

fc  -l lists the 16 most recent commands.

您还可以使用

history command itself to see the command history.

相关内容