Shell
自動將 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
。我怎樣才能做到這一點?
這是我的
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