SSH主机命令"history | tail"没有输出结果。

4
有人能解释一下以下内容吗?当我使用ssh远程执行history命令时,没有任何输出,即使其他远程命令可以产生输出并且该机器上有历史记录。
ssh host 'history | tail' # produces no output
ssh host 'echo foo | tail' # produces 'foo' as output
ssh host
> history | tail # produces expected output
1个回答

6

非交互式shell不加载历史记录。您可以通过tail查看历史记录文件(~/.bash_history),或者打开历史记录并加载它。

set -o history
history -r

远程主机需要执行的完整命令如下所示:
ssh host 'HISTFILE=~/.bash_history; history -r; history' | tail

太棒了。你能解释一下 "history -r" 是什么意思吗?谢谢。 - Girish Rao
1
@GirishRao: help history 表示 history -r 读取历史文件并将其内容附加到历史列表中。这就是我在回答中说“加载它”的原因。 - Dennis Williamson
奇怪:我注意到 ssh -t localhost "HISTFILE=~/.bash_history; set -o history; export HISTTIMEFORMAT='%F %T '; history -r; history" 不能给我正确的时间戳;它只是为所有行填充当前时间戳 - 有没有办法获取正确的时间? - rupert160
如果历史文件中没有时间戳,则输出当前时间。为了将正确的时间戳写入历史文件,需要在将命令添加到历史记录时设置HISTTIMEFORMAT(它可以为空)。 - Dennis Williamson
@DennisWilliamson,它确实有作用-它只是编码在命令上面的#934335324值中。由于某种原因,这个history -r的把戏似乎会导致日志守护程序出现一些问题。我会在理解我的错误后进行更新... - rupert160

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接