script menú hacer example crear como bash title gnu-screen xterm

bash - hacer - menú en shell script de linux



Establecer screen-title desde shellscript (9)

De http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#s3

secuencias de escape xterm

Los títulos de las ventanas y los iconos se pueden cambiar en un xterm en ejecución mediante el uso de secuencias de escape de XTerm. Las siguientes secuencias son útiles a este respecto:

  • ESC]0;stringBEL - Establece el nombre del icono y el título de la ventana en una cadena
  • ESC]1;stringBEL - Establecer el nombre del icono en una cadena
  • ESC]2;stringBEL - Establecer el título de la ventana en una cadena

donde ESC es el carácter de escape (/ 033), y BEL es el carácter de campana (/ 007).

Imprimir una de estas secuencias dentro de la xterm hará que cambie la ventana o el título del icono.

Nota: estas secuencias se aplican a la mayoría de las derivadas de xterm, como nxterm, color-xterm y rxvt. Otros tipos de terminales a menudo usan escapes diferentes; ver el apéndice para ejemplos. Para obtener una lista completa de las secuencias de escape xterm, consulte el archivo ctlseq2.txt, que viene con la distribución xterm, o xterm.seq, que viene con la distribución rxvt.

Imprimir las secuencias de escape

Para obtener información que sea constante a lo largo de la vida útil de este shell, como el host y el nombre de usuario, bastará con hacer un simple eco de la cadena de escape en el archivo shell rc:

echo -n "/033]0;${USER}@${HOST}/007"

debe producir un título como username @ hostname, suponiendo que las variables de shell $ USER y $ HOST están configuradas correctamente. Las opciones requeridas para el eco pueden variar según el shell (ver ejemplos a continuación).

Para información que puede cambiar durante la vida del shell, como el directorio de trabajo actual, estos escapes realmente necesitan ser aplicados cada vez que el prompt cambia. De esta forma, la cadena se actualiza con cada comando que emite y puede hacer un seguimiento de la información como el directorio de trabajo actual, el nombre de usuario, el nombre de host, etc. Algunos shells proporcionan funciones especiales para este fin, otros no y tenemos que insertar las secuencias de título directamente en la cadena de solicitud. Esto se ilustra en la siguiente sección.

¿Es posible establecer el Screen-Title usando un script de shell?

Pensé en algo así como enviar los comandos clave Strg+A Shift-A Name <Enter>

Busqué alrededor de una hora sobre cómo emular las pulsaciones de teclas en un script de shell, pero no encontré la respuesta.

¡Gracias por la ayuda!

Beerweasle


Las siguientes son otras formas de programar el cambio de nombre de los títulos de pantalla:

Al agregar la siguiente configuración a .ssh/config establece el título de la pantalla automáticamente al iniciar sesión en un sistema que usa SSH:

Host * PermitLocalCommand yes LocalCommand [ "$TERM" == ''screen'' ] && echo -ne "/033k%h/033//"

En lugar de %h , que representa el nombre de host de la máquina con la que se está conectando, puede usar %n , que es el nombre / alias real que utilizó para conectarse a la máquina.

NOTA: Necesita OpenSSH> = v5.1 para poder usar los parámetros Localhost% n y% h. Consulte ''man ssh_config'' para obtener más información sobre LocalCommand.

Para revertir automáticamente el título, volver al del nombre de host del localhost, después de cerrar la sesión SSH, puede agregar una secuencia de escape a la variable de solicitud PS1 en .bashrc :

export PS1=''you_favorite_PS1_here'' if [ "$TERM" == ''screen'' ]; then export PS1=${PS1}''/[/033k/h/033///]'' fi

Estos trucos son especialmente útiles cuando se usa una configuración .screenrc que te muestra en qué pantalla ''pestaña'' estás trabajando actualmente. Agregue algo como lo siguiente a .screenrc para que funcione:

caption always "%{= kY}%-w%{= Yk}%n %t%{-}%+w%{ kG} %-= @%H - %LD %d %LM - %c"


Para agregar a la respuesta de Espo, las secuencias de escape xterm también se pueden aplicar a la variable Bash PS1

ESC]0;stringBEL -- Set icon name and window title to string ESC]1;stringBEL -- Set icon name to string ESC]2;stringBEL -- Set window title to string

Ejemplo

PS1=''/e]0;string/a''



Pruebe los siguientes comandos, no necesita editar ningún archivo o configuración como ~ / .bashrc, se puede usar en tiempo de ejecución.

Establecer texto estático como título: (Mi título)

export PS1=''/[/e]0;My Title/a/]${debian_chroot:+($debian_chroot)}/u@/h:/w/$ ''

Establecer la variable local / global como título: ($ USER)

export PS1=''/[/e]0;$USER/a/]${debian_chroot:+($debian_chroot)}/u@/h:/w/$ ''

Establecer salida de comando como título: (nombre de host)

export PS1=''/[/e]0;`hostname`/a/]${debian_chroot:+($debian_chroot)}/u@/h:/w/$ ''

Establecer como predeterminado (Revertir):

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


Puede establecer el título de la pantalla / xterm usando las siguientes líneas:

#!/bin/bash mytitle="Some title" echo -e ''/033k''$mytitle''/033//'

[ACTUALIZACIÓN]: a petición, también incluyo la solución propuesta por @Espo a continuación:

Según la versión de xterm o la distribución de Linux, la línea anterior puede funcionar o no y puede probar los valores predeterminados de xterm:

#!/bin/bash mytitle="Some title" echo -e ''/033]2;''$mytitle''/007''

Para obtener más información sobre los detalles, consulte: http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#s3 o consulte la respuesta de @Espo a continuación.


También puede llamar a la pantalla y decirle que establezca un título:

screen -X title "new title"

Si estás en una ventana de pantalla, establecerá el nombre de esa ventana. Si no está en la pantalla, configurará el nombre de la ventana abierta más recientemente.


# add the following in your ~/.bashrc or ~/.bash_profile PROMPT_COMMAND=''printf "/033]0;%s@%s:%s/007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"''

o mejor aún copie todo el concepto para personalizar sus configuraciones de bash entre muchos hosts de here


set_screen_title () { echo -ne "/ek$1/e//" }