Linux에서 cd 를 이용하여 잦은 directory를 이동하면 사실 귀찮으며, 이동한 기록을 이용하여 이동을 하면 편할 때가 많다.
- pushd
- pushd path : 해당 path를 pushd에 Stack으로 기록과 동시에 이동후 Stack 기록
- pushd : stack에 있는 이전 path로만 이동, 반복이동가능 (Stack Size 동일)
- pushd +1 : stack을 써클큐로 이용하여 현재주소 n번째 path로이동 (Stack Size 동일)
- popd
- popd : stack의 이전주소 이동후 stack 이전주소삭제
- popd -n : 현재기준으로 1번째주소만 삭제 (현재주소 유지)
- popd +3 : 현재기준으로 3번째 주소만 삭제 (현재주소 유지)
가능하다면 -n 옵션과 -N 옵션은 사용하지 말자.
+N 옵션만 직접번호 넣고해야 사용해야 기억하기 쉽다.
1.1 pushd를 이용하여 stack 정보생성
$ pushd /var/log/ // pushd 입력과 동시에 이동 /var/log ~ // Stack 정보표시 1개 (좌측 왼쪽은 현재위치) $ pushd /etc // pushd 입력과 동시에 이동 /etc /var/log ~ // Stack 정보표시 2개 (좌측 왼쪽은 현재위치) $ pushd /opt // pushd 입력과 동시에 이동 /opt /etc /var/log ~ // Stack 정보표시 3개 (좌측 왼쪽은 현재위치) $ pushd /bin // pushd 입력과 동시에 이동 /bin /opt /etc /var/log ~ // Stack 정보표시 4개 (좌측 왼쪽은 현재위치) $ pushd /mnt // pushd 입력과 동시에 이동 /mnt /bin /opt /etc /var/log ~ // Stack 정보표시 5개 (좌측 왼쪽은 현재위치) $ pushd /proc // pushd 입력과 동시에 이동 /proc /mnt /bin /opt /etc /var/log ~ // Stack 정보표시 6개 (좌측 왼쪽은 현재위치)
Stack 정보는 현재위치도 포함
1.2 두 주소만 반복이동
- 기존기록
$ pushd // 상위의 마지막 Stack 정보 /proc /mnt /bin /opt /etc /var/log ~ // 이전주소 (/proc) 이동됨 (좌측 왼쪽은 현재위치)
- pushd 이용 사용예
$ pushd // 입력과 동시에 이전주소이동 (Stack Size동일) /mnt /proc /bin /opt /etc /var/log ~ // 이전주소 (/mnt) 이동된 (좌측 왼쪽은 현재위치) $ pushd // 입력과 동시에 이전주소이동 (Stack Size동일) /proc /mnt /bin /opt /etc /var/log ~ // 이전주소 (/proc) 이동됨 (좌측 왼쪽은 현재위치) $ pushd // 입력과 동시에 이전주소이동 (Stack Size동일) /mnt /proc /bin /opt /etc /var/log ~ // 이전주소 (/mnt) 이동된 (좌측 왼쪽은 현재위치) $ pushd // 입력과 동시에 이전주소이동 (Stack Size동일) /proc /mnt /bin /opt /etc /var/log ~ // 이전주소 (/proc) 이동됨 (좌측 왼쪽은 현재위치)
1.3 Stack 정보를 써클큐로 순환이동
- 기존기록
$ pushd // 상위의 마지막 Stack 정보 /proc /mnt /bin /opt /etc /var/log ~ // 이전주소 (/proc) 이동됨 (좌측 왼쪽은 현재위치)
- push +N 이용
$ pushd +1 // 1번째 전주소(/mnt)이동과 써클큐로 동작 (Stack Size동일) /mnt /bin /opt /etc /var/log ~ /proc // 1번째 전주소(/mnt) 이동된 (좌측 왼쪽은 현재위치) $ pushd +1 // 1번째 전주소(/bin)이동과 써클큐로 동작 (Stack Size동일) /bin /opt /etc /var/log ~ /proc /mnt // 1번째 전주소(/bin) 이동된 (좌측 왼쪽은 현재위치) $ pushd +1 // 1번째 전주소(/opt) 이동과 써클큐로 동작 (Stack Size동일) /opt /etc /var/log ~ /proc /mnt /bin // 1번째 전주소(/opt) 이동된 (좌측 왼쪽은 현재위치) $ pushd +1 // 1번째 전주소(/etc) 이동과 써클큐로 동작 (Stack Size동일) /etc /var/log ~ /proc /mnt /bin /opt // 1번째 전주소(/etc) 이동된 (좌측 왼쪽은 현재위치) $ pushd +2 // 2번째 전주소(/~)이동과 동시에 써클큐로 동작 (Stack Size동일) ~ /proc /mnt /bin /opt /etc /var/log // 2번째 전주소(/~) 이동됨 (좌측 왼쪽은 현재위치) $ pushd +2 // 2번째 전주소(/mnt)이동과 동시에 써클큐로 동작 (Stack Size동일) /mnt /bin /opt /etc /var/log ~ /proc // 2번째 전주소(/mnt) 이동됨 (좌측 왼쪽은 현재위치) $ pushd +2 // 2번째 전주소(/opt)이동과 동시에 써클큐로 동작 (Stack Size동일) /opt /etc /var/log ~ /proc /mnt /bin // 2번째 전주소(/opt) 이동됨 (좌측 왼쪽은 현재위치) $ pushd +5 // 5번째 전주소(/mnt)이동과 동시에 써클큐로 동작 (Stack Size동일) /mnt /bin /opt /etc /var/log ~ /proc // 이전주소 (/mnt) 이동된 (좌측 왼쪽은 현재위치)
1.4 필요없는 Stack 정보 삭제
- 기존기록
$ pushd // 상위의 마지막 Stack 정보 /proc /mnt /bin /opt /etc /var/log ~ // 이전주소 (/proc) 이동됨 (좌측 왼쪽은 현재위치)
- popd 이용하여 삭제
$ popd // 이전주소로 이동동시에 마지막현재주소 삭제 (/opt로 이동) /mnt /bin /opt /etc /var/log ~ // 이전주소 이동됨 (좌측 왼쪽은 현재위치) $ popd -n // popd로 현재기준으로 1번째주소만 삭제 (위치그대로) /mnt /opt /etc /var/log ~ // 현재주소 유지 (좌측 왼쪽은 현재위치) $ popd +3 // popd로 현재기준으로 3번째주소만 삭제 (위치그대로) /mnt /opt /etc ~ // 현재주소 유지 (좌측 왼쪽은 현재위치)
http://en.wikipedia.org/wiki/Pushd_and_popd
http://devanix.tistory.com/231