首頁 > 系統教程 > Linux > 主體

Linux系統命令列工具的使用技巧(二)

WBOY
發布: 2024-02-09 16:40:33
轉載
1065 人瀏覽過

在本系列文章的第一部分中,我們透過探討 cd – 指令的使用方法,重點介紹了 Linux 中的命令列導航,並討論了一些相關的要點/概念。現在,我們將進一步探討如何使用 pushd 和 popd 命令在 Linux 命令列中獲得更快捷的導航體驗。

Linux系統命令列工具的使用技巧(二)

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

pushd 和 popd 指令基礎

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

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

pushd 和 popd 指令是類似的概念。在 Linux 系統上有一個目錄堆疊,你可以堆疊目錄路徑以供將來使用。你可以使用 dirs 指令來在任何時間點快速查看堆疊的內容。

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

$ dirs
 ~
登入後複製

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

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

pushd /home/himanshu/Downloads/
登入後複製

上述指令的作用是,將目前工作目錄變更為你作為參數傳遞的目錄,並且也會將路徑加入目錄堆疊中。為了方便用戶,pushd 指令在其輸出中產生目錄堆疊的內容。因此,當執行上面的命令時,產生了以下輸出:
~/Downloads ~
輸出顯示現在堆疊中有兩個目錄路徑:一個是使用者的主目錄,還有使用者的下載目錄。它們的保存順序是:主目錄位於底部,新添加的 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 指令將允許你以相反的順序瀏覽這些目錄。

一些進階用法

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

$ 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 选项清除目录堆栈。

现在让我们简要地讨论一下 popd 和 pushd 命令的实际用法。虽然它们第一眼看起来可能有点复杂,但是这些命令在编写 shell 脚本时会派上用场 – 你不需要记住你从哪里来;只要执行一下 popd,你就能回到你来的目录。

经验丰富的脚本编写者通常以以下方式使用这些命令:

popd >/dev/null 2>&1
登入後複製

上述命令确保 popd 保持静默(不产生任何输出)。同样,你也可以静默 pushd。

pushd 和 popd 命令也被 Linux 服务器管理员使用,他们通常在几个相同的目录之间移动。 在这里介绍了一些其他有用的使用场景。

总结

我同意 pushd 和 popd 的概念不是很直接。但是,它需要的只是一点练习 – 是的,你需要多实践。花一些时间在这些命令上,你就会开始喜欢它们,特别是当它们提供了方便时。

以上是Linux系統命令列工具的使用技巧(二)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:lxlinux.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!