问题描述
我更喜欢使用终端,并花费大部分时间使用它。我正在寻找一种在终端并行使用时查看时间的方法。时间过后,时间会自动更改。如果它显示在我的命令提示符下,那就太棒了。
如果这是我在终端中的命令提示符:
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,然后重新显示编辑缓冲区。
如果要尝试,请执行以下步骤:
-
使用以下命令安装Z shell:
sudo apt-get install zsh
-
首次运行
zsh
时,系统提示您选择0
。 -
编辑
~/.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 }
保存文件并关闭它。
-
在终端中,当您仍在使用zsh时,请运行
source ~/.zshrc
或简单地zsh
来重置提示。现在您的提示应如下所示:saurav@saurav-P4I45Gx-PE[1:25:21]:~$
有一些颜色。
-
如果喜欢,请运行
chsh -s /bin/zsh
将当前的 shell 程序更改为/bin/zsh
(要使此更改生效,必须使用re-login)。 -
如果要从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