注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

民主与科学

独立之人格,自由之思想

 
 
 

日志

 
 

pushd,popd及dirs命令  

2011-04-08 12:52:56|  分类: Linux基础 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Pushd

指令語法

pushd [-n] [dir]
pushd [
-n] [+n] [-n]

指令說明

pushd 指令的功能是將目錄加入目錄堆疊中。如果指令沒有指定目錄名稱,則會將當前的工作目錄置入目錄堆疊的最頂端。置入目錄如果沒有指定堆疊的位置,也會置入目錄堆疊的最頂端,同時工作目錄會自動 cd 到目錄堆疊最頂端的目錄去。

以上的使用法則在 bash tcsh 中大致相同。

参数說明

-n

只加入目錄到堆疊中,不進行 cd 動作。

+n

刪除從左到右的第 n 個目錄。數字從 0 開始。

-n

刪除從右到左的第 n 個目錄。數字從 0 開始。

實例說明

將目錄放入堆疊

讓我們來放幾個目錄到堆疊中看看

[root@www logs]# dirs
/etc/httpd/logs
[root@www logs]# pushd /home/web
/home/web /etc/httpd/logs
[root@www web]# pushd /etc/httpd/conf
/etc/httpd/conf /home/web /etc/httpd/logs
[root@www conf]#

以上是一般常用的 pushd 做法,放入目錄後,工作目錄一並變更到該目錄。如果不想變更工作目錄的話,可以加上 -n 選項,看下例

[root@www conf]# pushd -n /var/log
/etc/httpd/conf /var/log /home/web /etc/httpd/logs
[root@www conf]#

可以發現,新置入的 /var/log 被放在目錄堆疊 1 的位置,而堆疊 0 沒有變動,因此工作目錄也保持在原來的位置。

善用目錄堆疊

先看下邊的例子

[root@www conf]# dirs
/etc/httpd/conf /var/log /home/web /etc/httpd/logs
[root@www conf]# pushd +2
/home/web /etc/httpd/logs /etc/httpd/conf /var/log
[root@www conf]#

注意1:运行pushd成功后,显示的第一项(从左到右)是当前目录,然后才是栈元素。

栈元素是按照栈顶到栈底的顺序从左到右依次排列。

注意2对于没有任何参数的pushd,其实就是将栈顶元素和当前目录交换。

首先弹出栈顶元素,把当前目录入栈,cd进入顶元素所对应的目录。

关于pushd +n-n

把栈元素是按照栈顶到栈底的顺序从左到右依次排列,那么它就成了一个队列。

1)对于pushd +n,是把该队列的元素从左到右进行编号的(从1开始)。

它就是将编号为1n的元素依次移动到队列的最右边

n元素和当前目录交换,如果没有“-n”参数的话,会cd进入n元素所对应的目录。

例如:栈中的元素为a,b,c,d。假设当前目录为P
pushd +1
后元素为b,c,d,P
pushd +2
后元素为c,d,a,P
注意:pushd +0后元素没有变化:a,b,c,d

(2)对于pushd -n命令和上面相似,只是把该队列的元素从右到左进行编号的(从0开始)

它就是将编号为0n的元素依次移动到队列的最左边

n元素和当前目录交换,如果没有“-n”参数的话,会cd进入n元素所对应的目录。例如:栈中的元素为a,b,c,d,假设当前目录为P
pushd -1
后元素为P,d,a,b
pushd -2
后元素为P,c,d,a
pushd -0
后元素为:P,a,b,c

Popd

指令語法

popd [-n] [+n] [-n]

指令說明

popd 指令的作用在刪除目錄堆疊的資料。當刪除一個堆疊中的目錄時,如果沒有特定選項,工作目錄會自動 cd 到目錄堆疊最頂端的目錄去。

選項說明

-n

只刪除堆疊中的目錄,不進行 cd 動作。

+n

刪除從左到右的第 n 個目錄。數字從 0 開始。

-n

刪除從右到左的第 n 個目錄。數字從 0 開始。

實例說明

bash

[root@www etc]# dirs
/etc /home /etc/httpd/logs
[root@www etc]# popd
/home /etc/httpd/logs
[root@www home]#

當目錄堆疊有資料時,如果我們想刪除最頂端目錄,可以直接鍵入 popd,如此堆疊最頂端目錄便會被刪除,同時工作目錄會自動變更到刪除之後的堆疊最頂端目錄。

1)对于popd +n,是把该队列的元素从左到右进行编号的(从1开始)。

删除n号元素,如果没有“-n”参数的话,会cd进入n元素所对应的目录。
例如:栈中的元素为a,b,c,d

popd +0后元素为:b,c,d
popd +1
后元素为b,c,d
popd +2
后元素为a,c,d

(2)对于popd -n命令和上面相似,只是把该队列的元素从右到左进行编号的(从0开始)

删除n号元素,如果没有“-n”参数的话,会cd进入n元素所对应的目录。例如:栈中的元素为a,b,c,d

popd -0后元素为:a,b,c

popd -1后元素为a,b,d
popd -2
后元素为a,c,d

注意:对于popd 2 这种形式很有趣,它直接是删除最右边的第一个元素,如果没有“-n”参数的话,会cd进入该元素所对应的目录

Dirs

指令語法

dirs [-clpv] [+n] [-n]

指令說明

dirs 主要的功能在於顯示目錄堆疊的資料。bash tcsh 的指令用法有些小差異,但實質上的作用則是完全相同。

關於目錄堆疊的使用,除了用 dirs 顯示目錄堆疊,還有兩個相關的內建指令,pushd 指令用來將目錄放入堆疊中,以及 popd 指令將目錄從堆疊中移除。

参数說明

+n

顯示從左到右的第 n 個目錄。數字從 0 開始。

-n

顯示從右到左的第 n 個目錄。數字從 0 開始。

-c

淨空堆疊表列。

-l

顯示完整路徑。(預設值會將使用者個人的 home 目錄以 ~ 符號表示)

-p

一個目錄一行地顯示堆疊的內容。

-v

每行一個目錄的顯示目錄堆疊的內容, 每個目錄前面加上它在目錄堆疊中的編號。

實例說明

# dirs
/home/web /var/lib/mysql /etc/httpd /etc/httpd/logs
# dirs -v
0 /home/web
1 /var/lib/mysql
2 /etc/httpd
3 /etc/httpd/logs
#

使用 dirs 不加上任何選項,即顯示當前"目錄堆疊"的現況。加上 -v 選項則以另一種格式顯示。

# dirs +1
/var/lib/mysql
# dirs -2
/var/lib/mysql

基本上,目錄堆疊不管從左到右,或從右到左,都是從 0 開始計算。指令 dirs 做的只是"顯示"指定的堆疊內容,如果要 cd 到該目錄,可以改用 pushd 指令

  评论这张
 
阅读(968)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017