~/.avfs 아래의 아카이브 디렉터리로 자동으로 cd

~/.avfs 아래의 아카이브 디렉터리로 자동으로 cd

나는 사용한다AVFS쉘 프롬프트에서 아카이브 내부를 편리하게 볼 수 있습니다. 이렇게 하면 아래에 전체 디렉터리 트리 보기가 생성되고 ~/.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

관련 정보