您的位置:首页 > 运维架构 > Linux

如何在Linux系统中快速切换目录(目录栈的使用) pushd popd dirs

2014-11-26 14:34 344 查看
转自:http://www.360doc.com/content/13/1129/15/14530056_333187813.shtml

最近在做Linux嵌入式系统的大作业,经常需要切换Linux系统中目录,实在太麻烦,之前是靠打开多个终端来解决,但这样又会显得窗口太多很乱,除非放在不同的工作区但又觉得没有必要。今天看书发现解决这个问题其实很容易,只需要使用Linux的目录栈就行了,操作的指令也只有两个,一个是pushd,一个是popd,非常好用。

 

这里就不多解释什么是栈了,而目录栈就相当于把用户正在使用的目录列表存放起来,而且具有栈的先入后出的特性。

 

闲话少说,具体看看如何用目录栈来简化的我们操作。

 

假设我们需要经常在三个目录下切换,分别是:~/src,/opt/test ,
/etc。注:代字符~是用户主目录的名字。

另外假设我们是刚打开终端,初始位置在:~

 

平常我们用cd进入一个目录,这个时候就不要这么用,请用pushd,假设我们要进目录(如果存在的话):~/src,那么:

 

simon@simon-A8Sc:~$ pushd ~/src/

~/src
~

simon@simon-A8Sc:~/src$ 

 

可以看到终端先回显出了目录栈的最新内容,此时有两个:~/src和~。最左边相当于目录栈的顶部,最右边相当与目录栈的底部。同时,重要的是,当前目录切换到了:~/src。

 

再切换到需要另外用的一个目录 /opt/test

 

simon@simon-A8Sc:~/src$ pushd /opt/test

/opt/test
~/src ~

simon@simon-A8Sc:/opt/test$ 

  

可以看到栈顶部多出了目录/opt/test,而且当前目录也切换到了/opt/test。

为了方便说明,再次压入第三个目录/etc

 

simon@simon-A8Sc:/opt/test$ pushd /etc/

/etc
/opt/test ~/src
~

simon@simon-A8Sc:/etc$ 

 

情况1. 如何在这三个目录快速切换呢?假设目录栈现就是现在这样,我们要回到/opt/test,可以使用无参数的命令pushd,它表示切换目录栈最上面的两个目录:

 

simon@simon-A8Sc:/etc$ pushd

/opt/test
/etc ~/src
~

simon@simon-A8Sc:/opt/test$ 

 

情况2. 但如果想从/etc直接切换到 ~/src呢?此时可以使用带参数的命令pushd,

 

simon@simon-A8Sc:/etc$ pushd +2

~/src
~ /etc
/opt/test

simon@simon-A8Sc:~/src$ 

 

参数+2中的2指编号,编号从栈顶开始算起,顶部为0。具体栈里面的目录顺序是怎么变的?可以看作是循环移了两位。

 

如何查看目录栈?

使用命令dirs

 

如何将目录从栈中弹出?

使用命令popd。

无参数时,将栈顶目录弹出,同时当前目录会变成最新的栈顶目录。

有参数时,如$ popd +2,则是将编号为2的目录弹出。不会改变当前目录。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息