溫馨提示×

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

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

Linux系統(tǒng)高效切換目錄的解決方案是怎樣的

發(fā)布時(shí)間:2022-01-26 09:30:01 來(lái)源:億速云 閱讀:134 作者:kk 欄目:開發(fā)技術(shù)

小編今天帶大家了解Linux系統(tǒng)高效切換目錄的解決方案是怎樣的,文中知識(shí)點(diǎn)介紹的非常詳細(xì)。覺得有幫助的朋友可以跟著小編一起瀏覽文章的內(nèi)容,希望能夠幫助更多想解決這個(gè)問(wèn)題的朋友找到問(wèn)題的答案,下面跟著小編一起深入學(xué)習(xí)“Linux系統(tǒng)高效切換目錄的解決方案是怎樣的”的知識(shí)吧。

在Linux系統(tǒng)中一切皆為文件,所以Linux系統(tǒng)的目錄結(jié)構(gòu)非常復(fù)雜,如果使用單純的使用cd命令進(jìn)行目錄之間的切換會(huì)非常的麻煩。

給大家介紹三個(gè)高效切換目錄的命令:pushd 、 popd 、 dirs 。

這三個(gè)命令其實(shí)都是對(duì) 目錄棧 進(jìn)行操作,而 目錄棧 就是一個(gè)保存目錄的棧結(jié)構(gòu),該棧結(jié)構(gòu)的頂端永遠(yuǎn)都存放著當(dāng)前目錄(敲黑板了,重點(diǎn)!!)。

有編程基礎(chǔ)的同學(xué)都知道,棧 都是遵循著 后進(jìn)先出 的原則。也就是說(shuō),在棧結(jié)構(gòu)里,后面進(jìn)棧的元素,將先出棧。

復(fù)習(xí)完基本概念,我們?cè)賮?lái)詳細(xì)這三個(gè)命令。

顯示目錄棧內(nèi)容:dirs

首先是 dirs 。這個(gè)命令很簡(jiǎn)單,就是顯示目錄棧的內(nèi)容。它有以下三個(gè)常用選項(xiàng):

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

其中,-p 與 -v 選項(xiàng)的區(qū)別是,-v 選項(xiàng)將顯示每條記錄在棧中的索引,除此之外完全一樣。假如現(xiàn)在有一個(gè)目錄棧,我們來(lái)看看它里面有啥內(nèi)容:

 [alvin@VM_0_16_centos dir2]$ pwd
 /home/alvin/test/dir2
 [alvin@VM_0_16_centos dir2]$ dirs -v
  0  ~/test/dir2
  1  ~/test/dir1
  2  ~/test/dir3
  3  ~/test

請(qǐng)注意,最頂部的元素永遠(yuǎn)跟當(dāng)前目錄一致,如果你在其它目錄下查看目錄棧,第一個(gè)元素將對(duì)應(yīng)發(fā)生改變。同理,如果你用后文介紹的 pushd 和 popd 來(lái)操作目錄棧的話,當(dāng)前目錄將切換到目錄棧的第一個(gè)元素對(duì)應(yīng)地址。

如果我們要清空目錄棧,直接使用 -c 選項(xiàng)即可。

 [alvin@VM_0_16_centos diff]$ dirs -c
 [alvin@VM_0_16_centos diff]$ dirs -v
  0  ~/projects/blogdemos/diff

壓入目錄棧:pushd

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

(1)pushd + 目錄

pushd 后面如果直接跟目錄使用,會(huì)切換到該目錄并且將該目錄置于目錄棧的棧頂。例子:

 [alvin@VM_0_16_centos test]$ pushd dir1
 ~/test/dir1 ~/test
 [alvin@VM_0_16_centos dir1]$ pushd ../dir2
 ~/test/dir2 ~/test/dir1 ~/test
 [alvin@VM_0_16_centos dir2]$ pushd ../dir3
 ~/test/dir3 ~/test/dir2 ~/test/dir1 ~/test
 [alvin@VM_0_16_centos dir3]$ dirs -v
  0  ~/test/dir3
  1  ~/test/dir2
  2  ~/test/dir1
  3  ~/test

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

pushd 不帶任何參數(shù)執(zhí)行的效果就是,將目錄棧最頂層的兩個(gè)目錄進(jìn)行交換。前面我們已經(jīng)強(qiáng)調(diào)過(guò),目錄棧第一個(gè)元素與當(dāng)前目錄是相關(guān)的,所以第一個(gè)元素發(fā)生改變時(shí),當(dāng)前目錄將對(duì)應(yīng)切換,反之亦然。

 [alvin@VM_0_16_centos dir3]$ dirs -v
  0  ~/test/dir3
  1  ~/test/dir2
  2  ~/test/dir1
  3  ~/test
 [alvin@VM_0_16_centos dir3]$ pwd
 /home/alvin/test/dir3
 [alvin@VM_0_16_centos dir3]$ pushd
 ~/test/dir2 ~/test/dir3 ~/test/dir1 ~/test
 [alvin@VM_0_16_centos dir2]$ pwd
 /home/alvin/test/dir2    #對(duì)應(yīng)目錄發(fā)生改變
 [alvin@VM_0_16_centos dir2]$ dirs -v
  0  ~/test/dir2
  1  ~/test/dir3        #索引 0 和 1 的內(nèi)容對(duì)調(diào)
  2  ~/test/dir1
  3  ~/test

(3) pushd +/-n

pushd +/-n 就是直接切換到對(duì)應(yīng)索引值的目錄。注意,這里既可以用加號(hào),也可以用減號(hào)。如果是加號(hào)的話,將從目錄棧由上往下數(shù),而用減號(hào)的話,將從目錄棧由下往上數(shù)。

接下來(lái)就回到了我們本文開頭的問(wèn)題,如果我們要在兩個(gè)或多個(gè)路徑很長(zhǎng)的目錄之間頻繁切換,該如何操作?

  • 首先,我們用 pushd + 目錄 的方式將這幾個(gè)路徑添加到目錄棧中;

  • 然后,再用 pushd +/-n 在不同的目錄間快速切換。具體演示如下:

 [alvin@VM_0_16_centos dir2]$ pwd
 /home/alvin/test/dir2
 [alvin@VM_0_16_centos dir2]$ dirs -v
  0  ~/test/dir2
  1  ~/test/dir3
  2  ~/test/dir1
  3  ~/test
 [alvin@VM_0_16_centos dir2]$ pushd +2
 ~/test/dir1 ~/test ~/test/dir2 ~/test/dir3
 [alvin@VM_0_16_centos dir1]$ pwd
 /home/alvin/test/dir1
 [alvin@VM_0_16_centos dir1]$ dirs -v
  0  ~/test/dir1
  1  ~/test
  2  ~/test/dir2
  3  ~/test/dir3

彈出目錄棧:popd

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

(1) popd (不帶任何參數(shù))

popd不帶任何參數(shù)執(zhí)行的效果,就是將目錄棧中的棧頂元素出棧。這時(shí),棧頂元素發(fā)生變化,自然當(dāng)前目錄也會(huì)發(fā)生相應(yīng)的切換。

 [alvin@VM_0_16_centos dir3]$ dirs -v
  0  ~/test/dir3
  1  ~/test/dir1
  2  ~/test
  3  ~/test/dir2
 [alvin@VM_0_16_centos dir3]$ popd
 ~/test/dir1 ~/test ~/test/dir2
 [alvin@VM_0_16_centos dir1]$ dirs -v
  0  ~/test/dir1
  1  ~/test
  2  ~/test/dir2

(2) popd +/-n

將目錄棧中的第n個(gè)元素刪除。同樣的,加減號(hào)表示從上往下數(shù),還是從下往上數(shù)。

 [alvin@VM_0_16_centos dir1]$ dirs -v
  0  ~/test/dir1
  1  ~/test
  2  ~/test/dir2
 [alvin@VM_0_16_centos dir1]$ popd +1
 ~/test/dir1 ~/test/dir2
 [alvin@VM_0_16_centos dir1]$ dirs -v
  0  ~/test/dir1
  1  ~/test/dir2

什么是Linux系統(tǒng)

Linux是一種免費(fèi)使用和自由傳播的類UNIX操作系統(tǒng),是一個(gè)基于POSIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng),使用Linux能運(yùn)行主要的Unix工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。

感謝大家的閱讀,以上就是“Linux系統(tǒng)高效切換目錄的解決方案是怎樣的”的全部?jī)?nèi)容了,學(xué)會(huì)的朋友趕緊操作起來(lái)吧。相信億速云小編一定會(huì)給大家?guī)?lái)更優(yōu)質(zhì)的文章。謝謝大家對(duì)億速云網(wǎng)站的支持!

向AI問(wèn)一下細(xì)節(jié)

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

AI