Автоматизация cd в каталог архива в ~ / .avfs

Я использую avfs для удобного просмотра архивов из командной строки. Это создает представление обо всем дереве каталогов в ~/.avfs (поэтому, если файл /path/to/foo существует, то он также отображается как ~/.avfs/path/to/foo ), и, кроме того, если /path/to/foo – файл архива, тогда ~/.avfs/path/to/foo# – это каталог, представляющий собой каталог верхнего уровня содержимого архива.

Когда я хочу исследовать внутреннюю часть архива, это немного громоздко: мне нужно переключиться в иерархию ~/.avfs , а завершение работы cd не поможет мне вводить эти имена архивов и добавлять # в конец ,

Я хотел бы иметь возможность запускать acd foo.zip из /path/to/dir и запускать cd ~/.avfs/path/to/dir# . С достойным завершением для acd . Как я могу это сделать?

One Solution collect form web for “Автоматизация cd в каталог архива в ~ / .avfs”

Вот моя реализация acd . Он делает правильную вещь, является ли аргумент каталогом или архивом. acd без аргументов эквивалентен 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' 

И вот моя функция завершения zsh:

 _acd () { _dirs _files -g "*.(7z|rar|tar.bz2|tar.gz|tar.xz|tbz2|tgz|zip)(e\\''REPLY=\${REPLY}\\#'\\')" } compdef _acd acd apushd 
  • zsh выбирает вложенный текст
  • Вставка имеет нечетное поведение в оболочке
  • Что это за команда HOME?
  • Странный вывод на многострочной команде в Китти?
  • zsh: Повторять каждое утверждение?
  • Убивание подпроцессов после завершения или уничтожения скрипта
  • zch не работает корректно в Mint
  • Распространение тысяч файлов по подпапкам
  • Как узнать, почему и где установлена ​​переменная env $ PATH?
  • Запуск сценария bash из оболочки zsh
  • Как уменьшить влияние изменения значения массива `fpath` на время запуска zsh?
  • Linux и Unix - лучшая ОС в мире.