2 votos

¿Cambiar de directorio en el Terminal si la carpeta de trabajo se ha movido a la Papelera (en el shell interactivo)?

Así que ocasionalmente estaré trabajando en zsh, en un shell interactivo, y cambiaré al Finder (o Path Finder) y mientras esté allí tiraré la carpeta, que es el directorio de trabajo actual en la Terminal, a la Papelera. Más tarde volveré a la shell para otra cosa, y encontraré que la shell todavía está en la carpeta ahora eliminada.

¿Existe una forma en la que zsh pueda averiguar que, si el padre de la carpeta ha cambiado para convertirse en ".Trash", debería, digamos, cambiar su directorio (en mi caso, idealmente a la carpeta del escritorio)? ¿Pero que sólo debería hacer esto en un shell interactivo, en lugar de en medio de un shell script u otra aplicación?

Puedo buscar en Google e implementar, pero no he sido capaz de encontrar los términos adecuados, y soy más bien lo que yo llamo un empalmador o un kludger que cualquier tipo de programador real. Esperando que alguien haya pensado en estas líneas antes.

1voto

Marlon Richert Puntos 251

No, no hay manera de que Zsh se dé cuenta automáticamente mientras no lo estés usando activamente.

¿Pero qué importa? Puedes simplemente escribir cd para volver a la carpeta de inicio.

Actualización

Muy bien, aquí hay una solución real que he probado y funciona. ¡Gracias a @nohillside por los ánimos!

autohome() {
  # If the present working dir doesn't exist...
  if [[ ! -d $PWD ]]; then
    # Go back to ~
    cd $HOME

    # If the line editor is active, redraw the prompt.
    zle && zle .reset-prompt
  fi
}

# This will call the function above as soon as you start typing.
autoload -Uz add-zle-hook-widget
add-zle-hook-widget line-pre-redraw autohome

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X