Ksh

如何讓 KornShell 在提示中顯示日期和時間?

  • November 23, 2021

在用作預設 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 中出現換行符。

您可以在中使用文字換行符PS1

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

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

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

有一種非常簡單的方法可以做到這一點:

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

如果您想永久設置此項,請將條目添加到“/etc/profile”。

引用自:https://unix.stackexchange.com/questions/148550