둘 다의 실제 용도는 무엇입니까 pushd
? 및 위에 이 두 명령을 사용하면 popd
어떤 이점이 있습니까 ?cd
cd -
편집하다cd -
: 이 두 명령의 실제 사용 예나 디렉터리와 함께 스택을 유지해야 하는 이유(탭 완성, 단축 별칭 cd ..
등이 있는 경우) 를 찾고 있습니다 .
답변1
pushd
,popd
, 그리고dirs
조작할 수 있는 쉘 내장 함수입니다.디렉토리 스택. 디렉터리를 변경하는 데 사용할 수 있지만 원래 디렉터리로 돌아갑니다.
예를 들어
다음 디렉터리에서 시작합니다.
$ pwd
/home/saml/somedir
$ ls
dir1 dir2 dir3
dir1로 푸시
$ pushd dir1
~/somedir/dir1 ~/somedir
$ dirs
~/somedir/dir1 ~/somedir
dirs
이 명령은 이제 스택에 2개의 디렉터리가 있음을 확인합니다. dir1
그리고 원래 디렉토리인 somedir
. 노트:우리의 "현재" 디렉토리는 입니다 ~/somedir/dir1
.
../dir3으로 푸시됨( dir1
지금 그 안에 있으므로)
$ pushd ../dir3
~/somedir/dir3 ~/somedir/dir1 ~/somedir
$ dirs
~/somedir/dir3 ~/somedir/dir1 ~/somedir
$ pwd
/home/saml/somedir/dir3
dirs
이제 디스플레이 스택에는 3개의 디렉터리가 있습니다. dir3
, dir1
, 그리고 somedir
. 방향에 주의하세요. 각각의 새 디렉토리가 왼쪽에 추가됩니다. 디렉토리 팝업을 시작하면 왼쪽에서도 나타납니다.
수동으로 디렉토리를 다음으로 변경하십시오.../dir2
$ cd ../dir2
$ pwd
/home/saml/somedir/dir2
$ dirs
~/somedir/dir2 ~/somedir/dir1 ~/somedir
이제 목차 팝업을 시작해 보세요.
$ popd
~/somedir/dir1 ~/somedir
$ pwd
/home/saml/somedir/dir1
갑자기 로 돌아왔습니다 dir1
.
다시 인기가...
$ popd
~/somedir
$ pwd
/home/saml/somedir
우리는 우리가 시작한 곳으로 돌아왔습니다 somedir
.
다소 혼란스러울 수 있지만 스택의 헤드는 현재 있는 디렉터리입니다. somedir
따라서 다시 돌아가면 dirs
다음이 표시됩니다.
$ dirs
~/somedir
우리 스택은 실제로 비어 있습니다.
$ popd
bash: popd: directory stack empty
답변2
가지다pushd
popd
명령에 대한 매우 유용한 사용 사례여러 폴더를 동시에 처리하는 데 사용됩니다.
스택은 열거되어 있으므로 매우 쉽게 탐색할 수 있습니다. 이는 작업하는 동안 여러 작업 폴더를 사용할 수 있음을 의미합니다.
간단한 예는 아래를 참조하세요.
먼저 샘플 폴더 구조를 만들어 보겠습니다.
user@vb:~$ mkdir navigate
user@vb:~/navigate$ mkdir dir1
user@vb:~/navigate$ mkdir dir2
user@vb:~/navigate$ mkdir dir3
그런 다음 모든 폴더를 스택에 추가할 수 있습니다.
user@vb:~/navigate$ pushd dir1/
~/navigate/dir1 ~/navigate
user@vb:~/navigate/dir1$ pushd ../dir2/
~/navigate/dir2 ~/navigate/dir1 ~/navigate
user@vb:~/navigate/dir2$ pushd ../dir3/
~/navigate/dir3 ~/navigate/dir2 ~/navigate/dir1 ~/navigate
다음 방법으로 찾을 수 있습니다.
user@vb:~/navigate/dir3$ dirs -v
0 ~/navigate/dir3
1 ~/navigate/dir2
2 ~/navigate/dir1
3 ~/navigate
안전한 탐색을 위해 마지막(0) 폴더는 항상 덮어쓰므로 두 번 추가해야 합니다.
user@vb:~/navigate/dir3$ pushd .
user@vb:~/navigate/dir3$ dirs -v
0 ~/navigate/dir3
1 ~/navigate/dir3
2 ~/navigate/dir2
3 ~/navigate/dir1
4 ~/navigate
이제 이러한 폴더로 이동하여 폴더의 별칭처럼 스택을 사용할 수 있습니다. 다음 부분은 설명이 필요하다고 생각합니다.
user@vb:~/navigate/dir3$ cd ~4
user@vb:~/navigate$ dirs -v
0 ~/navigate
1 ~/navigate/dir3
2 ~/navigate/dir2
3 ~/navigate/dir1
4 ~/navigate
user@vb:~/navigate$ cd ~3
user@vb:~/navigate/dir1$ dirs -v
0 ~/navigate/dir1
1 ~/navigate/dir3
2 ~/navigate/dir2
3 ~/navigate/dir1
4 ~/navigate
user@vb:~/navigate/dir1$ touch text.txt
user@vb:~/navigate/dir1$ cp text.txt ~2
user@vb:~/navigate/dir1$ ls ~2
text.txt
user@vb:~/navigate/dir1$ dirs -v
0 ~/navigate/dir1
1 ~/navigate/dir3
2 ~/navigate/dir2
3 ~/navigate/dir1
4 ~/navigate
추가 팁에 대한 별칭을 만드는 것입니다 dirs -v
.
예를 들어:
# In ~/.bashrc
alias dirs="dirs -v"
답변3
CD만으로는 불가능한 dirs 스택을 사용하는 간단한 사용 사례:
pushd .
현재 디렉터리 XX를 dirs
스택에 추가합니다. 그런 다음 디렉터리 트리에서 얼마나 "멀리" 있는지에 관계없이 ,를 사용하여 이동 cd
하고 XX로 돌아갈 수 있습니다(여러 수준 건너뛰기, 옆으로 건너뛰기 등 가능). popd
특히 bash 스크립트에 유용합니다.
답변4
~을 위한세게 때리다, 기본적으로: pushd
cd가 아닌 cd를 사용하여 디렉토리를 변경할 수 있습니다. 실제 사용: 방문한 디렉토리(올바른: 누적)의 기록을 저장하고 디렉토리 간에 전환할 수 있습니다.
pushd /home; pushd /var; pushd /tmp
스택 사용량을 보고 dirs
더 쉽게 탐색하려면("스택 항목" 수를 얻으려면 다음을 사용하십시오.)
dirs -v
산출:
me@myhost:/home$ dirs -v
0 /home
1 /var
2 /tmp
이제 이 숫자를 cd
및 와 유사하게 사용하십시오.~
cd ~1
그러나 이제 숫자가 다시 정렬되고 위치 "0"이 변경되므로 pushd
다음과 같이 디렉터리를 맨 위 위치로 두 번 이동합니다(또는 위치 0에 더미를 사용).
me@myhost:/home$ dirs -v
0 /home
1 /home
2 /var
3 /tmp
이제 1..3은 자신의 위치를 유지합니다
(스택에서 현재 디렉토리를 해제하거나 기록에서 제거하려면 를 사용하십시오 popd
.)