Linux에서 푸시 및 팝을 사용하는 방법

0
769
Ubuntu 스타일 Linux 데스크탑의 터미널 창
Fatmawati Achmad Zaenuri / 셔터 스톡

많은 리눅스 사람들은 들어 본 적이 없다 pushdpopd하지만 그들은 영원히 주변에있었습니다. 또한 명령 행에서 디렉토리를 탐색하는 프로세스를 대폭 가속화 할 수 있습니다. 사용 방법을 안내해 드리겠습니다.

밀고 터지는 것

빌 조이가 1978 년 C 쉘에 도입 한 혁신 중 하나는 디렉토리 스택의 개념과이를 조작하는 수단이었다. pushdpopd. 진지한 형태의 아첨, 디렉토리 스택, pushd, popd Bash와 같은 다른 쉘과 다른 운영 체제에도 곧 통합되었습니다.

스택의 개념은 간단합니다. 항목은 한 번에 하나씩 스택에 배치되며 가장 최근에 추가 된 항목은 항상 최상위 위치를 차지합니다. 스택에서 항목을 검색하면 맨 위에서 아래로 순서대로 제거됩니다. 이러한 특성의 스택을 종종 LIFO (Last In, First Out) 대기열이라고합니다.

사실은, pushdpopd 이보다 약간 더 유연하지만 지금은 명심해야 할 좋은 모델입니다.

디렉토리 스택을 언급 할 때 “d”가 pushdpopd “디렉토리”를 나타냅니다. 이 명령을 사용하면 디렉토리를 디렉토리 스택으로 푸시하거나 디렉토리 스택에서 팝할 수 있습니다.

그러나 그것은 우리에게 어떤 유익이 있습니까?

푸시가 스택을 채우는 방법

사용할 때 pushd다음 세 가지 일이 발생합니다.

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

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

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

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

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

터미널 창에서 "pushd ~ / Desktop", "pushd ~ / Music", "pushd ~ / Documents", "pushd ~ / Pictures"및 "pushd ~"명령

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

스택에서 가장 왼쪽에있는 항목 (가장 최근에 추가 된 항목)은 현재 디렉토리입니다.

dirs 명령

당신은 사용할 수 있습니다 dirs 디렉토리 스택을 표시하려면 다음과 같이 명령하십시오.

dirs

터미널 창의 "dirs"

스택에는 영향을주지 않으며 표시 만합니다. 사용할 수있는 옵션 중 일부 pushd 스택에서 디렉토리의 위치를 ​​참조하십시오.

각 디렉토리의 숫자 위치를 보려면 -v 아래와 같이 (수직) 옵션 :

dirs -v

터미널 창의 "dirs -v"명령

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

dirs -v -l

터미널 창의 "dirs -v -l"명령

스택에 디렉토리 추가

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

디렉토리 스택은 다음과 같습니다.

dirs -v -l

터미널 창의 "dirs -v -l"명령

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

우리는 다음을 입력합니다 :

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

터미널 창에서 "pushd -n / home / dave"및 "dirs -v -l"명령

그만큼 /home/dave 디렉토리는 슬롯 1의 스택에 추가되었으며 이는 스택의 두 번째 위치입니다. 슬롯 0은 항상 현재 디렉토리이므로 최상위 위치를 차지할 수 없습니다.

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

스택을 회전시켜 디렉토리 변경

당신은 숫자 매개 변수를 사용할 수 있습니다 pushd 스택의 디렉토리로 이동하면 스택이 회전합니다. 이동하기로 선택한 디렉토리가 스택의 첫 번째 항목이됩니다.

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

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

pushd +3

터미널 창에서 "pushd +3"명령

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

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

pushd -0

터미널 창에서 "pushd -0"명령

마지막 디렉토리는 첫 번째 슬롯으로 이동하고 다른 모든 디렉토리는 스택에서 아래로 이동합니다. 우리는 ~/Pictures 예배 규칙서.

popd 명령

당신은 사용할 수 있습니다 popd 스택에서 디렉토리를 제거하는 명령입니다.

디렉토리 스택을 보면 위치 1의 디렉토리가 /home/dave. 스택에서 이것을 제거하려면 다음을 입력하여 숫자를 전달하십시오. popd:

dirs -v -l
popd +1

터미널 창에서 "dirs -v -l"및 "popd +1"명령

그만큼 /home/dave 디렉토리가 제거되었고 스택에서 그 아래에있는 디렉토리는 각각 한 곳 위로 이동했습니다.

우리가 할 수있는 것처럼 pushd스택 맨 아래부터 계산할 수 있습니다. popd. 스택에서 마지막 디렉토리를 제거하려면 다음을 입력하십시오.

popd -0

터미널 창에서 "popd -0"명령

그만큼 ~/Music 스택의 마지막 위치에서 디렉토리가 제거됩니다.

디렉토리를 변경하고 무언가를 한 다음 이전 디렉토리로 돌아가려면 다음을 사용할 수 있습니다. pushdpopd 함께.

우리는 사용할 것이다 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 ~ / Projects", "pushd htg", "pushd article"및 "dirs -v -l"명령

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

다음을 입력하십시오.

pushd +1

터미널 창에서 "pushd +1"명령

관련 : Linux에서 별명 및 쉘 기능을 작성하는 방법

스택 스탬핑

오래된 습관으로 돌아가고 사용하기 쉽습니다. cd 디렉토리를 변경합니다. 그렇게하면 스택의 첫 번째 디렉토리를 스탬프 처리합니다. 첫 번째 슬롯이 현재 작업 디렉토리 용으로 예약되어 있으므로 다른 슬롯 중 어느 것도 위치를 변경하지 않으므로 이는 불가피합니다.

이렇게하려면 다음을 입력하십시오.

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

터미널 창의 "dirs -v -l", "cd ~ / Music"및 "dirs -v -l"명령


당신이 익숙해지면 pushdpopd 명령을 사용하고 (별칭을 사용하여 별명을 작성하는 경우) 디렉토리 사이를 빠르게 이동할 수 있습니다.

이것이 우리가 커맨드 라인을 둘러싼 이유입니다. 효율성은 그렇지요?

관련 : 알아야 할 중요한 Linux 명령