dirs\pushd\popd命令用法

来源:互联网 发布:java中document.form 编辑:程序博客网 时间:2024/06/05 15:17

Bourne Again和TC Shell都允许用户将其正在使用的目录列表存放起来,这样就可以在这些目录之间轻易移动。这个目录列表称为栈。它模拟了餐厅所用的盘子:一般将盘子放到栈的顶部或者从栈的顶部取盘子,这就创建了一个先入后出(FILO)的栈。

 


branches/oss> pushd ../monitor
~/mySvn/sdn_proj/branches/monitor ~/mySvn/sdn_proj/branches/oss
branches/monitor> pwd 
/branches/monitor
branches/monitor> pushd -1       
~/mySvn/sdn_proj/branches/monitor ~/mySvn/sdn_proj/branches/oss
branches/monitor> pushd +1
~/mySvn/sdn_proj/branches/oss ~/mySvn/sdn_proj/branches/monitor
branches/oss>

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的目录并不会改变工作目录。

0 0