转:http://os.51cto.com/art/201205/335407.htm
你可以将目录压入目录栈,也可以稍后将该目录弹出。在随后的示例中,将会用到以下三个命令:
* dirs:显示目录栈
* pushd:将目录压入目录栈
* popd:将目录弹出目录栈
dirs命令显示当前所在目录及目录栈中的内容。即使目录栈为空,dirs也会显示当前所在的目录,示例如下:
| 
 
							1
						 
							2
						 
							3
						 
							4
						 
							5
						 
							6
						 
 | 
 
							# popd
						 
							-bash: popd: directory stack empty
						 
							# dirs
						 
							~
						 
							# pwd
						 
							/home/ramesh
						 
 | 
如何使用pushd和popd呢?让我们先创建一些临时的目录然后把他们压入目录堆栈中去。
| 
 
							1
						 
							2
						 
							3
						 
							4
						 
							5
						 
							6
						 
 | 
 
							# mkdir /tmp/dir1
						 
							# mkdir /tmp/dir2
						 
							# mkdir /tmp/dir3
						 
							# mkdir /tmp/dir4
						 
							# cd /tmp/dir1
						 
							# pushd .
						 
 | 
| 
 
							1
						 
							2
						 
							3
						 
							4
						 
							5
						 
							6
						 
							7
						 
							8
						 
							9
						 
 | 
 
							# cd /tmp/dir2
						 
							# pushd .
						 
							# cd /tmp/dir3
						 
							# pushd .
						 
							# cd /tmp/dir4
						 
							# pushd .
						 
							# dirs
						 
							/tmp/dir4 /tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1
						 
							[注:显示的第一个目录名总会是当前所在的目录,而不是显式压入堆栈里的内容]
						 
 | 
此时,目录堆栈就包含以下内容:
| 
 
							1
						 
							2
						 
							3
						 
							4
						 
 | 
 
							/tmp/dir4
						 
							/tmp/dir3
						 
							/tmp/dir2
						 
							/tmp/dir1
						 
 | 
最后被压入的目录会在堆栈的顶端。当你执行“popd”,系统就会跳转到栈顶的目录中,并且从堆栈中把它清除掉。正如上面所展示的,最后压入堆栈的是/tmp/dir4,所以当进行一次popd时,就会跳转到/tmp/dir4目录下同时从堆栈中将它移除。如下所示:
| 
 
							1
						 
							2
						 
							3
						 
							4
						 
							5
						 
							6
						 
							7
						 
							8
						 
							9
						 
							10
						 
							11
						 
							12
						 
							13
						 
							14
						 
							15
						 
							16
						 
							17
						 
							18
						 
							19
						 
							20
						 
							21
						 
							22
						 
							23
						 
 | 
 
							# 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
						 
 | 
用“dirs”、“pushd”、“popd”来操作目录栈就介绍到这里。



