Help us understand the problem. What is going on with this article?

pushdとpopd

More than 1 year has passed since last update.

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
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした