如何在终端每次启动命令之前获取时间?

如何在终端每次启动命令之前获取时间?

我希望每次我在终端中运行命令时,都能在我的终端中显示时间,然后执行命令。

答案1

你可以运行

 PROMPT_COMMAND="date"

在您的终端上,每次在您的终端上运行命令时,当前日期和时间都会打印在您的终端上。正如@pa4080 所建议的,要使其永久存在,请将其添加PROMPT_COMMAND="date"到您的 ~/.bashrc 文件中。

来自 man bash:

PROMPT_COMMAND

如果设置,则在发出每个主提示之前,该值将作为命令执行。

我认为您可以使用相同的命令PROMPT_COMMAND=来运行在终端上运行命令时想要运行的几乎“任何内容”。

如果你使用tmux,它还在角落显示时间:

tmux

答案2

假设您正在运行 Bash,您可以设置PROMPT_COMMAND为在提示符打印出来时执行的命令。类似地,您可以通过在提示符中包含命令替换来运行任意命令:

$ PS1='[$(date +"%T")] \u@\h \w\$ '
[22:17:54] user@somehost /tmp$ 

但这种情况很常见,Bash 支持现成的

\D{format}
格式被传递给strftime(3)提示字符串,结果被插入其中;空格式导致特定于语言环境的时间表示。括号是必需的。

因此,与之前类似

$ PS1='[\D{%T}] \u@\h \w\$ '

但是这些命令会打印提示符被打印的时间。这可能要过一段时间才会执行下一个命令。要获取命令启动的时间,我们可以使用 trap 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

陷阱DEBUG还可以使用$BASH_COMMAND包含正在执行的命令的变量,但这可能不是很有用,因为命令行在提示符下是可见的。

答案3

答案4

  1. 编辑.bashrc文件

    gedit ~/.bashrc
    
  2. 查找以下文本:

    if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\] :\[\033[01;34m\]\w\[\033[00m\]\$ ' 
    
  3. 并将其替换为:

    if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u\[\033[00m\] [\d|\t]:\[\033[01;34m\]\w\[\033[00m\]\$ ' 
    
  4. 重新启动终端进行检查。

终端中的示例输出

相关内容