
En Windows, conectándose a tmux
1.8 en CentOS 7 a través de MobaXterm.
Idealmente, quiero que mis ventanas tmux tengan el nombre del último comando que escribí en cualquier panel que esté activo (como, cd /home
no bash
como {pane_current_command}
impresiones). No tengo idea de cómo hacer eso, así que estoy tratando de descubrir cómo hacer que el nombre coincida con el PS1
del panel activo. Lo intentélas sugerencias en esta respuestacon esto en mi bashrc:
settitle() {
printf "\033k$1\033\\"
}
basic_prompt='${USER:0:3}@${PWD:${#PWD}<15?0:(-15)}'
PROMPT_COMMAND='if [ $? -eq 0 ]; then ((counter++)); else counter=0; fi; settitle($basic_prompt)'
PS1='(\[\e[4m\]${USER:0:3}\[\e[0m\]@\[\e[34m\]${PWD:${#PWD}<15?0:(-15)}\[\e[m\])[$counter]\\$ '
y consiguió
bash: PROMPT_COMMAND: line 10: syntax error near unexpected token '$basic_prompt'
¿Hay alguna forma de nombrar una ventana tmux según el último comando completado?
Si no es así, ¿cómo puedo configurarlo correctamente en my
PS1
, que es dinámico según mi nombre de usuario y ruta?
Respuesta1
Resuelto para tmux 2.6 y tmux 1.8 (probado en ambos).
Para tmux
mostrar un título de ventana dinámico, edítelo ~/.bashrc
a algo similar a lo siguiente:
settitle() {
printf "\033k$1\033\\"
}
dynamic_window_title='${USER:0:3}@${PWD:${#PWD}<25?0:(-25)}'
PROMPT_COMMAND='if [ "$TERM" =~ "screen" ]; then eval prompt=$dynamic_window_title; settitle "$prompt"; fi;'
Y (probablemente) necesitarás ~/.tmux.conf
que tengas:
setw -g automatic-rename on
Según tengo entendido, settitle()
básicamente se trata de cambiar el nombre de la ventana después de cada comando que ejecuta. No entiendo completamente cómo hace esto.
PROMPT_COMMAND
es parte de bash que se ejecuta después de cada comando que ejecutas, lo que te permite hacer cosas interesantes comorealizar un seguimiento de cuántos comandos bash correctos ha escrito seguidos, además de nuestro uso aquí de redefinir continuamente nuestro título.
$TERM
es una variable de entorno que para mí está configurada en "pantalla" (o algo así como "pantalla-256color") cuando estoy en tmux o en "xterm" cuando uso MobaXterm. Verificamos esto porque, de lo contrario, $PS1
esencialmente se imprime doblemente cuando no está en tmux.
Debe dynamic_title
estar entre comillas simples; de lo contrario, se definirá cuando obtenga el suyo ~/.bashrc
y no será dinámico. Sin embargo, es necesario que se defina en algún momento o, de lo contrario, se cambiará el nombre de la ventana literalmente ${USER:0:3}@${PWD:${#PWD}<15?0:(-15)}
. Esto es lo que eval
hace, crear una cadena que es literalmente lo que desea que sea el título de la ventana. Luego simplemente le damos esa cadena settitle()
, entre comillas dobles para que los espacios funcionen correctamente.