自動 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

相關內容