본문 바로가기
Old Posts/Linux

[Linux] Bash - pushd, popd 명령

by A6K 2021. 2. 19.

Bash에서 현재 작업 디렉토리를 변경하기 위해서 'cd' 명령을 사용한다. Change Directory라는 의미를 갖고 있는 cd 명령을 통해 디렉토리를 오가면서 작업을 할 수 있다.

cd 명령

cd 명령은 bash 명령을 배울 때, "Hello world" 프로그램처럼 가장 먼저 배우는 명령어다.

$ cd <path>

path 부분에 이동하려고하는 디렉토리 경로를 입력한다. 상대경로가 될 수도 있고, 절대경로가 될 수도 있다. 

$ cd -

cd 명령을 이용해서 디렉토리를 변경한 다음 다시 이전 디렉토리로 돌아가고 싶은 경우 path 부분에 '-' 문자를 넣으면 된다. 리모컨의 '이전채널' 버튼을 생각하면 된다.

cd 명령의 가장 아쉬운 점은 경로 변경의 히스토리를 저장하지 않는 다는 것이다. A-B-C-D 순으로 경로를 이동할 경우 현재 경로는 D 이고, 이전경로는 C가 된다. 여기서 'cd -' 명령으로 이전 디렉토리로 이동하면, 현재 경로는 C, 이전 경로는 D가 된다. A와 B 경로로 돌아가기 위해서는 경로를 스크립트의 변수에 저장해두어야한다.

이럴때 쓰면 좋은게 pushd와 popd 명령이다.

pushd, popd 명령

pushd 명령과 popd 명령은 디렉토리를 이동하면서 스택(Stack)에 작업 디렉토리들을 기억한다.

$ pushd <path>

pushd 명령에 경로를 입력하면 입력한 경로로 현재 작업 디렉토리를 변경하고, 스택(Stack)에 집어 넣는다.

$ popd

popd 명령을 실행하면 스택에서 경로를 하나 제거한 다음 스택의 top에 있는 경로를 현재 디렉토리로 지정한다. 즉, 이전 디렉토리로 돌아간다.

$ pushd /tmp
/tmp ~
$ pushd /etc
/etc /tmp ~
$ pwd
/etc
$ popd
/tmp ~
$ pwd
/tmp
$ popd
~
$ pwd
/Users/user

pushd 명령과 popd 명령을 이용해서 디렉토리를 오가는 시나리오다. 중간에 pwd 명령을 이용해서 현재 작업 디렉토리를 확인해봤다. pushd 명령과 popd 명령을 실행하면 현재 스택에 어떤 경로들이 저장되어 있는지 출력된다.

pushd 명령과 popd 명령은 Bash 스크립트를 작성할 때, 여러 경로를 이동하면서 동작을 해야하는 경우 유용하게 사용될 수 있다.

댓글