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

linux shell pushd popd dirs命令

2015-11-19 15:17 666 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: