Pushd
指令語法
pushd [-n] [dir]
pushd [-n] [+n] [-n]
指令說明
pushd指令的功能是將目錄加入目錄堆疊中。如果指令沒有指定目錄名稱,則會將當前的工作目錄置入目錄堆疊的最頂端。置入目錄如果沒有指定堆疊的位置,也會置入目錄堆疊的最頂端,同時工作目錄會自動cd到目錄堆疊最頂端的目錄去。
以上的使用法則在bash與tcsh中大致相同。
参数說明
-n
只加入目錄到堆疊中,不進行cd動作。
+n
刪除從左到右的第n個目錄。數字從0開始。
-n
刪除從右到左的第n個目錄。數字從0開始。
實例說明
將目錄放入堆疊
讓我們來放幾個目錄到堆疊中看看
[root@www logs]# dirs |
以上是一般常用的pushd做法,放入目錄後,工作目錄一並變更到該目錄。如果不想變更工作目錄的話,可以加上-n選項,看下例
[root@www conf]# pushd -n /var/log |
可以發現,新置入的/var/log被放在目錄堆疊1的位置,而堆疊0沒有變動,因此工作目錄也保持在原來的位置。
善用目錄堆疊
先看下邊的例子
[root@www conf]# dirs |
注意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 |
當目錄堆疊有資料時,如果我們想刪除最頂端目錄,可以直接鍵入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 |
使用dirs不加上任何選項,即顯示當前"目錄堆疊"的現況。加上-v選項則以另一種格式顯示。
# dirs +1 |
基本上,目錄堆疊不管從左到右,或從右到左,都是從0開始計算。指令dirs做的只是"顯示"指定的堆疊內容,如果要cd到該目錄,可以改用pushd指令。
<wbr></wbr>