티스토리 뷰

 - 해당 명령은 Linux이외 윈도우에서도 가능합니다.

 - 테스트는 맥북(OS X)에서 진행하였습니다.

 

 

사용 용도

pushd로 현재 디렉토리를 저장 후, 디렉토리 경로가 기억나지 않을 때, popd 명령을 입력하면 저장된 디렉토리로 이동됩니다.

 

간단 정리

pushd 명령은 현재 디렉토리를 메모리에 저장합니다.

popd 명령은 디렉터리 스택의 맨 위에 있는 경로로 돌아갑니다. 이 때, 가장 위에 스택이 사용되어 사라집니다.

FILO(First In, Last Out) 선입후출 구조로 메모리 스택에 저장하여 사용됩니다.

사용 방법

root:/tmp$ pushd [이동할 경로] : /tmp 경로가 저장됩니다.

root:/home/script/test$ popd : /tmp 경로로 이동됩니다.

root:/tmp$ : /tmp로 이동 된 모습

테스트 예제

root:tmp$ pushd /bin/    <-- 현재 디렉토리인 /tmp 경로를 메모리 스택에 저장 ( Remainning Stack : /bin - /tmp )
/bin /tmp
root:bin$ pushd /etc/    <-- 현재 디렉토리인 /bin 경로를 메모리 스택에 저장 ( Remainning Stack : /etc - /bin - /tmp )
/etc /bin /tmp
root:etc$ pushd /home/   <-- 현재 디렉토리인 /etc 경로를 메모리 스택에 저장 ( Remainning Stack : /home - /etc - /bin - /tmp )
/home /etc /bin /tmp
root:home$ cd
root$
root$ popd               <-- 현재 메모리 스택에서 가장 최근 경로인 /etc 불러옴 ( Remainning Stack : /bin - /tmp )
/etc /bin /tmp
root:etc$
root:etc$ popd           <-- 현재 메모리 스택에서 가장 최근 경로인 /bin 불러옴 ( Remainning Stack : /tmp )
/bin /tmp
root:bin$ popd           <-- 현재 메모리 스택에서 가장 최근 경로인 /tmp 불러옴 ( Remainning Stack : 비었음 )
/tmp
root:tmp$ popd           <-- 현재 메모리 스택에서 가장 최근 경로는 비어있으므로 비어있다는 메시지 표시. ( 디렉토리 이동 안함 )
-bash: popd: directory stack empty
root:tmp$

pushd와 popd는 메모리 Stack에 저장하므로 FILO(First In, Last Out) 선입후출 구조로 되어 있습니다.

따라서, 예제처럼 가장 처음 저장하였던 /tmp 경로가 가장 마지막에 불러오기가 됩니다.

 

아래와 같이 + , - 로 위치를 택하여 메모리 Stack 제거가 가능합니다.

여기서 중요한 건 +와 -는 컴퓨팅에서 사용되는 의미로 덧셈, 뺄셈이 아닌 <위치> 입니다.

+는 왼쪽에서 오른쪽으로, -는 오른쪽에서 왼쪽으로 이동하며, 둘 다 0부터 시작됩니다.

 

응용 예제

1. /Users - /home - /etc - /bin - /tmp 5가지가 메모리 스택에 있을 경우 popd -3을 입력 시, 오른쪽 -> 왼쪽의 4번째를 제거 하므로 /home이 사라집니다.

2. 이 상태에서 popd +1을 입력 시, 남아 있는 /Users - /etc - /bin - /tmp 에서 왼쪽 -> 오른쪽의 2번째인 /etc를 제거 합니다.

 

root:/tmp$ pushd /bin
/bin /tmp
root:/bin$ pushd /etc
/etc /bin /tmp
root:/etc$ pushd /home
/home /etc /bin /tmp
root:/home$ pushd /Users/
/Users /home /etc /bin /tmp     <-- 메모리 스택에 /Users - /home - /etc - /bin - /tmp 5가지가 쌓여있다.
root:/Users$
root:/Users$ popd -3            <-- 메모리 스택에서 -3 번째인 /home을 제거 하였다.
/Users /etc /bin /tmp
root:/Users$ popd +1            <-- 메모리 스택에서 +1 번째인 /etc를 제거 하였다.
root:/Users$ 

 

 

 

위키피디아 참조

 

컴퓨팅에서 pushd와 popd는 명령줄 디렉터리 스택과 함께 작동하는 데 사용되는 명령이다.

4DOS, Bash, C Shell, tcsh, Hamilton C Shell, KornShell, cmd.exe, PowerShell 등의 명령줄 통역기에서 DOS, Microsoft Windows, ReactOS, Unix와 같은 운영 체제에서 사용할 수 있다. - 위키피디아 ( https://en.wikipedia.org/wiki/Pushd_and_popd )

 

 

사용 가능 범위

 - Bash

 - PowerShell

 - 4DOS

 - tcsh

 - C shell

 - KornShell

 - cmd(windows)

 - Unix-like ( Unix 계열 시스템 )

Unix-like

 

 

'Linux > Bash' 카테고리의 다른 글

date 명령어 정리  (0) 2020.10.27
rsync 활용하여 파일 전송하기  (0) 2020.03.17
[Bash] 여러 노드로 ping check script  (0) 2020.03.13
alias로 명령어 약자 사용하기  (0) 2019.04.20
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함