在终端提示中添加时间戳?


53

我想知道是否可以在终端提示中添加时间戳,如果可以,如何实现?


检查此链接以同步显示运行时钟
2016年

Answers:


60

将此行添加到~/.bashrc文件中:

export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\ "

因此输出将类似于:

[07:00:31] user@name:~$

有时我会遇到时间不正确且时间较长的感觉,例如有些延迟。我虽然可以用它来查看某些命令要花多长时间(咕unt ..)。怎么可能?
凯文·辛珀2014年

2
@ devav2:是否可以指定时区?
河马

有没有一种方法可以在使用root用户时在终端上添加时间戳?我只有普通用户才能使用时间戳记。谢谢
Yufenyuy Veyeh Dider

4
对于date命令,您可以替换+%H:%M:%S+%T
snapfractalpop

5
这与我的终端包装缠在一起,所以我改用这里详述的方法。只需在您的PS1中添加'\ D {%T}'
rbennett485 '16

25

我的解决方案是使用http://bashrcgenerator.com/生成此PS1行以放入.bashrc中:

export PS1="\t [\u@\h \W]\\$ \[$(tput sgr0)\]"

看起来像

13:05:54 [chad@work-laptop:~/Downloads]$ ls -al

使用PROMPT_COMMAND为我弄乱了历史。在循环浏览历史记录时,如果出现较长的行,则会以与添加到前面的时间戳相同的字符数截断提示的结尾。例如

13:14:38 [chad@work-laptop:~/Doexport PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\\] "

此行不能编辑,因为它没有在正确的位置显示字符,因为您没有在看起来像键入的位置键入内容。

我猜测可以使用PROMPT_COMMAND来完成,也许可以使用[$(tput sgr0)]部分,但是PS1可以工作。


此处的链接非常适合于进一步定制邮票。
cellepo '16

16

而不是添加日期的提示本身,你可以添加日期之前通过将下面一行在提示符你的.bashrc。为此,您还需要安装cowsay。这是一种显示日期并保持简短提示的有趣方式:

cowsay "Welcome $USER! It's now $(date '+%A %B %d %Y %r')"

以其当前形式,它将读取当前环境中的$USERdate变量,而无需修改即可在任何系统上运行。

在此处输入图片说明


8
将其放在提示中的目的是要知道上一次执行特定命令的时间。
James Oltmans '17

6

由于我的信誉度不足,无法在答案中添加评论以改善答案。似乎我可以添加信息的唯一方法是创建第二个答案。因此,我将重复回答的内容并以此为基础。

编辑您想要为其修改日期戳的用户的.bashrc文件。

如果看到“ user @ host:〜$”,则位于当前用户的主目录中。.bashrc文件是一个隐藏文件,因为它的前缀是点“。”。要在列表中查看它,您将需要使用长列表。

您可以使用“ ls -a”,然后应看到“ .bashrc”文件。

使用文本编辑器编辑文件。例如,“ nano .bashrc”,“ vim .bashrc”,“ vi .bashrc”,“ pico .bashrc”或任何您想使用的编辑器。

如果要对此编写脚本并计划将其添加到许多用户的许多外壳中,则最好将“ echo”命令与附加“ >>”运算符结合使用。例如,

echo "export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\\"" >> .bashrc

如果使用该方法,请确保您位于要对其进行修改的用户的当前工作目录中。要检查这一点,可以使用“ pwd”或打印工作目录命令。

如果您不喜欢在“]”尾括号和用户名之间留出多余的空格,请使用经过稍微修改的正则表达式:

export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\\"

如果您直接编辑文件,请使用此选项。


1
您可以建议修改。
muru

4
export PROMPT_COMMAND=date

在发出每个提示之前打印日期。


1

打开您的.bashrc通行证

vim ~/.bashrc

然后将以下内容添加到.bashrc

#PS1="[\A \u@\h \W\a]$" 

\A时间在哪里(\W仅路径的结尾,如果需要整个当前工作目录路径,则删除)。然后输入

source ~/.bashrc

您将看到如下内容:

[16:04 trwood@cobalt04 ~/MCEq_dev]$

1
删除\W将不会显示任何路径。\w将给出完整的路径。
Zanna

0

只是添加到@ devav2的答案中:

对于新手来说,更容易阅读的echo命令是:

export PROMPT_COMMAND='echo -n "$(date +%H:%M:%S) "'

代替

export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\ "

由于echo命令不是要在导出时进行评估,因此使用单引号而不是双引号会更有意义。使用单引号引用完整的命令,然后允许你使用双引号的arguement引用到echo命令,无需特殊字符转义像[$


1
转义符用于格式化(方括号)。我看不出这会增加接受的答案。
年长者怪胎

您也可以将它们添加到'echo -n“ $(date +%H:%M:%S)”':'echo -n“ [$(date +%H:%M:%S)]”'需要逃脱。将字符串用作echo命令的优点是,现在您无需转义bash可评估的内容,从而使其更易于阅读。
qwertyzw

@ElderGeek我添加了进一步的说明。希望对您有所帮助。
qwertyzw

0

我认为正确的处理方法是找到$HOME/.bashrc设置的代码PS1,对其进行注释并添加个人代码。例如,这是我的方块:

PS1_DATE="\D{%Y-%m-%d %H:%M:%S}"

if [ "$color_prompt" = yes ]; then
    PS1="[$PS1_DATE \[\e]0; \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\[\033[00m\]\[\033[01;34m\]\w \[\033[00m\]\$] "
    #PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='[$PS1_DATE ${debian_chroot:+($debian_chroot)}\w \$] '
    #PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi

输出:

[2019-06-18 15:54:29 ~/Desktop $] echo "It's late!"

0

在命令提示符中显示时间戳的最简单语法可能是:

    PS1='\D{%F} \t $...'

哪里

\D{format}日期格式(请参阅man bash“ PROMPTING”部分)为

%F全日制 与%Y-%m-%d相同(请参阅man date“格式”部分),并且

\t是24小时制HH:MM:SS的当前时间(请参见man bash“ PROMPTING”部分)

nano ~/.bashrc

如上所示对PS1变量进行更改

source ~/.bashrc


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.