Linux 命令列工具使用小貼士及技巧(二)

2021-09-23 16:08:51 字數 3600 閱讀 7265

在本系列的第一部分中,我們通過討論cd -命令的用法,重點介紹了 linux 中的命令列導航。還討論了一些其他相關要點/概念。現在進一步討論,在本文中,我們將討論如何使用pushdpopd命令在 linux 命令列上獲得更快的導航體驗。

在我們開始之前,值得說明的一點是,此後提到的所有指導和命令已經在 ubuntu 14.04 和 bash shell(4.3.11)上測試過。

為了更好地理解pushdpopd命令的作用,讓我們先討論堆疊的概念。想象你廚房案板上有乙個空白區域,你想在上面放一套盤子。你會怎麼做?很簡單,乙個接乙個地放在上面。

所以在整個過程的最後,案板上的第乙個盤子是盤子中的最後乙個,你手中最後乙個盤子是盤子堆中的第乙個。現在當你需要乙個盤子時,你選擇在堆的頂部的那個盤子並使用它,然後需要時選擇下乙個。

pushdpopd命令是類似的概念。在 linux 系統上有乙個目錄堆疊,你可以堆疊目錄路徑以供將來使用。你可以使用dirs命令來在任何時間點快速檢視堆疊的內容。

下面的例子顯示了在命令列終端啟動後立即在我的系統上使用 dirs 命令的輸出:

$ dirs

~

輸出中的波浪號(~)表示目錄堆疊當前僅包含使用者的主目錄。

繼續下去,使用pushdpopd命令來執行儲存目錄路徑並刪除它的操作。使用pushd非常容易 - 只需將要儲存在目錄堆疊中的路徑作為此命令的引數傳遞。這裡有乙個例子:

pushd /home/himanshu/downloads/
上述命令的作用是,將當前工作目錄更改為你作為引數傳遞的目錄,並且還將路徑新增到目錄堆疊中。為了方便使用者,pushd命令在其輸出中產生目錄堆疊的內容。因此,當執行上面的命令時,產生了以下輸出:

~/downloads ~
要驗證pushd的輸出是正確的,你還可以使用dirs命令:

$ dirs

~/downloads ~

因此你可以看到dirs命令同樣產生相同的輸出。

讓我們再使用下pushd命令:

$ pushd /usr/lib/; pushd /home/himanshu/desktop/

/usr/lib ~/downloads ~

~/desktop /usr/lib ~/downloads ~

所以目錄堆疊現在包含總共四個目錄路徑,其中主目錄(~)在底部,並且使用者的桌面目錄在頂部。

一定要記住的是堆疊的頭是你當前的目錄。這意味著現在我們當前的工作目錄是~/desktop

現在,假設你想回到/usr/lib目錄,所以你所要做的就是執行popd命令:

$ popd

/usr/lib ~/downloads ~

popd命令不僅會將當前目錄切換到/usr/lib,它還會從目錄堆疊中刪除~/desktop,這一點可以從命令輸出中看出。這樣,popd 命令將允許你以相反的順序瀏覽這些目錄。

現在我們已經討論了pushdpopd命令的基礎知識,讓我們繼續討論與這些命令相關的一些其它細節。首先,這些命令還允許你操作目錄堆疊。例如,假設你的目錄堆疊看起來像這樣:

$ dirs

~/desktop /usr/lib ~ ~/downloads

現在,我們的要求是改變堆疊中目錄路徑的順序,最上面的元素(~/desktop)放到底部,剩下的每個都向上移動乙個位置。這可以使用以下命令實現:

pushd +1
上面的命令對目錄堆疊做的結果:

$ dirs

/usr/lib ~ ~/downloads ~/desktop

因此,我們看到目錄堆疊中的元素順序已經改變,並且現在和我們想要的一樣。當然,你可以讓目錄堆疊元素移動任何次數。例如,以下命令會將它們向上移動兩次:

$ pushd +2

~/downloads ~/desktop /usr/lib ~

你也可以使用負的索引值:

$ pushd -1

/usr/lib ~ ~/downloads ~/desktop

相似地,你可以在popd命令中使用此技術來從目錄堆疊刪除任何條目,而不用離開當前工作目錄。例如,如果要使用popd從頂部(目前是~/downloads)刪除第三個條目,你可以執行以下命令:

popd +2
記住堆疊索引的初始值是0,因此我們使用2來訪問第三個條目。

因此目錄堆疊現在包含:

$ dirs

/usr/lib ~ ~/desktop

確認條目已經被移除了。

如果由於某些原因,你發現你很難記住元素在目錄堆疊中的位置以及它們的索引,你則可以對在dirs命令中使用-v選項。這裡有乙個例子:

$ dirs -v

0 /usr/lib

1 ~2 ~/desktop

你可能已經猜到了,左邊的數字是索引,接下來跟的是這個索引對應的目錄路徑。

注意: 在dir中使用-c選項清除目錄堆疊。

現在讓我們簡要地討論一下popdpushd命令的實際用法。雖然它們第一眼看起來可能有點複雜,但是這些命令在編寫 shell 指令碼時會派上用場 - 你不需要記住你從**來;只要執行一下popd,你就能回到你來的目錄。

經驗豐富的指令碼編寫者通常以以下方式使用這些命令:

popd >/dev/null 2>&1
上述命令確保popd保持靜默(不產生任何輸出)。同樣,你也可以靜默pushd

pushdpopd命令也被 linux 伺服器管理員使用,他們通常在幾個相同的目錄之間移動。 在這裡介紹了一些其他有用的使用場景。

我同意pushdpopd的概念不是很直接。但是,它需要的只是一點練習 - 是的,你需要多實踐。花一些時間在這些命令上,你就會開始喜歡它們,特別是當它們提供了方便時。

原文發布時間為:2017-04-03

Linux 命令列工具使用小貼士及技巧(三)

在這個系列的第一部分,我們詳細地討論了cd 命令,在第二部分,我們深入 了pushd和popd兩個命令,以及它們使用的場景。繼續對命令列的討論,在這篇教程中,我們將會通過簡單易懂的例項來討論cdpath這個環境變數。我們也會討論關於此變數的一些高階細節。在這之前,先宣告一下此教程中的所有例項都已經在...

命令列工具的使用

mac上命令列開啟 ctrl 空格 搜尋terminal 開啟終端 windows命令列工具 powershell window7開始選單搜尋powershell windows8 用快捷鍵win q 或者滑鼠移動到桌面角落去搜尋powershell 可以右鍵選擇以管理員的身份執行powershel...

命令列工具的使用

啟動ros master roscore 啟動小海龜 器rosrun turtlesim turtlesim node 啟動海龜控制節點rosrun turtlesim turtle teleop key turtle1 cmd vel為給海龜發布指令的話題 那麼,通過指令給這個話題發布資料,讓海龜...