Bash 提供了一个名为PROMPT_COMMAND 命令的环境变量。此变量的内容会在 Bash 显示提示符之前,作为常规 Bash 命令执行。
[21:55:01][giles@nikola:~] PS1="[\u@\h:\w]\$ " [giles@nikola:~] PROMPT_COMMAND="date +%H%M" 2155 [giles@nikola:~] d bin mail 2156 [giles@nikola:~] |
上面发生的事情是我更改了 PS1,使其不再包含\t转义序列(在上一节中添加),因此时间不再是提示符的一部分。然后我使用date +%H%M以我更喜欢的格式显示时间。但它出现在与提示符不同的行上。使用以下方法整理echo -n ...如下所示,适用于 Bash 2.0+,但似乎不适用于 Bash 1.14.7:显然提示符的绘制方式不同,以下方法会导致文本重叠。
2156 [giles@nikola:~] PROMPT_COMMAND="echo -n [$(date +%H%M)]" [2156][giles@nikola:~]$ [2156][giles@nikola:~]$ d bin mail [2157][giles@nikola:~]$ unset PROMPT_COMMAND [giles@nikola:~] |
echo -n ...控制 date 命令的输出并抑制尾随换行符,从而允许提示符显示在同一行上。最后,我使用了 unset 命令来删除PROMPT_COMMAND 命令环境变量。