bash에서 "pushd -n"에 해당하는 zsh는 무엇입니까?

bash에서 "pushd -n"에 해당하는 zsh는 무엇입니까?

"물결표 약어"(예: 디렉터리 목록의 두 번째 항목 참조)를 사용하여 참조할 수 있도록 디렉터리 스택에 디렉터리를 푸시하고 싶지만 ~1실제로 해당 디렉터리로 전환하고 싶지는 않습니다. Bash에서는 -n플래그를 사용하여 이 작업을 수행하는 것 같습니다 pushd.

zsh에서 이에 상응하는 것은 무엇입니까?

답변1

편집할 수 있습니다dirstack바꾸다.

function insertd {
  emulate -L zsh
  typeset -i n=0
  while [[ $1 == [+-]<-> ]]; do
    n=$1
    shift
  done
  if (($# != 1)); then
    echo 1>&2 "Usage: insertd [+N|-N] DIR"
    return 3
  fi
  dirstack=($dirstack[1,$n] $1 $dirstack[$n,-1])
}

이 동작을 자체에 추가하려면 pushd함수로 만들 수 있습니다.

function pushd {
  if [[ $1 == -n ]]; then
    shift
    insertd "$@"
  else
    builtin pushd "$@"
  fi
}

-n이 간단한 버전은 bash처럼 다른 옵션과의 조합을 처리 하지 않습니다 .

너도 할 수 있어변수 편집곧장.

vared dirstack

답변2

언제든지 밀어넣은 다음 교체할 수 있습니다.

예를 들어,pushd -q ~/Downloads; pushd

관련 정보