当前位置: 首页>>技术教程>>正文


如何在命令提示符前在终端中显示运行时钟

,

问题描述

我更喜欢使用终端,并花费大部分时间使用它。我正在寻找一种在终端并行使用时查看时间的方法。时间过后,时间会自动更改。如果它显示在我的命令提示符下,那就太棒了。

如果这是我在终端中的命令提示符:

saurav@saurav-P4I45Gx-PE:~$

然后我想将时钟(时间)视为:

saurav@saurav-P4I45Gx-PE[06:27:01]:~$

要么

saurav@(06:27:01):~$

或其他任何格式。其中06:27:01是时间。我想要的只是显示经过几秒钟后发生变化的时间。

那么有什么办法可以做到这一点?

最佳回答

我不确定使用默认的bash shell来实现这一目标是如此简单(但是我并不是说这是不可能的)。您可能需要一个命令/功能,该命令/功能能够每秒刷新命令提示符,而不会干扰您在提示符下键入的任何内容。

Z shell (zsh)有一个名为zle的内置命令,与reset-prompt参数一起使用时,该命令将强制提示符为re-expanded,然后重新显示编辑缓冲区。

如果要尝试,请执行以下步骤:

  1. 使用以下命令安装Z shell:

    sudo apt-get install zsh
    
  2. 首次运行zsh时,系统提示您选择0

  3. 编辑~/.zshrc文件并添加以下行:

    setopt PROMPT_SUBST
    PROMPT='%B%F{red}%n@%m%f%F{yellow}[%D{%L:%M:%S}]%f:%F{blue}${${(%):-%~}}%f$ %b'
    TMOUT=1
    
    TRAPALRM() {
        zle reset-prompt
    }
    

    保存文件并关闭它。

  4. 在终端中,当您仍在使用zsh时,请运行source ~/.zshrc或简单地zsh来重置提示。现在您的提示应如下所示:

    saurav@saurav-P4I45Gx-PE[1:25:21]:~$
    

    有一些颜色。

  5. 如果喜欢,请运行chsh -s /bin/zsh将当前的 shell 程序更改为/bin/zsh(要使此更改生效,必须使用re-login)。

  6. 如果要从zsh shell退出,请运行exit

这是我的终端上的15秒截屏视频:

次佳回答

如果要在终端中显示运行时间,可以使用此命令。它会在终端的右上方显示时间。

  while sleep 1;do tput sc;tput cup 0 $(($(tput cols)-11));echo -e "\e[31m`date +%r`\e[39m";tput rc;done &

但是请注意,有时使用此命令显示时间可能会与终端中显示的文本重叠。因此,请谨慎使用此命令。

另一种方法可能是在PS1中使用控制字符

[guru@guru-pc ~]$  PS1='\[\u@\h \T \w]\$'

[guru@guru-pc 11:06:16 ~]$

但是用这种方法,您的时间只有在按Enter键后才会刷新。

如果要永久使用上述方法,请在~.bashrc文件中添加上述命令(您喜欢的一个或两个)。

第三种回答

如果您只想显示时钟,请使用date

while :; do date +%r; sleep 1 ; done

这将每秒显示一次时间,直到您使用Ctrl C停止为止。如果您希望它在同一行上(上面的代码每秒钟将打印一条新行),请执行以下操作:

while :; do printf '%s\r' "$(date +%r)"; sleep 1 ; done

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8325.html,未经允许,请勿转载。