|
pushd 和 popd 常用在在常用的几个目录中进行快速切换,它的原理就是堆栈的利用,pushd 就是将目录压入栈,popd 就是将目录弹出栈。
下面演示这两个命令的使用:
1. 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 ~ |
|