Shell

自動將 cd 放入 ~/.avfs 下的存檔目錄

  • May 19, 2017

我使用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。我怎樣才能做到這一點?

這是我的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

引用自:https://unix.stackexchange.com/questions/366178