¿Cómo cambio el indicador de bash en la terminal gnome sin estropear el título de la terminal en Ubuntu 16?

¿Cómo cambio el indicador de bash en la terminal gnome sin estropear el título de la terminal en Ubuntu 16?

No me gusta que todas las rutas de directorio largas ocupen el espacio de mi terminal, así que las trunco ​​mediante un script de Python. Edité el archivo .bashrc y reemplacé PS1 por

export PROMPT_COMMAND='PS1="$(python /home/vinay/bash_promt.py)"'.

Y cuando hago el título de esa terminal ya no funciona. Simplemente muestra TerminalLo que es irritante. Puedo cambiar el título manualmente ejecutando el siguiente comando en bash:

PROMPT_COMMAND='echo -ne "\033]0;CUSTOM TITLE\007"'

¿Hay alguna manera de configurar el título del terminal en el mensaje personalizado que se está configurando en mi bash?

Respuesta1

Para gnome-terminal, el título del terminal se establece a través PROMPT_COMMANDdel cual se define en /etc/profile.d/vte-2.91.sh.

PROMPT_COMMAND, tal como se define en este script, hace dos cosas:

  • cambia el título del terminal usando la secuencia de escape OSC 0 ( \033]0;NEW_TITLE\007),

  • cambia la noción del terminal del directorio actual usando la secuencia de escape OSC 7 ( \033]7;NEW_CURRENT_DIRECTORY\007, esto se factoriza en la __vte_osc7función).

Si eliminas el segundo de tu PROMPT_COMMAND, las ventanas o pestañas de tu terminal recién abiertas no se abrirán en el directorio donde estabas en el terminal anterior. Lo más probable es que no quieras esto.

Entonces, en los scripts de inicio de su shell, después de obtener el origen, vte-2.91.shdebe crear su preferido PROMPT_COMMANDque establezca el título de manera similar a vte-2.91.shy establezca el directorio de trabajo actual exactamente como se hace de forma predeterminada.

No conozco ninguna forma de hacer referencia al PS1valor resuelto de (es decir, después de sustituir el nombre de usuario y demás) dentro PROMPT_COMMANDo en cualquier otro lugar (y mucho menos filtrar las secuencias de escape, como los cambios de color). Si desea ver la misma cadena en su mensaje y en el título de la ventana, creo que necesita duplicar la construcción de esa cadena para PS1y PROMPT_COMMAND.

Respuesta2

Esto funcionará para ti

abierto ~/.bashrc. Encuentra la línea que dice:

PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"

Comente esta línea poniendo un #carácter delante:

# PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"

Ahora agregue esta línea (es posible que desee colocarla justo después de la línea comentada):

PROMPT_COMMAND='echo -ne "\033]0;Custom Name\007"'

ReemplazarCustom Namecon lo que quieras cambiar el título de la Terminal.

Espero que esto ayude.

Respuesta3

La secuencia de escape a utilizar esESC]2;nuevo títuloBELdóndeESCyBELson los personajes de escape y campana. Como \[\e]2;NEWTITLE\a\]. Usando secuencias de escape #Bash, cambiar el título en su mensaje se ve así:

export PS1='\[\e]2;new title\a\]prompt > ' referencia del documento

Entonces, un ejemplo de un mensaje bash truncado multicolor que también tiene un título de terminal personalizado es:

export PS1='\[\e]2;$PWD\a\]\e[93m$USER\e[97m@\e[90m$HOSTNAME \e[93m$ \e[0m'

En ese ejemplo, el título de la terminal siempre reflejará el directorio de trabajo actual ( $PWD) y el mensaje de la terminal siempre tendrá el siguiente aspecto, independientemente del directorio en el que se encuentre: user@hostname $.

Puede reemplazar $PWDcon CUSTOM TITLEpara que el título del terminal siempre refleje CUSTOM TITLE.

Actualizar
Tenga cuidado al no incluir caracteres no impresos en \[y \]. Funciona sin él y llevo años haciéndolo sin ellos. Sin embargo, como descubrí hoy con algunas configuraciones,puede causar algunos problemasen la terminal. A continuación se muestra una versión más limpia que utiliza variables y ajusta los códigos de color:

T_YELLOW='\[\e[93m\]'
T_WHITE='\[\e[97m\]'
T_GRAY='\[\e[90m\]'
T_DEFAULT='\[\e[0m\]'
T_TITLE='\[\e]2;$PWD\a\]'
export PS1="${T_TITLE}${T_YELLOW}$USER${T_WHITE}@${T_GRAY}$HOSTNAME${T_YELLOW} $ ${T_DEFAULT}"

información relacionada