shell历史文件的格式是什么

Jus*_*tin 4 unix bash shell history zsh

我的~/.zsh_history节目:

: 1449561637:0;echo "foobar"
Run Code Online (Sandbox Code Playgroud)

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

有官方规范吗?

Ada*_*hon 5

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

在您的情况下,您正在使用启用zshEXTENDED_HISTORY选项(通过显式设置或使用csh-emulation)。根据ZSH 手册,历史条目的格式EXTENDED_HISTORY如下:

: <beginning time>:<elapsed seconds>;<command>
Run Code Online (Sandbox Code Playgroud)

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

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