自动 cd 到 ~/.avfs 下的存档目录

自动 cd 到 ~/.avfs 下的存档目录

我用AVFS从 shell 提示符方便地查看档案内部。这将在 下创建整个目录树的视图~/.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。我怎样才能做到这一点?

答案1

这是我的实现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

相关内容