酷徒LOGO
0 0 评论
文章标签:cloc  COM  时钟  TERM  COMM  命令提示符  终端  Comma  

问题:

我更喜欢使用终端,大部分时间使用它。 我正在寻找在终端中看到时间的方法,同时使用它。 当它通过时,时间会自动改变。 如果它能显示我的命令提示,那将是非常棒的。

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


saurav@saurav-P4I45Gx-PE:~$



然后,我想看到 clock(time):


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



或者


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



或者任何其他格式 06:27:01 是时间。 我想要的只是显示时间流逝时的变化时间。

所以有什么方法可以实现这个?


回答 1:

我不确定使用默认的bash shell ( 但我不认为这是不可能的) 实现这一点是否如此简单。 你可能需要一个命令/函数,它可以在每秒刷新命令提示,而不会干扰你在提示符中键入的任何内容。

这个命令有一个内置命令,叫做 zle,它在与 reset-prompt 参数一起使用时强制扩展提示,然后重新显示编辑缓冲区。

如果你想尝试它,请按以下步骤操作:

  • 使用以下命令安装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 ( 这里更改需要登录才能生效)。

  • 如果要退出 zsh shell,请运行 exit

  • 以下是我终端的15秒视频:

    running clock in terminal before the command prompt


回答 2:

如果希望在终端中显示运行时间,可以使用以下命令。 它将显示在你的终端右上角。


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



enter image description here

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

其他方法可能在PS1中使用控制字符


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



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



但是在这种方法中,只有在按下enter键后,你的时间才会刷新。

如果你想将上述方法永久添加到 ~.bashrc 文件中,请添加上面的命令( 你喜欢或者都喜欢的那个)。


回答 3:

如果你要做的只是显示时钟,只需使用 date:


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



这将显示每秒的时间,直到你用CtrlC停止它。 如果你希望它位于同一行( 上面将每秒打印一个新行) 上,请执行以下操作:


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




回答 4:

这个问题已经有几天了,这里是我所学的所有材料的编辑文章。 具体来说,我的目标是在BASH的提示下显示时钟。 就像在他回答中提到的,关键是找到能够不断刷新命令提示或者变量的函数,而不干扰屏幕或者使用任何你喜欢的方式。 同时,如G_P所示,这是可以实现的,因这里在刷新屏幕时屏幕上的不断重新绘制。 我已经非常接近于修改G_P发布的代码,但我相信Radu的答案是最接近操作的。 不要再说了,这里是我所学到的一些事情,为你的判断提供了一些信息。

我的首选解决方案为 #1,: 终端多路复用器

终端多路复用器是一种允许将终端屏幕分为两个或者多个屏幕的软件。 特别是,我想引起Byobu终端的注意。 基于ncurses的终端 模拟器,允许你显示时间。CPU百分比。内存和所有其他指标。 在我的byobu终端中,你可以看到CPU温度。电池百分比。互联网连接质量。CPU频率。日期和时间。 如果你主要关心在终端中不断监视这些事件,Byobu就是。 事实上,我已经非常喜欢它了,我已经设置了它来自动加载到wince中。 唯一的怪癖是,在tty中,实际上不能合并单独的Windows - 只使用F3和F4键之间的switch。

Screenshot of my byobu terminal

另一种涉及复用 Windows的方案是使用 splitvt,它将屏幕分割成两个部分。 你可以运行一个终端时钟,如 tty-clock,使用,命令,或者你可以使用脚本自己编码。 更多关于这个的内容在屏幕截图中,你可以看到分割的一部分与正常的bash提示,在下面,你可以看到一个运行的脚本,命令,使用命令刷新输出。

enter image description here

#2,do Loop Loop这可能是询问问题的人想要用bash实现的。

G_P发布了一个包含 while dotput 命令的很好的解决方案。 但是在g_p代码里有两个我不喜欢的东西。 一个时钟在提示的右边,两个因为睡眠周期为 1 ( 请参考原始代码,它表示睡眠),屏幕每秒重绘一次。 这样的操作是编辑bash提示符,使bash操作符更低,改变g_p的代码,使tput操作符在提示符下定位,而时钟的循环不超过prompt秒,而时钟不会搞乱屏幕。 首先,这是我的提示:


PS1='${debian_chroot:+($debian_chroot)}n[*u@Ubuntu*]n $(date) :w$ ' 



下面是g_p代码的修改: enter code here


 while sleep 60;do tput sc;tput cup 0 0;date +%R;tput rc;done &



我曾经注意到,上面的代码并没有及时提高时钟。 以下是更好的版本: while true; do tput sc;tput cup 0 0;date +%R;tput rc; sleep 60; done & 先把时钟放在屏幕上,然后让bash知道进入 60秒睡眠周期

,的时间和睡眠周期,因为这样我只能监视小时和分钟,而不是每秒钟。 这样,我在屏幕上的任何文本都不受影响,对于大部分的( 只有在我运行命令时,时钟时钟才会刷新) 来说。

enter image description here

PS1行已经在。bashrc文件中,所以你只需要稍微调整一下。 that循环应该在同一文件中添加,最好在最初添加 # 注释,这是你最初添加的内容。 不要忘记总是备份任何像这样的文件,以防你使bubu和需要回到它的方式。

#3, 脚本和其他

这部分只是为了那些想看时间的人。 对于那些希望不断监视它的人来说,#1 和 #2 是首选的选项。

就像我们已经看到的,while循环非常有用。 你可以使用以下方法创建时钟:do,日期和睡眠命令。

enter image description here

按回车/输入,你基本上会看到每秒清除的屏幕上显示的日期命令的输出。 如果你不想每次都键入所有内容,请将所有这些内容转换为脚本:


#!/bin/bash



while true


do


clear;date


sleep 1


done



现在可以在bash的一个实例中使用splitvt运行该脚本,而在它的他的。

另一个解决方案是 watch -n1 date 命令,它将持续执行日期命令,周期为 1秒。

在总结本问题的过程中,我已经学习了一些问题,希望我的发现能够帮助你,希望我能够帮助你。 Byobu终端是最好的解决方案,但自己决定,做一些研究,并选择哪种方式最适合你。

在研究时,我发现了一些问题:

我的原创帖子,最简约的解决方案: 编辑 ~/.bashrc 文件。 我更喜欢用nano来编辑所以

 
nano ~/.bashrc



 

这是我自己编辑的file:的一部分


if ["$color_prompt" = yes ]; then


 PS1='${debian_chroot:+($debian_chroot)}[33[01;32m]u@h[33[00m]:[$' 


else


 # PS1='${debian_chroot:+($debian_chroot)}[*u@Ubuntu*]:w$ '


 PS1='${debian_chroot:+($debian_chroot)}[*u@Ubuntu*]t:w$ '


fi



语句之后,第一行注释为 # ( 这是我的旧提示),现在第二行是你想要的,特别是 t 操作符。 显示以 24小时格式运行的时间。 有关更多信息,请查看 还有一个小提示,我在用其他的东西,因为我没有用彩色提示。

如果我需要添加任何内容,我应该知道这个答案,但至少我个人不会增加任何新的内容。


回答 5:

 
export PS1='t$'



 

因为我更喜欢在终端上尽可能少地显示背景信息,所以通常我会自定义每个会话作为一个 #$,等等 ( 如果你想永久地改变它,解决方案是完美的)

要修改它以显示当前的状态,我可以

 
export PS1='t$'



 

12小时格式的时间。 你可以查看bash文档以获得其他选项。


回答 6:

这一次仅在执行新提示时才会发生更改

你可以将以下内容添加到你的.bashrc:


export PS1="[e]0;u@h: wa]${debian_chroot:+($debian_chroot)}u@h:[t]:w$"



这将产生:


USER@HOST:[12:59:59]:~$ _



更多信息:http://www.thegeekstuff.com/2008/09/bash-shell-ps1-10-examples-to-make-your-linux-prompt-like-angelina-jolie/#8

在上面的页面中搜索"。8.使用PS1变量的可用代码创建你自己的提示"。


回答 7:

我非常喜欢 ncmpcpp 时钟特性,由 0-key ( 查看屏幕截图) 触发。 有关安装过程的详细信息,请参阅这里 post文件。

enter image description here


回答 8:

受 g_p和 Serg的影响,我尝试在bash中创建函数。 但是我不确定每秒检查ps命令是否是一个完成的过程或者不是一个完整的过程。


prompttime() {


 PSCOLGREEN="[$(tput setaf 2)]"


 PSCOLRESET="[$(tput sgr0)]"


 PS1="${PSCOLGREEN}$ ${PSCOLRESET}[--:--:-- W]"


 ["$PROMPTCURRTTY" ] || {


 PROMPTCURRTTYtemp=$(tty)


 PROMPTCURRTTY=${PROMPTCURRTTYtemp///dev//}


 unset PROMPTCURRTTYtemp; }


 PROMPTSTATE="[S]s+"


 while :; do


 sleep 1


 ["$(ps a | grep"${PROMPTCURRTTY}.*${PROMPTSTATE}.*$(basename $SHELL)")" ] &&


 { tput sc


 tput hpa 3


 echo -en"$(date +%T)"


 tput rc; }


 continue


 done&


}






文章标签:COM  COMM  Comma  显示  TERM  终端  cloc  时钟  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备17041772号-2  |  如果智培  |  酷兔英语  |  帮酷