曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3012|回复: 0
打印 上一主题 下一主题

pushd/popd -- 目录的压栈与出栈

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34397
跳转到指定楼层
楼主
发表于 2012-4-2 13:44:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
pushd popd 常用在在常用的几个目录中进行快速切换,它的原理就是堆栈的利用,pushd 就是将目录压入栈,popd 就是将目录弹出栈。

下面演示这两个命令的使用:

1. dirs 命令也可以显示当前所在目录(仅当目录堆栈内只有一个目录时)
root@bt:~# dirs
~

2. 使用 pushd 将几个目录压入栈中
# pushd /var/www
/var/www ~
# pushd /usr/lib
/usr/lib /var/www ~
# pushd /usr/lib64
/usr/lib64 /usr/lib /var/www ~
# pushd /srv/cvs/
/srv/cvs /usr/lib64 /usr/lib /var/www ~
由每次执行 pushd 后的输出结果可以看到,目录依次被压入,最后压入的目录排在最左边(/srv/cvs),最先压入的目录排在最右边(~),从左到右对应的编号为0,1,2,3... 。我们可以利用这些编号快速切换目录,而不需要再次手动输入。

使用 dirs 可以列出所有目录栈中的目录:
root@bt:/srv/cvs# dirs
/srv/cvs /usr/lib64 /usr/lib /var/www ~
从上面可以看到,当前的目录在 /srv/cvs 中,如果我们要切换到 /var/www 中,我们可以如下执行命令:
root@bt:/srv/cvs# pushd +3
/var/www ~ /srv/cvs /usr/lib64 /usr/lib
root@bt:/var/www# dirs
/var/www ~ /srv/cvs /usr/lib64 /usr/lib
由上可见目录已经被切换到 /var/www 中来了,但是仍然需要注意的是此时目录栈中的排序:pushd +x 这样的命令执行后,排序在 x 之后的所有目录都将被提前,又如:
root@bt:/var/www# dirs
/var/www ~ /srv/cvs /usr/lib64 /usr/lib
root@bt:/var/www# pushd +2
/srv/cvs /usr/lib64 /usr/lib /var/www ~

popd 命令就是将目录栈中的某个目录出栈。直接运行它,出栈的是最左边的目录:
root@bt:/srv/cvs# popd
/usr/lib64 /usr/lib /var/www ~
也可以将指定编号的目录出栈,如:
root@bt:/usr/lib64# popd +2
/usr/lib64 /usr/lib ~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-18 07:31 , Processed in 0.076405 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表