关闭

linux shell pushd popd dirs命令

1031人阅读 评论(0) 收藏 举报
分类:

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1327090次
    • 积分:13636
    • 等级:
    • 排名:第986名
    • 原创:37篇
    • 转载:765篇
    • 译文:0篇
    • 评论:19条
    最新评论