LoveUnix » 编程开发 & Rational » 请问如何在PS1上实现实时时间显示呢?
让LU留住您的每

一天 让LU博客留住您的每一天
2007-1-16 12:55 pangyi
请问如何在PS1上实现实时时间显示呢?

我试过在/etc/profile中加入了
time=$(date +'%H:%M:%S')
export PS1='$time $LOGNAME:[$PWD}#'

这样PWD还是能显示当前目录,但是不能实时显示时间,只能显示登陆系统的那一刻的时间,就是时间不会变化。
请问怎么样才能实现在命令提示符上实现实时的时间显示呢?就像思科的路由器那样!谢谢!!

2007-1-16 14:06 老农
你这样显示的是变量赋值的时候的值。

2007-1-16 14:07 老农
export PS1='$(date +'%H:%M:%S') $LOGNAME:[$PWD}#'

2007-1-16 14:37 yurual
结合
,[url]http://bbs.loveunix.net/viewthread.php?tid=69058&extra=page%3D3[/url]
来看

2007-1-16 15:56 beginner-bj
这个问题比较难。

2007-1-16 16:07 joan8363
好象显示不了即时的时间?

2007-1-16 16:13 beginner-bj
不同的SHELL,解决的方法肯定不同。KSH上方法始终想不出来。

网上有帖子,不过一直打不开
[url]http://unix.ittoolbox.com/groups/technical-functional/shellscript-l/seeing-the-current-time-in-the-primary-prompt-ps1-1102564[/url]

2007-1-16 18:37 pangyi
为什么系统自定义的PWD就可以实时改变呢?
现在又没机器试了,等明天再试试。。。

2007-1-16 18:56 老农
PWD特殊。你看一下PWD的定义

2007-1-17 08:52 pangyi
export PS1='$(date +'%H:%M:%S') $LOGNAME:[$PWD}#'
农哥,这个还是不能实时显示呀~

2007-1-17 09:31 老农
恩,是不对。
不好办

2007-1-17 09:41 beginner-bj
我贴的网页上有答案。我已经实现了。

09:43:43 ewdbkjy:[/home/ewadmin]$cd /
09:43:56 ewdbkjy:[/]$date
Wed Jan 17 09:43:58 BEIST 2007
09:43:58 ewdbkjy:[/]$su -
root's Password:
09:44:04 ewdbkjy:[/]#pwd
/
09:44:06 ewdbkjy:[/]#cd /home
09:44:10 ewdbkjy:[/home]#date
Wed Jan 17 09:44:15 BEIST 2007
09:44:15 ewdbkjy:[/home]#

2007-1-17 09:56 老农
好不容易打开了,呵呵,人家写的就是好啊:
Copy your code to .profile file. and logouut and login again.

[quote]###   Code Begin Here
# Include time in prompt.
export SECONDS="$(date '+3600*%H+60*%M+%S')"
typeset -Z2 _h; typeset -Z2 _m ; typeset -Z2 _s # 2 digits, zero padded
# hours, minutes and seconds...
_hh="(SECONDS/3600)%24"
_mm="(SECONDS/60)%60"
_ss="(SECONDS)%60"
_time='${_x[(_m=_mm)(_h=_hh)(_s=_ss)]}$_h:$_m:$_s'
export PS1=$(echo "${_time} ${PS1}")
###   Code End Here[/quote]

2007-1-17 10:52 pangyi
我还是打不开那个网址。
不过先收藏了这个脚本先。
一会儿再试!!

2007-1-17 10:55 lj_cd
太强了,学习中

2007-1-17 10:57 lj_cd
我试过了,为什么没有实现呢?

2007-1-17 11:08 lj_cd
其实可以使用另外一种思路,定一个脚本在后台运行,不断的更新PS1的值来实现。我试好了发上来哈

2007-1-17 11:26 老农
你试得不对吧?
我用过了啊

仔细看看

2007-1-17 13:08 beginner-bj
[quote]原帖由 [i]lj_cd[/i] 于 2007-1-17 11:08 发表
其实可以使用另外一种思路,定一个脚本在后台运行,不断的更新PS1的值来实现。我试好了发上来哈 [/quote]


拭目以待

2007-1-17 16:37 busyfan
暂时没有测试环境,不过我想这种思路也是可以的吧,就是用awk来取date的第四段:
export time1="$(date | awk '{ print $4 }')"
export PS1=$(echo "${tme1}")
有测试环境的兄弟帮忙测一下,顺便修正一下里面的语法错误:$
要是这样能实现的话,好象更简单一些噢,呵呵

2007-1-17 17:09 老农
LS的不行,因为做不到实时更新

2007-1-17 19:03 yddll
[quote]原帖由 [i]lj_cd[/i] 于 2007-1-17 10:57 发表
我试过了,为什么没有实现呢? [/quote]

表情符号忘记复制了吧

2007-1-19 19:18 beginner-bj
[quote]原帖由 [i]lj_cd[/i] 于 2007-1-17 11:08 发表
其实可以使用另外一种思路,定一个脚本在后台运行,不断的更新PS1的值来实现。我试好了发上来哈 [/quote]

好几天了哦

2007-1-19 21:09 果勒敏珊延
PS1="\`date +%H:%M:%S\`# " 成不?

`不是单引号,是数字1左边那个。

页: [1] 2


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.