Linux에서 pushd 및 popd를 사용하는 방법

많은 Linux 사용자는 push 및 popd에 대해 들어본 적이 없지만 영원히 사용됩니다. 또한 명령줄에서 디렉터리를 탐색하는 프로세스의 속도를 크게 높일 수 있습니다. 사용 방법을 안내해 드리겠습니다.

pushd와 popd는 무엇입니까?

혁신 중 하나 빌 조이 그의 1978년에 통합 C 쉘 이것은 디렉토리 스택의 개념이자 이를 조작하는 수단인 pushd와 popd였습니다. 가장 진실된 형태의 아첨인 모방은 디렉토리 스택, pushd 및 popd가 곧 다른 쉘(예: Bash) 및 다른 운영 체제에 통합되었습니다.

스택의 개념은 간단합니다. 항목은 한 번에 하나씩 스택에 배치되며 가장 최근에 추가된 항목이 항상 맨 위 위치를 차지합니다. 항목이 스택에서 검색되면 위에서 아래로 순서대로 제거됩니다. 이러한 성격의 스택은 종종 다음과 같이 언급됩니다. 후입 선출법 (LIFO) 대기열.

사실, pushd와 popd는 이것보다 조금 더 유연하지만, 이것은 지금으로서는 염두에 두기에 좋은 모델입니다.

디렉토리 스택을 언급할 때 pushd 및 popd의 “d”가 “디렉토리”를 의미한다는 것은 놀라운 일이 아닙니다. 이러한 명령을 사용하면 디렉토리 스택에 디렉토리를 푸시하거나 디렉토리 스택에서 제거할 수 있습니다.

그러나 그것이 우리에게 어떤 유익을 줍니까?

pushd가 스택을 채우는 방법

pushd를 사용하면 다음 세 가지 일이 발생합니다.

cd를 사용한 것처럼 디렉토리를 변경합니다.
디렉토리의 이름과 경로가 스택에 추가됩니다.
스택은 공백으로 구분된 디렉토리 목록으로 표시됩니다.

다음 예에서 각각의 새로운 pushd 명령으로 디렉토리 스택이 어떻게 증가하는지 확인하십시오. 또한 스택의 맨 위는 왼쪽에 있으며 새 항목이 표시됩니다.

첫 번째 pushd 명령 이후에는 스택에 두 개의 항목이 있습니다. 즉, 떠난 디렉토리와 이동한 디렉토리입니다.

이 예에서는 다음을 입력합니다.

pushd ~/Desktop
pushd ~/Music
pushd ~/Documents
pushd ~/Pictures
pushd ~

그만큼

마지막 pushd 명령은 우리를 홈 디렉토리로 데려갔으므로 스택의 첫 번째 항목과 마지막 항목은 홈 디렉토리를 나타내는 물결표(~)입니다. 이것은 디렉토리가 이미 스택에 있지만 다른 pushd 명령에 대해 다시 추가됨을 보여줍니다.

  iPhone의 홈 화면에서 앱과 페이지를 제거하는 방법

또한 가장 최근에 추가된 항목인 스택의 맨 왼쪽 항목이 현재 디렉토리입니다.

dirs 명령

아래와 같이 dirs 명령을 사용하여 디렉토리 스택을 표시할 수 있습니다.

dirs

그만큼

스택에는 영향을 주지 않고 단지 표시할 뿐입니다. pushd와 함께 사용할 수 있는 일부 옵션은 스택의 디렉토리 위치를 참조합니다.

각 디렉토리의 숫자 위치를 보려면 아래와 같이 -v(수직) 옵션을 사용할 수 있습니다.

디렉토리 -v

그만큼

물결표(~) 대신 홈 디렉토리의 철자가 표시된 경로를 보려면 다음과 같이 -l(긴 형식) 옵션을 추가하십시오.

dirs -v -l

그만큼

스택에 디렉토리 추가

우리가 보았듯이 pushd 명령을 사용하면 디렉토리 변경, 스택에 새 디렉토리 추가, 스택 표시의 세 가지 작업을 수행합니다. -n(회전 없음) 옵션을 사용하여 현재 디렉토리를 변경하지 않고 스택에 디렉토리를 추가할 수 있습니다.

다음은 디렉토리 스택입니다.

dirs -v -l

그만큼

이제 pushd 명령을 -n 옵션과 함께 사용하고 /home/dave 디렉토리에 매개변수로 pas를 ​​지정합니다. 그런 다음 디렉토리 스택을 다시 확인합니다.

다음을 입력합니다.

pushd -n /home/dave
dirs -v -l

그만큼

/home/dave 디렉토리는 스택의 두 번째 위치인 슬롯 1의 스택에 추가되었습니다. 슬롯 0은 항상 현재 디렉토리이기 때문에 최상위 위치를 차지할 수 없습니다.

현재 디렉토리인 ~/Videos를 떠나지 않았으므로 스택의 다른 위치로 회전되지 않았습니다.

스택을 회전하여 디렉토리 변경

pushd와 함께 숫자 매개변수를 사용하여 스택의 모든 디렉토리로 이동할 수 있으며 이동 시 스택이 회전합니다. 이동하기로 선택한 디렉토리가 스택의 첫 번째 항목이 됩니다.

위치 번호로 스택의 디렉토리를 참조합니다. 스택의 맨 위 또는 맨 아래에서 셀 수 있습니다. +3과 같은 양수의 경우 위에서부터 계산합니다. -2와 같은 음수의 경우 맨 아래부터 계산합니다.

/home/dave/Documents 디렉토리는 위치 3에 있습니다. 다음 명령을 사용하여 해당 디렉토리를 이동할 수 있습니다.

pushd +3

그만큼

우리가 선택한 디렉토리 위의 스택에 있는 디렉토리는 스택의 맨 아래로 이동됩니다. 선택한 디렉토리가 이제 최상위 위치를 차지하고 해당 디렉토리로 이동합니다.

  Ubuntu 17.10을 설치하거나 업그레이드하는 방법

스택 맨 아래에 있는 디렉토리로 변경하려면 다음 명령을 사용할 수 있습니다.

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한 다음 ~/Projects 디렉토리로 다시 popd했습니다.

전체 스택을 통해 회전

일부 중첩 디렉토리가 있는 스택을 회전하는 방법을 설명할 것이지만 파일 시스템의 모든 디렉토리를 사용할 수 있습니다.

가장 깊은 중첩 수준은 다음과 같습니다.

/home/dave/Projects/htg/articles

홈 디렉토리에서 기사 디렉토리에 도달할 때까지 각 디렉토리를 따라 점진적으로 내려갑니다. 그런 다음 디렉토리 스택을 살펴보겠습니다.

다음을 입력합니다.

pushd ~/Projects
pushd htg
pushd articles
dirs -v -l

그만큼

pushd +1 명령을 반복적으로 실행하면 디렉토리 스택을 순환할 수 있습니다. 이 작업을 자주 수행하는 경우 pushd +1이 별칭에 대한 좋은 후보가 될 것입니다.

다음을 입력합니다.

pushd +1

그만큼

스택 위에 스탬핑

이전 습관으로 되돌리고 cd를 사용하여 디렉토리를 변경하는 것은 쉽습니다. 그렇게 하면 스택의 첫 번째 디렉터리에 스탬프를 찍게 됩니다. 이것은 첫 번째 슬롯이 현재 작업 디렉토리용으로 예약되어 있기 때문에 불가피합니다. 다른 슬롯은 위치를 변경하지 않습니다.

  'Animal Crossing: New Horizons'에서 할로윈을 준비하는 방법

이렇게 하려면 다음을 입력합니다.

dirs -v -l
cd ~/Music
dirs -v -l

그만큼

pushd 및 popd 명령에 익숙해지면(그리고 아마도 이를 사용하여 몇 가지 별칭을 생성할 수 있음) 디렉터리 사이를 빠르게 이동할 수 있습니다.

이것이 우리가 명령줄에 매달리는 이유입니다. 효율성이 떨어지죠?