許多Linux使用者從未聽說過pushd和popd,但它們已經存在了很久。它們還可以顯著加快在命令列上導航目錄的過程。我們將教你如何使用它們。
BillJoy在其1978年的C Shell中的創新之一是目錄堆疊的概念和操作方法:pushd和popd。模仿是最真誠的奉承,目錄堆疊、pushd和popd很快就被合併到其他shell(比如Bash)甚至其他作業系統中。
堆疊的概念很簡單。專案一次放一個在堆疊上,最近新增的專案總是佔據頂部位置。當從堆疊中檢索項時,它們將按順序從頂部向下移除。這種性質的堆疊通常稱為後進先出(LIFO)佇列。
實際上,pushd和popd比這個靈活一點,但這是一個很好的模型。
當我們提到一個目錄堆疊時,pushd和popd中的“d”代表“directory”就不足為奇了。這些命令允許您將目錄推到或從目錄堆疊中彈出。
但這對我們有什麼好處呢?
使用pushd時,會發生以下三種情況:
在下面的示例中,請注意目錄堆疊是如何隨著每個新的pushd命令而增長的。還要注意,堆疊的頂部在左側,這是新條目出現的地方。
在第一個pushd命令之後,堆疊中有兩個條目:您離開的目錄和您移動到的目錄。
在我們的示例中,我們鍵入以下內容:
pushd ~/Desktop pushd ~/Music pushd ~/Documents pushd ~/Pictures pushd ~最後一個pushd命令將我們帶回主目錄,因此堆疊中的第一個和最後一個條目是tilde(~),它表示主目錄。這表明,儘管一個目錄已經在堆疊中,但它將被再次新增到其他pushd命令中。
還要注意,堆疊中最左邊的條目(最近新增的條目)是當前目錄。
可以使用dirs命令顯示目錄堆疊,如下所示:
dirs它不影響堆疊,只是顯示它。pushd可以使用的一些選項涉及堆疊中目錄的位置。
如果要檢視每個目錄的數字位置,可以使用-v(垂直)選項,如下所示:
目錄-v
如果希望看到主目錄的指定路徑而不是波浪號(~),請新增-l(長格式)選項,如下所示:
dirs -v -l正如我們所看到的,當您使用pushd命令時,它會做三件事:更改您的目錄,將新目錄新增到堆疊中,併為您顯示堆疊。可以使用-n(無旋轉)選項將目錄新增到堆疊中,而無需更改當前目錄。
這是我們的目錄堆疊:
dirs -v -l現在,我們將使用帶有-n選項的pushd命令和/home/dave目錄中的pas作為引數。然後,我們將再次檢查目錄堆疊。
我們鍵入以下內容:
pushd -n /home/dave dirs -v -l/home/dave目錄被新增到slot 1中的堆疊中,slot 1是堆疊中的第二個位置。它不能佔據頂部位置,因為插槽0始終是當前目錄。
我們沒有離開當前目錄~/Videos,所以它沒有旋轉到堆疊中的另一個位置。
可以使用pushd的數字引數移動到堆疊中的任何目錄,這樣做時堆疊會旋轉。選擇要移動的目錄將成為堆疊中的第一個條目。
可以透過目錄的位置號引用堆疊中的目錄。您可以從堆疊的頂部或底部進行計數。對於正數,如+3,從頂部開始計數;對於負數,如-2,從底部開始計數。
/home/dave/Documents目錄位於位置3。我們可以使用以下命令移動該目錄:
pushd +3我們選擇的目錄上方的堆疊中的目錄被移動到堆疊的底部。我們選擇的目錄現在佔據了最上面的位置,我們被移動到那個目錄中。
如果要更改為堆疊底部的目錄,可以使用以下命令:
pushd -0最後一個目錄被移動到第一個插槽,所有其他目錄在堆疊中下移。我們已更改為~/Pictures目錄。
可以使用popd命令從堆疊中刪除目錄。
如果我們檢視目錄堆疊,我們可以看到位置1的目錄是/home/dave。要從堆疊中刪除此項,請鍵入以下內容將數字傳遞給popd:
dirs -v -l popd +1/home/dave目錄被刪除,堆疊中位於它下面的目錄都被上移了一個位置。
就像我們可以使用pushd一樣,我們可以使用popd從堆疊的底部進行計數。要從堆疊中刪除最後一個目錄,請鍵入:
popd -0~/Music目錄將從堆疊中的最後一個位置刪除。
要更改目錄,請執行某些操作,然後跳回到上一個目錄,可以同時使用pushd和popd。
我們將使用pushd移到另一個目錄。我們將使用popd丟棄堆疊中最頂層的目錄,並移動到第二個位置的目錄。這是您剛移出的目錄,因此您將被放回原來所在的目錄。
我們鍵入以下內容:
pushd ~ popd我們從~/Projects目錄開始,推送到home目錄,然後彈出回到~/Projects目錄。
我們將演示如何在包含一些巢狀目錄的堆疊中旋轉,但是您可以在檔案系統中的任何位置使用任何目錄。
我們築巢的最深層次是:
/home/dave/Projects/htg/articles從home目錄開始,我們將逐步遍歷每個目錄,直到到達articles目錄。然後,我們來看看目錄堆疊。
我們鍵入以下內容:
pushd ~/Projects pushd htg pushd articles dirs -v -l當您重複發出pushd+1命令時,您可以在目錄堆疊中迴圈。如果您經常這樣做,pushd+1將是一個很好的別名候選者。
鍵入以下內容:
pushd +1相關:如何在Linux上建立別名和Shell函式
很容易恢復到舊習慣,並使用cd來更改目錄。如果這樣做,您將在堆疊中的第一個目錄上蓋章。這是不可避免的,因為第一個插槽是為當前工作目錄保留的,其他位置都沒有。
為此,請鍵入以下內容:
dirs -v -l cd ~/Music dirs -v -l在您習慣了pushd和popd命令(也許,還可以使用它們來建立一些別名)之後,您將有一種在目錄之間跳轉的超快速方法。
這就是為什麼我們要掛在命令列上。效率很高,對吧?
相關:您應該知道的37條重要的Linux命令
... 在虛擬機器中的Windows上安裝Linux非常簡單。下面介紹如何在VMware Workstation上逐步安裝Linux。 ...
...符不僅要有一個命令詞典,還要了解每個引數的含義以及如何將不同的引數組合起來以達到預期的效果。 ...
... 下面介紹如何使用Windows子系統在Windows中執行Linux桌面。 ...
...許您在Android裝置上安裝誠實善良的Linux應用程式。下面是如何使用Termux應用程式。 ...
... 如何在windows10上安裝linux bash shell ...
要在Linux中重新命名檔案嗎?如果您知道如何在Windows、macOS或Chrome作業系統中完成這項工作,那麼您就知道如何在這裡完成這項工作。在大多數版本的Linux上,您只需右鍵單擊一個檔案並選擇Rename選項。 ...
...也是免費的。不僅如此,你還可以自由地看看這些程式是如何**的。如果您有專業知識,您可以使用此程式碼建立自己的軟體。 ...
...但幸運的是,更改Linux密碼很容易。今天我們將向您展示如何通過幾個簡單的命令更改當前使用者的密碼、其他使用者的密碼和超級使用者的密碼。 ...
Linux上有多種型別的環境變數。瞭解如何檢視它們,為本地和遠端登入建立它們,並使它們在重新啟動後仍然有效。 環境變數的工作原理 啟動終端視窗及其內部的shell時,會引用一組變數,以確保shell配置正確。這些變數還確...