如何在csh提示符中显示当前日期和时间?
在csh中设置动态日期时间提示符的解决方案
csh与bash的提示符机制存在差异,bash可通过PS1="\$(date) $ "实现动态更新,但csh默认不会在每次刷新提示符时重新执行命令,这就是你遇到问题的原因:
- 用双引号
set prompt="date> "时,date仅在设置提示符时执行一次,后续时间不再更新 - 用单引号
set prompt='date > '时,单引号会屏蔽命令解析,直接显示字符串"date"
以下是两种可行的解决方法:
方法1:利用tcsh的内置转义序列(推荐)
多数系统的csh实际是tcsh的软链接,tcsh支持直接在提示符中用转义序列实现动态时间:
# 设置格式为「年-月-日 时:分:秒 >」的提示符 set prompt="%D{%Y-%m-%d %H:%M:%S} > "
这种方式会自动在每次显示提示符时更新时间,无需额外操作。
方法2:纯csh下用别名触发更新
如果是纯csh环境,可通过给常用命令设置别名,在执行命令后重新设置提示符:
# 定义设置提示符的别名 alias setprompt 'set prompt="`date +'%Y-%m-%d %H:%M:%S'` > "' # 初始化提示符 setprompt # 给cd、exit等命令加别名,执行后更新提示符 alias cd 'cd \!*; setprompt' alias exit 'setprompt; exit'
这种方法需要给所有需要更新提示符的命令添加别名,存在一定局限性。
内容的提问来源于stack exchange,提问作者Gor Abgaryan
相关产品推荐
相关产品推荐

