http://www.cnblogs.com/davidwang456/p/3784102.html
http://blog.csdn.net/yucan1001/article/details/8455757
http://blog.163.com/yangfan876@126/blog/static/806124562013720104712282/
1、dirs
1)功能
显示当前目录栈中的所有记录(不带参数的dirs命令显示当前目录栈中的记录)
2)语法
(1)格式:dirs [-clpv] [+n] [-n]
(2)选项
-c 删除目录栈中的所有记录
-l 以完整格式显示
-p 一个目录一行的方式显示
-v 每行一个目录来显示目录栈的内容,每个目录前加上的编号
+N 显示从左到右的第n个目录,数字从0开始
-N 显示从右到左的第n个日录,数字从0开始
注意:dirs始终显示当然目录, 再是堆栈中的内容;即使目录堆栈为空, dirs命令仍然只显示当然目录
2、pushd
1)功能
pushd命令常用于将目录加入到栈中,加入记录到目录栈顶部,并切换到该目录;若pushd命令不加任何参数,则会将位于记录栈最上面的2个目录对换位置
2)语法
(1)格式:pushd [目录 | -N | +N] [-n]
(2)选项
目录 将该目录加入到栈顶,并执行"cd 目录",切换到该目录
+N 将第N个目录移至栈顶(从左边数起,数字从0开始)
-N 将第N个目录移至栈顶(从右边数起,数字从0开始)
-n 将目录入栈时,不切换目录
3、popd
1)功能
popd用于删除目录栈中的记录;如果popd命令不加任何参数,则会先删除目录栈最上面的记录,然后切换到删除过后的目录栈中的最上面的目录
2)语法
(1)格式:popd [-N | +N] [-n]
(2)选项
+N 将第N个目录删除(从左边数起,数字从0开始)
-N 将第N个目录删除(从右边数起,数字从0开始)
-n 将目录出栈时,不切换目录
Bourne Again和TC Shell都允许用户将其正在使用的目录列表存放起来,这样就可以在这些目录之间轻易移动。这个目录列表称为栈。它模拟了餐厅所用的盘子:一般将盘子放到栈的顶部或者从栈的顶部取盘子,这就创建了一个先入后出(FILO)的栈。
1. dirs:显示栈
内置命令dirs显示目录栈的内容。如果当目录栈是空的时候调用dirs,它将显示工作目录的名字。
$ dirs ~/literature |
内置命令dirs使用代字符~表示用户主目录的名字。下面几节中的示例均假设用户使用图8-2中给出的目录结构。
图8-2 示例所使用的目录结构 |
2. pushd:将目录压入栈中
使用内置命令pushd(push directory,将目录推到栈顶)可以改变目录,同时添加一个新的目录到栈顶。除改变目录之外,内置命令pushd还将显示栈的内容。图8-3阐明了下面的示例。
$ pushd ../demo ~/demo ~/literature $ pwd /home/sam/demo $ pushd ../names ~/names ~/demo ~/literature $ pwd /home/sam/names |
图8-3 创建目录栈 |
当不带参数使用pushd时,pushd交换栈顶最上面的两个目录,并将新的栈顶目录(即原来的次栈顶目录)作为新的工作目录(如图8-4所示):
$ pushd ~/demo ~/names ~/literature $ pwd /home/sam/demo |
图8-4 使用pushd改变工作目录 |
这样使用pushd,就可以轻易地在两个目录之间来回移动。不管是否显式地创建目录栈,都可以使用cd– 切换到前一个目录。为了访问目录栈中的其他目录,可以在调用pushd时,带上一个以加号开头的数字作为参数。栈中目录的编号从栈顶开始算起,栈顶目录的编号是0。下面的pushd命令继续前一个示例,将工作目录改变到literature,并将literature移动到栈顶。
$ pushd +2 ~/literature ~/demo ~/names $ pwd /home/sam/literature |
3. popd:将目录从栈中弹出
使用内置命令popd(pop directory,弹出目录)可将目录从栈中移出。不带参数的popd将栈顶目录从栈中移出,并将工作目录改变到这个新的栈顶目录。下面的示例和图8-5给出了这种情况。
$ dirs ~/literature ~/demo ~/names $ popd ~/demo ~/names $ pwd /home/sam/demo |
图8-5 使用popd命令将目录从栈中移出 |
为了移出除栈顶之外的其他目录,可以使用一个以加号开头的数字作为参数传递给popd。下面的示例将目录编号1(即demo)移出:
$ dirs ~/literature ~/demo ~/names $ popd +1 ~/literature ~/names |
移出标号不为0的目录并不会改变工作目录。
话说shell中还有这样的命令,以前还真么有用过....pushd和popd。首先这两个命令是shell内建命令,pushd作用是建立一个目录栈,并将指定的目录加入栈顶,对应的popd就是弹出栈顶目录。pushd有几个参数,+n (加n)-n(减n)这个是将栈旋转,n是数字,也就是说将整个目录栈旋转几个数字....貌似描述的不明确,看看下面的例子:
[yangfan@dhcp-13-42 /]$ pushd /home/yangfan/test ~/test / ~ ~/kernel /home [yangfan@dhcp-13-42 test]$ pushd -2 ~ ~/kernel /home ~/test / [yangfan@dhcp-13-42 ~]$ pushd +2 /home ~/test / ~ ~/kernel