
yo sueloavfspara mirar cómodamente dentro de los archivos desde un símbolo del shell. Esto crea una vista de todo el árbol de directorios ~/.avfs
(por lo que, si /path/to/foo
existe un archivo, también es visible como ~/.avfs/path/to/foo
) y, además, si /path/to/foo
es un archivo comprimido, entonces ~/.avfs/path/to/foo#
es un directorio que es una vista del directorio de nivel superior del contenido del archivo.
Cuando quiero explorar el interior de un archivo, es un poco engorroso: tengo que cambiar a la ~/.avfs
jerarquía y la finalización decd
no me ayudapara escribir esos nombres de archivo y agregar un #
al final.
Me gustaría poder huir acd foo.zip
y /path/to/dir
correr cd ~/.avfs/path/to/dir#
. Con terminación decente para acd
. ¿Cómo puedo hacer esto?
Respuesta1
Aquí está mi implementación de acd
. Hace lo correcto ya sea que el argumento sea un directorio o un archivo. acd
sin argumento es equivalente a acd .
.
avfs_cd () {
case "$2" in
"$HOME/.avfs/"*) :;;
/*) set -- "$1" "$HOME/.avfs$2";;
*) set -- "$1" "$HOME/.avfs$PWD/$2"
esac
if ! [ -d "$2" ]; then
set -- "$1" "${2}#"
fi
"$1" "$2"
}
alias acd='avfs_cd cd'
alias apushd='avfs_cd pushd'
Y aquí está mi función de finalización de zsh:
_acd () {
_dirs
_files -g "*.(7z|rar|tar.bz2|tar.gz|tar.xz|tbz2|tgz|zip)(e\\''REPLY=\${REPLY}\\#'\\')"
}
compdef _acd acd apushd