Cómo hacer que mi indicador de bash muestre algo en elfinde la línea (con el cursor colocado como de costumbre al principio de la misma línea)? Específicamente, quiero mostrar un mensaje abreviado de un solo carácter, como $
o >
después del cual puedo escribir mi comando. Pero quiero poder ver el directorio de trabajo actual al final de la línea, donde no esté "en mi cara".
No me importa lo que suceda cuando escribo un comando muy largo. Puede sobrescribir el directorio de trabajo actual o cualquier otra cosa que mi mensaje muestre allí.
Alternativamente, no me importa si el mensaje hace que el directorio de trabajo actual se muestre en la parte superior derecha o superior izquierda, o en la parte inferior derecha/izquierda de la pantalla. Simplemente no lo quiero en mi cara todo el tiempo, pero quiero que sea visible.
Respuesta1
Pude configurar PS1 en algo que imprima la ruta actual al final de la línea del mensaje:
PS1='\[$(for ((i=1; i < COLUMNS - ${#PWD} - 3; ++i)) ; do printf " " ; done ; printf "$PWD")\]'
Pero tiene varios problemas que no pude resolver:
- El camino desaparece cuando presionasBackspace
- A pesar de que toda la expresión está encerrada en un marcador de ancho cero
\[...\]
, una vez que imprime también$
o>
, el cursor se mueve hacia el extremo derecho.
He visto personas que usan PROMPT_COMMAND=pwd
en su lugar mostrar la ruta, pero reduce la cantidad de líneas que contienen sus comandos en la terminal.
Otra opción es configurar su terminal o pantalla/tmux para mostrar la ruta en algún lugar. Por ejemplo, lo siguiente funciona en xterm:
PS1='\[\e[m\e]0;\W\a\]$ '
La secuencia \e[m\e]0;...\a
establece el título de la ventana. En la pantalla, es "\033k\033\0134\033kTITLE\033\0134"
.