Como posso fazer com que o KornShell exiba a data e a hora no prompt?

3

Na minha caixa AIX, que está usando ksh como o shell padrão, gostaria que o prompt mostrasse a data e a hora seguidas por uma nova linha \n , juntamente com o nome da máquina e diretório de trabalho.

Algo como:

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

Eu tentei o seguinte:

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/} $ '

No entanto, não há nova linha entre a data / hora e o restante do prompt. Parece que agora importa qual a combinação de citações que tento, não consigo fazer uma nova linha aparecer no PS1.

Editar: nixed os espaços após a atribuição de SECONDS e as edições precisam ter 6 caracteres, por isso estou lhe dizendo aqui.

    
por Max Vernon 05.08.2014 / 18:38

2 respostas

3

Você pode usar a nova linha literal em PS1 :

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

ou usando $'\n' com ksh93:

PS1="$_timedhms$'\n' [USERNAME]MACHINE:${PWD#$HOME/} $ "
    
por 05.08.2014 / 18:54
-1

Existe uma maneira bem simples de fazer isso:

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

Se você quiser definir isso permanentemente adicione a entrada para '/ etc / profile'.

    
por 24.09.2016 / 02:24

Tags