Linux prompt
A veces cuando tenemos muchas pestañas abiertas en el iTerm, especialmente en la misma shell (ya sea local o remota) nos interesa poder distinguirlas. Bien el propio iTerm permite hacerlo, pulsando manzana+i (⌘+i) nos aparece una ventana en la cual podemos cambiar el nombre en el campo "name".
También podemos añadir un texto a este nombre desde la shell usando un simple echo con una secuencia de escapes:
echo "^[]1;texto^G"
NOTA: NO vale copiar y pegar ya que no funcionará, ^] es control+v y luego esc, ^G es control+v y luego control+g, es muy importante. Con esto añadimos a la pestaña "texto" a lo que ya estuviera:
También podemos usar otro tipo de escape que es básicamente lo mismo:
echo -ne "\033]0;texto\007"
Lo interesante de esto es que el texto puede ser una variable o una función de Bash o lo que queramos con lo cual podemos añadir que nos indique el path o directorio actual:
echo "^[]1;${PWD/#$HOME/~}^G"
El problema de esto es que no es dinámico y si nos cambiamos de directorio no se cambia a menos que coloquemos esa cadena de escape en la variable PS1 que se encarga de cambiar el prompt:
PS1="\[\033]0;\u@\h: \w\007\]\u@\h:\W>"
Con lo que tanto el prompt como la pestaña se irán actualizando (usuario@host:path>) según vayamos cambiando de directorio. Yo personalmente como prompt uso el siguiente que es a color y doble línea:
PS1="\[\033[33m\]\\u\[\033[37m\]@\[\033[32m\]\\H\[\033[37m\]:\[\033[36m\]\\w\[\033[37m\]\n\\$ "
Si además queremos que nos actualice la pestaña (solo el path para que se vea mejor y más útil):
PS1="\[\033]0;\w\007\]\[\033[33m\]\\u\[\033[37m\]@\[\033[32m\]\\H\[\033[37m\]:\[\033[36m\]\\w\[\033[37m\]\n\\$ "
Esto lo podemos meter en el fichero .bash_profile de nuestra home:
# Actualiza prompt y pestaña export PS1="\[\033]0;\w\007\]\[\033[33m\]\\u\[\033[37m\]@\[\033[32m\]\\H\[\033[37m\]:\[\033[36m\]\\w\[\033[37m\]\n\\$ " # Actualiza solo prompt export PS1="\[\033[33m\]\\u\[\033[37m\]@\[\033[32m\]\\H\[\033[37m\]:\[\033[36m\]\\w\[\033[37m\]\n\\$ "