pushd,popd及dirs命令

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开始)。

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

把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开始)

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

把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指令。

<wbr></wbr>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值