KornShell이 ​​프롬프트에 날짜와 시간을 표시하도록 하려면 어떻게 해야 합니까?

KornShell이 ​​프롬프트에 날짜와 시간을 표시하도록 하려면 어떻게 해야 합니까?

기본 셸로 사용되는 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"에 추가하십시오.

관련 정보