~/.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

관련 정보