vfc*_*sts 5 bash command-history
在进行某些安装时,我将“HISTFILE”变量更改为不同的文件以记录使用的命令。现在我想使用该history命令来显示它们,就像history默认使用该.bash_history文件的命令一样。
应该将什么选项传递给history命令?当我尝试时history ~/.history.d/alternate_history收到错误消息
-bash: history: /home/vfclists/.history.d/alternate_history: numeric argument required.
Run Code Online (Sandbox Code Playgroud)
在man帮助列出这似乎做出一些改变以其他历史文件,我不希望一些选项。
该history命令永远不会对文件进行操作,只会对其内存中的历史列表进行操作。您只能从文件中读取 ( r)、写入 ( -w) 和追加 ( -a) 该列表,然后访问或操作内存中的列表。从文件中读取将替换或扩展当前 shell 会话中的历史记录。
但是,您可以生成另一个 shell 并操纵其历史记录以运行您想要的任何命令,而不会影响当前 shell 的历史记录:
bash -c 'history -cr file ; history'
Run Code Online (Sandbox Code Playgroud)
或者
( history -cr file ; history )
Run Code Online (Sandbox Code Playgroud)
history在任何一种情况下,您都可以向第二个命令添加您想要的任何历史记录选项。如果您经常这样做,您可能需要定义一个函数,该函数接受该文件作为参数并运行子 shell 版本:
histfile() {
( history -cr "$1" ; history )
}
Run Code Online (Sandbox Code Playgroud)
如果您有兴趣显示保存的时间戳,您还需要设置HISTTIMEFORMAT. 如果您使用的是子 shell,并且您在主机 shell 中获得时间戳,那么它应该会自动出现,但是对于bash -c版本或脚本,您需要设置它:
bash -c 'history -cr file ; HISTTIMEFORMAT="%Y%m%d%H%I%S " history'
Run Code Online (Sandbox Code Playgroud)
您还可以export从父 shell 中获取变量。