Aqui está minha implementação de acd
. Faz a coisa certa se o argumento é um diretório ou um arquivo. acd
sem argumento é 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'
E aqui está a minha função de conclusão do zsh:
_acd () {
_dirs
_files -g "*.(7z|rar|tar.bz2|tar.gz|tar.xz|tbz2|tgz|zip)(e\''REPLY=\${REPLY}\#'\')"
}
compdef _acd acd apushd