~/.avfs 下のアーカイブディレクトリに自動的に cd

~/.avfs 下のアーカイブディレクトリに自動的に cd

私は使うAVFSシェルプロンプトでアーカイブの内部を便利に見ることができます。これにより、下に完全なディレクトリツリービューが作成され~/.avfs(ファイルが/path/to/foo存在する場合でも表示されます)、さらにアーカイブファイルの~/.avfs/path/to/foo場合、アーカイブコンテンツの最上位ディレクトリビューが作成されます。/path/to/foo~/.avfs/path/to/foo#

アーカイブ内を閲覧したいときは少し面倒です。階層に切り替える必要があり~/.avfscd 私には役に立たないこれらのアーカイブ名を入力し、#最後に1つを追加します。

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

おすすめ記事