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