6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CentOSAdvent Calendar 2018

Day 3

pushdとpopd

Last updated at Posted at 2018-12-08

pushdとpopd

シェルにpushdpopdというコマンドがあります。
pushd <dirname>はディレクトリをスタックに入れる、popd <num>はスタックからディレクトリを取り出してそのディレクトリにcdするというコマンドです。

ディレクトリ移動が多い場合に便利です。

使い方

カレント・ディレクトリは/tmp/とします。

root@e6ff454b8d0d:/tmp# pwd
/tmp

/opt/ディレクトリをpushdします。

root@e6ff454b8d0d:/tmp# pushd /opt
/opt /tmp
root@e6ff454b8d0d:/opt# pwd
/opt

すると/optディレクトリに移動し、前カレント・ディレクトリ/tmpの上にpushされます。
dirsでスタックを確認することもできます。dirs -vで連番が表示されます。

root@e6ff454b8d0d:/opt# dirs
/opt /tmp
root@e6ff454b8d0d:/opt# dirs -v
 0  /opt
 1  /tmp

popdでスタックからpopして(消して)、前のディレクトリに移動します。

root@e6ff454b8d0d:/opt# popd
/tmp
root@e6ff454b8d0d:/tmp# dirs -v
 0  /tmp

たくさんpushdしてpopdしてみる

oot@e6ff454b8d0d:/tmp# pushd /opt/
/opt /tmp
root@e6ff454b8d0d:/opt# pushd /mnt/
/mnt /opt /tmp
root@e6ff454b8d0d:/mnt# pushd /etc/
/etc /mnt /opt /tmp
root@e6ff454b8d0d:/etc# pushd /lib
/lib /etc /mnt /opt /tmp
root@e6ff454b8d0d:/lib# pushd /proc/
/proc /lib /etc /mnt /opt /tmp
root@e6ff454b8d0d:/proc# pushd /dev/
/dev /proc /lib /etc /mnt /opt /tmp
root@e6ff454b8d0d:/dev# pushd /home/
/home /dev /proc /lib /etc /mnt /opt /tmp
root@e6ff454b8d0d:/home# dirs -v
 0  /home
 1  /dev
 2  /proc
 3  /lib
 4  /etc
 5  /mnt
 6  /opt
 7  /tmp

この時点でカレント・ディレクトリは/home/です。
ここからpopdしていくと/dev/ -> /proc/ -> /lib/ ...と移動していくのですが、途中に飛ばしたいディレクトリがある場合はpopd ±numで消すことができます。

root@e6ff454b8d0d:/home# dirs -v
 0  /home
 1  /dev
 2  /proc
 3  /lib
 4  /etc
 5  /mnt
 6  /opt
 7  /tmp
# /dev/に移動
root@e6ff454b8d0d:/home# popd
/dev /proc /lib /etc /mnt /opt /tmp
# /proc/に移動
root@e6ff454b8d0d:/dev# popd
/proc /lib /etc /mnt /opt /tmp
# +1で最初から一つ後ろの/libを消す
root@e6ff454b8d0d:/proc# popd +1
/proc /etc /mnt /opt /tmp
# -1で最後尾から一つ前の/optを消す
root@e6ff454b8d0d:/proc# popd -1
/proc /etc /mnt /tmp
# -0で最後尾の/tmpを消す
root@e6ff454b8d0d:/proc# popd -0
/proc /etc /mnt
# +0で最初の/procを消し/etc/に移動
root@e6ff454b8d0d:/proc# popd +0
/etc /mnt
root@e6ff454b8d0d:/etc# pwd
/etc
6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?