有没有办法在 .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.