溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linux下如何使用pushd和popd高效切換目錄

發(fā)布時間:2022-01-26 11:24:40 來源:億速云 閱讀:146 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要介紹了Linux下如何使用pushd和popd高效切換目錄,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

pushd和popd是對一個目錄棧進行操作,而dirs是顯示目錄棧的內(nèi)容。而目錄棧就是一個保存目錄的棧結(jié)構(gòu),該棧結(jié)構(gòu)的頂端永遠都存放著當(dāng)前目錄。

Linux下如何使用pushd和popd高效切換目錄

1、pushd、popd和dirs

1.1 dirs

dirs常用的有兩個參數(shù):

選項含義
-p每行顯示一條記錄
-v每行顯示一條記錄,同時展示該記錄在棧中的index
-c清空目錄棧

下面沒有顯示地對目錄棧進行任何操作,我們來看下當(dāng)前目錄棧的內(nèi)容是什么:

$ pwd/home/lfqy
$ dirs -v
0  ~
$ cd /
$ dirs -v
0  /
$ dirs -c
$ dirs -v
0  /
$

可以看出,目錄棧中只有一個目錄(當(dāng)然是在棧頂),就是當(dāng)前所在的目錄。當(dāng)切換目錄之后,棧中的目錄也隨之改變。通過-c選項可以將目錄棧中除當(dāng)前目錄之外的其它目錄清除,由于上面的例子中目錄棧只包含當(dāng)前目錄,所以沒有變化。

1.2 pushd

每次pushd命令執(zhí)行完成之后,默認(rèn)都會執(zhí)行一個dirs命令來顯示目錄棧的內(nèi)容。pushd的用法主要有如下幾種:

  1. pushd 目錄

    pushd后面如果直接跟目錄使用,會切換到該目錄并且將該目錄置于目錄棧的棧頂。(時時刻刻都要記住,目錄棧的棧頂永遠存放的是當(dāng)前目錄。如果當(dāng)前目錄發(fā)生變化,那么目錄棧的棧頂元素肯定也變了;反過來,如果棧頂元素發(fā)生變化,那么當(dāng)前目錄肯定也變了。)下面是一個例子:

    $ pwd/home/lfqy
    $ pushd /
    / ~
    $ dirs -v
    0  /
    1  ~
    $ pushd ~/Music/
    ~/Music / ~
    $ dirs -v
    0  ~/Music
    1  /
    2  ~
    $

    這樣,不難看出,用pushd在切換目錄的同時,也將歷史目錄以棧結(jié)構(gòu)的形式保存了下來。

  2. pushd不帶任何參數(shù)。

    pushd不帶任何參數(shù)執(zhí)行的效果就是,將目錄棧最頂層的兩個目錄進行交換。前面說過,棧頂目錄和當(dāng)前目錄一個發(fā)生變化,另一個也變。這樣,實際上,就實現(xiàn)了cd -的功能。下面是一個例子(這個例子接上文的執(zhí)行現(xiàn)場):

    $ dirs -v
    0  ~/Music
    1  /
    2  ~
    $ pushd/ ~/Music ~
    $ dirs -v
    0  /
    1  ~/Music
    2  ~
    $ pushd~/Music / ~
    $ dirs -v
    0  ~/Music
    1  /
    2  ~
    $
  3. pushd +n

    到這里,可能會想如果想切換到目錄棧中的任意一個目錄,該如何?pushd +n正是這個作用:pushd +n切換到目錄棧中的第n個目錄(這里的n就是dirs -v命令展示的index),并將該目錄以棧循環(huán)的方式推到棧頂。下面是一個例子(接上文的執(zhí)行現(xiàn)場),注意棧循環(huán)的方式帶來的棧中內(nèi)容的變化規(guī)律:

    $ dirs -v
    0  ~/Music
    1  /
    2  ~
    $ pushd +2
    ~ ~/Music /
    $ dirs -v
    0  ~
    1  ~/Music
    2  /
    $ pushd +1
    ~/Music / ~
    $ dirs -v
    0  ~/Music
    1  /
    2  ~
    $

1.3 popd

每次popd命令執(zhí)行完成之后,默認(rèn)都會執(zhí)行一個dirs命令來顯示目錄棧的內(nèi)容。popd的用法主要有如下幾種:

  1. popd不帶參數(shù)

    popd不帶任何參數(shù)執(zhí)行的效果,就是將目錄棧中的棧頂元素出棧。這時,棧頂元素發(fā)生變化,自然當(dāng)前目錄也會發(fā)生相應(yīng)的切換(接上文的執(zhí)行現(xiàn)場),下面是一個例子:

    $ dirs -v
    0  ~/Music
    1  /
    2  ~
    $ popd/ ~
    $ dirs -v
    0  /
    1  ~
    $ popd~
    $ dirs -v
    0  ~
    $
  2. popd +n

    將目錄棧中的第n個元素刪除(這里的n就是命令dirs -v顯示的目錄index)。下面是一個例子:

    $ dirs -v
    0  ~/Music
    1  /
    2  ~
    $ popd +2
    ~/Music /
    $

    這里可以發(fā)現(xiàn),如果對于目錄棧的操作沒有引發(fā)棧頂元素的變化,將不會導(dǎo)致當(dāng)前目錄的切換。

2、pushd和popd的+n和-n

上面我們用的都是+n作為參數(shù),實際在使用pushd和popd的時候,有時候也會用到-n參數(shù)。兩者的差別如下:+n的含義是從棧頂往棧底方向進行計數(shù),從0開始;-n的含義剛好相反,從棧底向棧頂方向計數(shù),從0開始。這樣有點拗口,實際上,從默認(rèn)的dirs命令(不帶任何參數(shù))的輸出來解釋最好理解了:+n是指從左往右數(shù),-n是指從右往左數(shù),都是從0開始。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Linux下如何使用pushd和popd高效切換目錄”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI