如何让 KornShell 在提示符中显示日期和时间?

如何让 KornShell 在提示符中显示日期和时间?

在用作默认 shell 的 AIX 机器上,ksh我希望提示符显示日期和时间,后跟换行符\n,以及计算机名称和工作目录。

就像是:

2014/08/05 10:58:43
[username]machinename:/some/path/here $

我尝试过以下方法:

unset _Y _M _D _h _m _s
eval $(date "+_Y=%Y;_M=%m;_D=%d;_h=%H;_m=%M;_s=%S")
((SECONDS=3600*${_h#0}+60*${_m#0}+${_s#0}))
typeset -Z2 _h _m _s
_tsub="(_m=(SECONDS/60%60)) == (_h=(SECONDS/3600%24)) + (_s=(SECONDS%60))"
_timehm='${_x[_tsub]}$_h:${_m}'
_timehms='${_x[_tsub]}$_h:$_m:${_s}'
_timedhms=$_Y'/'$_M'/'$_D" "'${_x[_tsub]}$_h:$_m:${_s}'

PS1="$_timedhms'\n' "'[USERNAME]MACHINE:${PWD#$HOME/} $ '

但是,日期/时间和提示的其余部分之间没有换行符。现在看来无论我尝试什么引号组合,我都无法在 PS1 中出现换行符。

答案1

您可以在以下位置使用文字换行符PS1

PS1="$_timedhms
> [USERNAME]MACHINE:${PWD#$HOME/} $ "

$'\n'与 ksh93 一起使用:

PS1="$_timedhms$'\n' [USERNAME]MACHINE:${PWD#$HOME/} $ "

答案2

有一个非常简单的方法可以做到这一点:

export PS1=$(echo "\033[01;33m"`date +%D`" "`date +%T`"\033[0m""\n"`whoami`@"\033[3;36m"`hostname`"\033[0m"':$PWD'#)

如果您想永久设置此项,请将该条目添加到“/etc/profile”中。

相关内容