shell历史文件的格式是什么

时间:2015-12-08 08:09:02

标签: bash shell unix zsh history

我的~/.zsh_history显示:

: 1449561637:0;echo "foobar"

我猜它是unix timestamp : exit code ; command但是时间戳和第一个冒号之前的空格呢?

是否有官方规格?

1 个答案:

答案 0 :(得分:2)

正如评论中已经提到的,历史文件的格式取决于shell,有时甚至取决于shell的特定设置。

在您的情况下,您使用的zsh启用了EXTENDED_HISTORY选项(通过明确设置或使用csh - 仿真)。根据{{​​3}},EXTENDED_HISTORY的历史记录条目格式如下:

: <beginning time>:<elapsed seconds>;<command>

因此,时间戳之前的空格只是格式的一部分,第二个冒号和分号之间的数字实际上是命令所用的时间而不是退出代码。

注意:如果设置了<elapsed seconds>选项,0将始终为INC_APPEND_HISTORY,因为在输入后会立即将历史记录条目写入文件命令。如果要记录持续时间并在shell会话之间保持共享历史记录,则可能需要使用INC_APPEND_HISTORY_TIME。只有在命令完成后才会写入历史文件。