Linux中的pushd和popd

其實,很早就知道pushd和popd在linux中可以用來方便地在多個目錄之間切換彬檀。那時比較浮躁瞬女,感覺切換目錄沒必要這么復(fù)雜诽偷。在實際中,發(fā)現(xiàn)通過使用pushd和popd能夠極大地提高效率报慕。

0眠冈、使用cd -進(jìn)行目錄切換

一般,Shell中都可以通過cd -命令回到之前的目錄布卡,下面是一個例子:

$ pwd
/home/lfqy
$ cd /
$ cd -
/home/lfqy
$ 

實際上雇盖,cd -中崔挖,-就相當(dāng)于變量$OLDPWD。cd -就相當(dāng)于cd $OLDPWD匾浪。下面是一個例子:

$ pwd
/home/lfqy
$ cd /
$ echo $OLDPWD
/home/lfqy
$ cd $OLDPWD
$ pwd
/home/lfqy
$ 

1卷哩、pushd属拾、popd和dirs

pushd和popd是對一個目錄棧進(jìn)行操作将谊,而dirs是顯示目錄棧的內(nèi)容。而目錄棧就是一個保存目錄的棧結(jié)構(gòu)渐白,該棧結(jié)構(gòu)的頂端永遠(yuǎn)都存放著當(dāng)前目錄(這里點從下面可以進(jìn)一步看到)尊浓。

1.1 dirs

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

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

下面沒有顯示地對目錄棧進(jìn)行任何操作纯衍,我們來看下當(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后面如果直接跟目錄使用,會切換到該目錄并且將該目錄置于目錄棧的棧頂卦绣。(時時刻刻都要記住耐量,目錄棧的棧頂永遠(yuǎn)存放的是當(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í)行的效果就是汰现,將目錄棧最頂層的兩個目錄進(jìn)行交換。前面說過叔壤,棧頂目錄和當(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的含義是從棧頂往棧底方向進(jìn)行計數(shù),從0開始录择;-n的含義剛好相反拔莱,從棧底向棧頂方向計數(shù),從0開始隘竭。這樣有點拗口塘秦,實際上,從默認(rèn)的dirs命令(不帶任何參數(shù))的輸出來解釋最好理解了:+n是指從左往右數(shù)动看,-n是指從右往左數(shù)尊剔,都是從0開始。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末菱皆,一起剝皮案震驚了整個濱河市须误,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌仇轻,老刑警劉巖京痢,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異篷店,居然都是意外死亡祭椰,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門船庇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吭产,“玉大人,你說我怎么就攤上這事鸭轮。” “怎么了橄霉?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵窃爷,是天一觀的道長邑蒋。 經(jīng)常有香客問我,道長按厘,這世上最難降的妖魔是什么医吊? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮逮京,結(jié)果婚禮上卿堂,老公的妹妹穿的比我還像新娘。我一直安慰自己懒棉,他們只是感情好草描,可當(dāng)我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著策严,像睡著了一般穗慕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上妻导,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天逛绵,我揣著相機(jī)與錄音,去河邊找鬼倔韭。 笑死术浪,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的寿酌。 我是一名探鬼主播添吗,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼份名!你這毒婦竟也來了碟联?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤僵腺,失蹤者是張志新(化名)和其女友劉穎鲤孵,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辰如,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡普监,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了琉兜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凯正。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖豌蟋,靈堂內(nèi)的尸體忽然破棺而出廊散,到底是詐尸還是另有隱情,我是刑警寧澤梧疲,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布允睹,位于F島的核電站运准,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏缭受。R本人自食惡果不足惜胁澳,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望米者。 院中可真熱鬧韭畸,春花似錦、人聲如沸蔓搞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽败明。三九已至隘马,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間妻顶,已是汗流浹背酸员。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留讳嘱,地道東北人幔嗦。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像沥潭,于是被迫代替她去往敵國和親邀泉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,322評論 25 707
  • 誰知钝鸽,深秋夜寒汇恤, 萬家燈火星點點, 殘燭燈花剪拔恰。 誰知因谎,暗香悠然, 笙簫驟停一聲嘆颜懊, 樹影葉斑斕财岔! 誰知,思緒還亂...
    秋爽齋閱讀 402評論 0 0
  • 帥氣的阿桃閱讀 314評論 0 1
  • 敦刻爾克不像電影倒像紀(jì)錄片河爹,比起紀(jì)錄片又更有臨場感匠璧,抬擔(dān)架趕船時的空襲讓人緊張,被困在船底時的窒息讓人緊張咸这,躲開德...
    睡務(wù)總局局長閱讀 256評論 0 0