曲径通幽论坛

标题: pushd/popd -- 目录的压栈与出栈 [打印本页]

作者: beyes    时间: 2012-4-2 13:44
标题: pushd/popd -- 目录的压栈与出栈
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 ~





欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2