0°

用”dirs”、”pushd”、”popd”来操作目录栈

来源:《linux 101 hacks》

你可以将目录压入目录栈,也可以稍后将该目录弹出。在随后的示例中,将会用到以下三个命令:
* dirs:显示目录栈
* pushd:将目录压入目录栈
* popd:将目录弹出目录栈

dirs 命令显示当前所在目录及目录栈中的内容。即使目录栈为空,dirs 也会显示当前所在的目
录,示例如下:

$ popd  
-bash: popd: directory stack empty  
 
$ dirs  
~  
$ pwd  
/home/ramesh

如何使用 pushd 和 popd 呢?让我们先创建一些临时的目录然后把他们压入目录堆栈中去。

$ mkdir /tmp/dir1  
$ mkdir /tmp/dir2  
$ mkdir /tmp/dir3  
$ mkdir /tmp/dir4  
 
$ cd /tmp/dir1  
$ pushd .
$ cd /tmp/dir2  
$ pushd .  
 
$ cd /tmp/dir3  
$ pushd .  
 
$ cd /tmp/dir4  
$ pushd . 
 
$ dirs  
/tmp/dir4 /tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1

[注:显示的第一个目录名总会是当前所在的目录,而不是显式压入堆栈里的内容]

此时,目录堆栈就包含以下内容:

/tmp/dir4 
/tmp/dir3 
/tmp/dir2 
/tmp/dir1

最后被压入的目录会在堆栈的顶端。当你执行“popd”,系统就会跳转到栈顶的目录中,并且
从堆栈中把它清除掉。正如上面所展示的,最后压入堆栈的是/tmp/dir4,所以当进行一次
popd 时,就会跳转到/tmp/dir4 目录下同时从堆栈中将它移除。如下所示:

$ popd  
$ pwd  
/tmp/dir4 

[注:执行完上 popd 命令之后,目录栈包括以下目录

/tmp/dir3  
/tmp/dir2  
/tmp/dir1]  
 
$ popd  
$ pwd  
/tmp/dir3

[注:执行完上 popd 命令之后,目录栈包括以下目录]

/tmp/dir2  
/tmp/dir1]  
 
$ popd  
$ pwd
/tmp/dir2

[注:执行完上 popd 命令之后,目录栈包括以下目录

/tmp/dir1]  
 
$ popd  
$ pwd  
/tmp/dir1

[注:执行完上 popd 命令之后,目录栈包括以下目录]

$ popd  
-bash: popd: directory stack empty
「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论