
많은 리눅스 사람들은 들어 본 적이 없다 pushd 과 popd하지만 그들은 영원히 주변에있었습니다. 또한 명령 행에서 디렉토리를 탐색하는 프로세스를 대폭 가속화 할 수 있습니다. 사용 방법을 안내해 드리겠습니다.
밀고 터지는 것
빌 조이가 1978 년 C 쉘에 도입 한 혁신 중 하나는 디렉토리 스택의 개념과이를 조작하는 수단이었다. pushd 과 popd. 진지한 형태의 아첨, 디렉토리 스택, pushd, popd Bash와 같은 다른 쉘과 다른 운영 체제에도 곧 통합되었습니다.
스택의 개념은 간단합니다. 항목은 한 번에 하나씩 스택에 배치되며 가장 최근에 추가 된 항목은 항상 최상위 위치를 차지합니다. 스택에서 항목을 검색하면 맨 위에서 아래로 순서대로 제거됩니다. 이러한 특성의 스택을 종종 LIFO (Last In, First Out) 대기열이라고합니다.
사실은, pushd 과 popd 이보다 약간 더 유연하지만 지금은 명심해야 할 좋은 모델입니다.
디렉토리 스택을 언급 할 때 “d”가 pushd 과 popd “디렉토리”를 나타냅니다. 이 명령을 사용하면 디렉토리를 디렉토리 스택으로 푸시하거나 디렉토리 스택에서 팝할 수 있습니다.
그러나 그것은 우리에게 어떤 유익이 있습니까?
푸시가 스택을 채우는 방법
사용할 때 pushd다음 세 가지 일이 발생합니다.
- 사용한 것처럼 디렉토리를 변경합니다
cd. - 디렉토리의 이름과 경로가 스택에 추가됩니다.
- 스택은 공백으로 구분 된 디렉토리 목록으로 표시됩니다.
다음 예제에서 각각의 새로운 디렉토리마다 디렉토리 스택이 어떻게 증가하는지 확인하십시오 pushd 명령. 또한 스택의 상단은 왼쪽에 있으며 새 항목이 표시됩니다.
첫 번째 후 pushd 명령에는 스택에 두 개의 항목, 즉 왼쪽에 남은 디렉토리와 이동 한 항목이 있습니다.
이 예에서는 다음을 입력합니다.
pushd ~/Desktop
pushd ~/Music
pushd ~/Documents
pushd ~/Pictures
pushd ~

마지막 pushd 명령은 우리를 홈 디렉토리로 다시 가져 왔으므로 스택의 첫 번째 항목과 마지막 항목은 물결표 (~)는 홈 디렉토리를 나타냅니다. 이것은 디렉토리가 이미 스택에 있지만 다른 디렉토리에 대해 다시 추가됨을 보여줍니다. pushd 명령.
스택에서 가장 왼쪽에있는 항목 (가장 최근에 추가 된 항목)은 현재 디렉토리입니다.
dirs 명령
당신은 사용할 수 있습니다 dirs 디렉토리 스택을 표시하려면 다음과 같이 명령하십시오.
dirs

스택에는 영향을주지 않으며 표시 만합니다. 사용할 수있는 옵션 중 일부 pushd 스택에서 디렉토리의 위치를 참조하십시오.
각 디렉토리의 숫자 위치를 보려면 -v 아래와 같이 (수직) 옵션 :
dirs -v

물결표 대신 홈 디렉토리의 철자가 틀린 경로를 보는 경우 (~)에 -l (긴 형식) 옵션은 다음과 같습니다.
dirs -v -l

스택에 디렉토리 추가
우리가 보았 듯이 pushd 명령은 디렉토리를 변경하고 새 디렉토리를 스택에 추가하고 스택을 표시합니다. 당신은 사용할 수 있습니다 -n 현재 디렉토리를 변경하지 않고 스택에 디렉토리를 추가하는 (회전 없음) 옵션.
디렉토리 스택은 다음과 같습니다.
dirs -v -l

이제 우리는 pushd -n 옵션과 함께 명령과 /home/dave 매개 변수로 디렉토리. 그런 다음 디렉토리 스택을 다시 확인합니다.
우리는 다음을 입력합니다 :
pushd -n /home/dave
dirs -v -l

그만큼 /home/dave 디렉토리는 슬롯 1의 스택에 추가되었으며 이는 스택의 두 번째 위치입니다. 슬롯 0은 항상 현재 디렉토리이므로 최상위 위치를 차지할 수 없습니다.
우리는 현재 디렉토리를 떠나지 않았습니다. ~/Videos스택의 다른 위치로 회전되지 않았습니다.
스택을 회전시켜 디렉토리 변경
당신은 숫자 매개 변수를 사용할 수 있습니다 pushd 스택의 디렉토리로 이동하면 스택이 회전합니다. 이동하기로 선택한 디렉토리가 스택의 첫 번째 항목이됩니다.
스택의 디렉토리를 위치 번호로 참조합니다. 스택의 맨 위 또는 맨 아래에서 셀 수 있습니다. +3과 같은 양수의 경우 맨 위에서 계산합니다. -2와 같은 음수의 경우 맨 아래부터 계산합니다.
/ home / dave / Documents 디렉토리는 위치 3에 있습니다. 다음 명령을 사용하여 해당 디렉토리를 이동할 수 있습니다.
pushd +3

선택한 디렉토리 위의 스택에있는 디렉토리가 스택의 맨 아래로 이동합니다. 선택한 디렉토리가 이제 최상위 위치를 차지하고 해당 디렉토리로 이동합니다.
스택 맨 아래에있는 디렉토리로 변경하려면 다음 명령을 사용할 수 있습니다.
pushd -0

마지막 디렉토리는 첫 번째 슬롯으로 이동하고 다른 모든 디렉토리는 스택에서 아래로 이동합니다. 우리는 ~/Pictures 예배 규칙서.
popd 명령
당신은 사용할 수 있습니다 popd 스택에서 디렉토리를 제거하는 명령입니다.
디렉토리 스택을 보면 위치 1의 디렉토리가 /home/dave. 스택에서 이것을 제거하려면 다음을 입력하여 숫자를 전달하십시오. popd:
dirs -v -l
popd +1

그만큼 /home/dave 디렉토리가 제거되었고 스택에서 그 아래에있는 디렉토리는 각각 한 곳 위로 이동했습니다.
우리가 할 수있는 것처럼 pushd스택 맨 아래부터 계산할 수 있습니다. popd. 스택에서 마지막 디렉토리를 제거하려면 다음을 입력하십시오.
popd -0

그만큼 ~/Music 스택의 마지막 위치에서 디렉토리가 제거됩니다.
디렉토리를 변경하고 무언가를 한 다음 이전 디렉토리로 돌아가려면 다음을 사용할 수 있습니다. pushd 과 popd 함께.
우리는 사용할 것이다 pushd 다른 디렉토리로 이동합니다. 우리는 사용할 것이다 popd 스택의 최상위 디렉토리를 버리고 두 번째 위치의 디렉토리로 이동합니다. 이 디렉토리는 방금 이동 한 디렉토리이므로 원래 있던 디렉토리로 돌아갑니다.
우리는 다음을 입력합니다 :
pushd ~
popd

우리는에서 시작 ~/Projects 예배 규칙서, pushd 홈 디렉토리로 이동 한 다음 popd 다시 ~/Projects 예배 규칙서.
전체 스택을 통한 회전
중첩 된 디렉토리가있는 스택을 회전하는 방법을 설명하지만 파일 시스템의 어느 곳에서나 디렉토리를 사용할 수 있습니다.
가장 깊은 중첩 수준은 다음과 같습니다.
/home/dave/Projects/htg/articles
홈 디렉토리에서 기사 디렉토리에 도달 할 때까지 각 디렉토리를 점진적으로 내려갑니다. 그런 다음 디렉토리 스택을 살펴 보겠습니다.
우리는 다음을 입력합니다 :
pushd ~/Projects
pushd htg
pushd articles
dirs -v -l

반복해서 발행 할 때 pushd +1 명령을 사용하면 디렉토리 스택을 순환 할 수 있습니다. 이 작업을 자주하면 pushd +1 별칭에 대한 좋은 후보가 될 것입니다.
다음을 입력하십시오.
pushd +1

관련 : Linux에서 별명 및 쉘 기능을 작성하는 방법
스택 스탬핑
오래된 습관으로 돌아가고 사용하기 쉽습니다. cd 디렉토리를 변경합니다. 그렇게하면 스택의 첫 번째 디렉토리를 스탬프 처리합니다. 첫 번째 슬롯이 현재 작업 디렉토리 용으로 예약되어 있으므로 다른 슬롯 중 어느 것도 위치를 변경하지 않으므로 이는 불가피합니다.
이렇게하려면 다음을 입력하십시오.
dirs -v -l
cd ~/Music
dirs -v -l

당신이 익숙해지면 pushd 과 popd 명령을 사용하고 (별칭을 사용하여 별명을 작성하는 경우) 디렉토리 사이를 빠르게 이동할 수 있습니다.
이것이 우리가 커맨드 라인을 둘러싼 이유입니다. 효율성은 그렇지요?
관련 : 알아야 할 중요한 Linux 명령








