나는 현재 트리 아래에 있고 루트에서 서로 다른 두 경로 사이를 오가며 많은 작업 시간을 보내고 있습니다. cd
사용자를 자신이 있던 마지막 디렉터리로 이동시키는 것에 대한 논쟁이 있다면 내 인생이 훨씬 더 쉬울 것이라는 생각이 들었습니다 .
즉, 내가 다음에 속한다면:
/etc/foo/bar/baz/moo
그런 다음 다음을 입력합니다.
cd /var/lib/fubarred_app/blargh/logs
전체 경로를 다시 입력하지 않고도 첫 번째 디렉터리로 돌아갈 수 있기를 바랍니다.
각 위치에서 충분한 명령을 사용하기 때문에 메모리 키가 잘리지 않습니다. 돌아가서 원하는 경로를 찾는 것이 직접 입력하는 것만큼이나 어렵습니다.
이전 디렉터리로 이동할 수 있는 짧은 명령이 있나요?
답변1
명령
cd -
대부분의 주류 쉘에서 필요한 스왑을 수행합니다. 더 오래된 변형은
cd "$OLDPWD"
이전 작업 디렉터리가 포함된 환경 변수를 사용합니다.
그만큼POSIX 매뉴얼 페이지cd
언급:
설명
위 단계를 실행하는 동안 PWD 환경 변수가 변경되면 OLDPWD 환경 변수도 이전 작업 디렉터리(즉, cd 호출 직전의 현재 작업 디렉터리)의 값으로 변경됩니다.
피연산자
- 하이픈이 피연산자로 사용되는 경우 이는 다음 명령과 동일합니다.
cd "$OLDPWD" && pwd
이전 작업 디렉터리로 변경된 다음 해당 이름을 씁니다.
답변2
브라이언의 답변 외에도 스택과 같은 디렉토리를 구축하는 pushd
및 도 있다는 점을 언급할 가치가 있습니다. popd
이는 Windows NT에서도 사용할 수 있습니다. 그러나 모든 쉘에서 사용할 수 있는 것은 아닙니다.
예를 들어, 세 개의 서로 다른 디렉터리로 이동할 수 있으며 다음을 호출할 때 항상 스택을 볼 수 있습니다 pushd
.
charon:~ werner$ pushd Documents/
~/Documents ~
charon:Documents werner$ pushd ../Movies/
~/Movies ~/Documents ~
charon:Movies werner$ pushd ../Downloads/
~/Downloads ~/Movies ~/Documents ~
popd
그리고 연속으로 세 번 호출하면 스택에 있는 해당 디렉터리에 역순으로 도달하게 됩니다. 동시에 스택은 다시 비워집니다.
charon:Downloads werner$ popd
~/Movies ~/Documents ~
charon:Movies werner$ popd
~/Documents ~
charon:Documents werner$ popd
~
charon:~ werner$ popd
-bash: popd: directory stack empty
Zsh를 사용하는 경우; 여기 cd
에는 의 항목을 스택에 자동으로 푸시하는 AUTO_PUSHD 옵션이 있습니다 .
답변3
"점프" 프로그램이 있습니다
이를 통해 모든 종류의 디렉터리 탐색이 쉬워집니다. 경로의 일부를 제공하여 사용하면 제대로 작동합니다.
귀하의 경우
~$ j baz
/etc/foo/bar/baz/moo$
~$ j bla
/var/lib/fubarred_app/blargh/logs$
이 프로그램에 원하는 문자를 지정할 수 있습니다. "j"는 전통입니다 :)
j2와 z는 여러 검색어를 지원합니다.
~$ j baz src
/home/me/projects/baz/repository/trunk/src$
... 그리고 더 많은 옵션이 있습니다.
~$ j -l # list directories by "frecency"(frequency + recency) score
~$ j -r PATTERN # match by rank only, not recency
~$ j -t PATTERN # match by recency only, not rank
답변4
게다가
cd -
그리고cd $OLDPWD
이전에 입력했던 명령어 CTRL-R
를 몇 글자 누르고 입력하면 이력 검색을 이용할 수 있습니다 . 반복해서 cd
누르면 CTRL-R
오래된 일치 항목이 표시됩니다.
변경할 경로가 세 개 이상인 경우 이 방법이 더 유용합니다.