你可以跑
PROMPT_COMMAND="date"
Run Code Online (Sandbox Code Playgroud)
在您的终端上,每次在您的终端上运行命令时,当前的日期和时间都会打印在您的终端上。正如@pa4080 所建议的,要使其永久化,请将其添加PROMPT_COMMAND="date"到您的 ~/.bashrc 文件中。
从人bash:
PROMPT_COMMAND
如果设置,该值在发出每个主要提示之前作为命令执行。
我认为PROMPT_COMMAND=当在终端上运行命令时,您可以使用相同的命令来运行您想要运行的几乎“任何东西”。
如果您使用tmux,它还会在角落显示时间:
假设您正在运行 Bash,您可以设置PROMPT_COMMAND打印提示时执行的命令。同样,您可以通过在提示符中包含命令替换来运行任意命令:
$ PS1='[$(date +"%T")] \u@\h \w\$ '
[22:17:54] user@somehost /tmp$
Run Code Online (Sandbox Code Playgroud)
但这很常见,Bash 支持它现成的
\D{format}
传递格式strftime(3)并将结果插入到提示字符串中;空格式会产生特定于区域设置的时间表示。需要使用大括号。
所以,与之前类似
$ PS1='[\D{%T}] \u@\h \w\$ '
Run Code Online (Sandbox Code Playgroud)
但那些打印提示的时间。这可能需要相当长的时间才能执行下一个命令。要获取命令启动的时间,我们可以使用陷阱DEBUG,该陷阱为每个执行的命令行运行一次。
$ starttime() { date +"Command started at %T"; }
$ trap starttime DEBUG
$ ls -l /dev/null
Command started at 22:25:07
crw-rw-rw- 1 root root 1, 3 Jul 18 21:46 /dev/null
Run Code Online (Sandbox Code Playgroud)
陷阱DEBUG还可以使用$BASH_COMMAND包含正在执行的命令的变量,但这可能不是很有用,因为无论如何命令行在提示符下都是可见的。