Para iTerm2, ¿cómo hago que el directorio de trabajo aparezca en el título de la ventana?

Recientemente cambié a iTerm2 desde la aplicación Terminal predeterminada y tengo un problema de usabilidad.

En Terminal, el directorio de trabajo en el que se encuentra aparece en la barra de título junto con el proceso y el tamaño de píxel. Por ejemplo, cuando hace clic en Ventana para cambiar entre diferentes sesiones de Terminal, verá: directorio_de_trabajo - proceso - tamaño_de_píxel.

En iTerm2, lamentablemente solo se muestra el proceso en la barra de título. Entonces, si estoy trabajando en varias ventanas de iTerm2 en diferentes directorios, no puedo diferenciar fácilmente cuál es cuál cuando hago clic en Ventana para elegir una. Sé que puedo cambiar fácilmente entre las ventanas de iTerm2 una vez que seleccione una, pero me gustaría identificar exactamente qué ventana quiero de inmediato. (Por cierto, uso Witch, y Command-tabbing tampoco ayuda porque aquí nuevamente solo aparece el proceso en la lista).

¿Alguna sugerencia? Revisé todas las preferencias y no vi nada. Crear perfiles no es exactamente lo que busco; solo me gustaría ver el directorio de trabajo actual en los títulos de las ventanas de iTerm2.

Respuestas (6)

Con la \033]0;TEXT\007secuencia de escape.

Ejemplo de uso en Bash:echo -ne "\033]0;$PWD\007"

Que podría agregar a su $PROMPT_COMMANDsi usa Bash, o adjuntarlo de otra manera para PS1que se vuelva a evaluar con frecuencia.

Ejemplo:export PROMPT_COMMAND='echo -ne "\033]0;$PWD\007"'

Esto funciona. Solo para ser pedante, agregue la línea de exportación mencionada anteriormente a su archivo ~/.bashrc.
esto es genial Muchas gracias; esto me ayudó a comprender que la respuesta es realmente sobre la programación de bash y no tiene nada que ver con iTerm vs Terminal. Como seguimiento para cualquier otra persona, consulte faqs.org/docs/Linux-mini/Xterm-Title.html#s3 y linfo.org/echo.html . ¡Gracias de nuevo!
y para obtener solo el último segmento de la ruta echo -ne "\033]0;${PWD##*/}\007"(gracias a github.com/barryclark/bashstrap por mostrar el camino)
@Spencer: No hay razón para exportar la variable de shell PROMPT_COMMAND y, en general, no se debe exportar una variable de shell a menos que tenga una necesidad específica de compartir la variable con cada programa ejecutado por el shell . De forma predeterminada, las variables que utiliza el shell no deben exportarse; solo exporta variables que están destinadas a ser transmitidas a otros procesos. ~/.bashrcserá ejecutado por cada shell interactivo, por lo que no necesitan heredar las variables establecidas por este script.
Bueno, exportar es cómo usas PROMPT_COMMAND... Y generalmente es mejor para cosas complicadas link
En PowerShell:Write-Host "`e]0;$PWD`a" -NoNewLine
Funciona, pero una vez que accede a un shell remoto, el directorio de trabajo no se actualiza. Sigo buscando una solución para eso.
¿Hay alguna manera de que este sea el comportamiento predeterminado cada vez que abro una nueva ventana de iTerm? No quiero tener que usar el comando anterior cada vez.
@ChrisNielsen, editaría su .profile, o el archivo conf de su shell...

Si está utilizando zsh (que es el predeterminado en macOS 10.15+), coloque esto en su ~/.zshrc en su lugar:

if [ $ITERM_SESSION_ID ]; then
precmd() {
  echo -ne "\033]0;${PWD##*/}\007"
}
fi

También puede escribir \033como \ey \007como \a.

Posiblemente, una respuesta más simple es usar la funcionalidad de interpolación de cadenas que ofrece iTerm 2. Proporcionar:

\(currentTab.currentSession.path)

en la configuración daría como resultado un título de ventana cambiado. La opción es accesible a través dePreferences>>Profiles>>[Profile we need to modify]>>Window

ajustes Ajustes

RESULTADOS Título de la ventana

Wow... ¡¡¡finalmente la respuesta correcta que estaba buscando!!! Si quieres que esto funcione para TABS, usa\(current.Session.path)
Arreglando la respuesta de @vanHoesel: para pestañas es\(currentSession.path)

Me gusta esta respuesta de esta esencia para agregarla al título de la pestaña

# put this in your .bash_profile
if [ $ITERM_SESSION_ID ]; then
  export PROMPT_COMMAND='echo -ne "\033];${PWD##*/}\007"; ':"$PROMPT_COMMAND";
fi

Puede establecer con relativa facilidad el título de la pestaña en iTerm2 en macOS en el directorio de trabajo actual colocando lo siguiente en su ~/.zshrcperfil:

# Set iTerm Tab Title to Current Working Directory
DISABLE_AUTO_TITLE="true"

iterm_tab_title() {
  echo -ne "\e]0;${PWD##*/}\a"
}
add-zsh-hook precmd iterm_tab_title

Utiliza una función de enlace precmd para ejecutar antes de cada solicitud, configurando el título de la pestaña haciendo eco del directorio de trabajo actual.

En buena medida, algunos temas de Oh My Zsh se meten con el título de la ventana de Terminal, por lo que la configuración DISABLE_AUTO_TITLE="true"soluciona esto.

No tengo suficiente karma para comentar, pero si quieres que se muestre ~/diren lugar de /users/username/dirpuedes usar

if [ $ITERM_SESSION_ID ]; then
precmd() {
  echo -ne "\033]0;$(dirs)\007"
}
fi

en cambio.