Linux命令列技巧 使用目錄棧進行導航

2021-08-20 13:17:03 字數 4250 閱讀 7164

title: linux命令列技巧——使用目錄棧進行導航

author: charles shih

create: 2017-08-31 17:03:28

dirs列出當前的目錄棧;

pushd改變目錄並將「原當前目錄」入棧;

popd將棧頂的目錄出棧並改變當前目錄;

備註:dirs命令的-v引數用於列出目錄及其序號,-l引數用於列出目錄全名,而-c引數用於清空目錄棧。

[cheshi@cheshi-laptop2 ~]$ dirs -l -v

0 /home/cheshi

1 /home/cheshi/temp/0/5

2 /home/cheshi/temp/0/4

3 /home/cheshi/temp/0/3

4 /home/cheshi/temp/0/2

5 /home/cheshi/temp/0/1

[cheshi@cheshi-laptop2 ~]$

備註:棧中序號為」0」的是當前目錄,序號越小目錄越靠近棧頂。

pushdcd命令的異同:

- 相同點:它們都可以改變當前目錄,即棧中序號為」0」的目錄。

- 不同點:cd不改變目錄棧的結構(除序號」0」對應的目錄改變),但pushd會使原來棧中所有目錄的序號加」1」(即發生入棧)。

連續使用不帶引數的pushd命令:當前目錄會在棧中序號為」0」和」1」的目錄之間切換,效果類似於cd -(但cd命令只改變序號為」0」的目錄)。

[cheshi@cheshi-laptop2 0]$ dirs -v

0 ~/temp/

01 ~/temp/

0/52 ~/temp/

0/43 ~/temp/

0/34 ~/temp/

0/25 ~/temp/

0/1[cheshi@cheshi-laptop2 0]$ cd -; dirs -v

/home/cheshi/temp/0/5

0 ~/temp/

0/51 ~/temp/

0/52 ~/temp/

0/43 ~/temp/

0/34 ~/temp/

0/25 ~/temp/

0/1[cheshi@cheshi-laptop2 5]$ cd -; dirs -v

/home/cheshi/temp/0

0 ~/temp/

01 ~/temp/

0/52 ~/temp/

0/43 ~/temp/

0/34 ~/temp/

0/25 ~/temp/

0/1[cheshi@cheshi-laptop2 0]$ pushd; dirs -v

~/temp/

0/5 ~/temp/

0 ~/temp/

0/4 ~/temp/

0/3 ~/temp/

0/2 ~/temp/

0/10 ~/temp/

0/51 ~/temp/

02 ~/temp/

0/43 ~/temp/

0/34 ~/temp/

0/25 ~/temp/

0/1[cheshi@cheshi-laptop2 5]$ pushd; dirs -v

~/temp/

0 ~/temp/

0/5 ~/temp/

0/4 ~/temp/

0/3 ~/temp/

0/2 ~/temp/

0/10 ~/temp/

01 ~/temp/

0/52 ~/temp/

0/43 ~/temp/

0/34 ~/temp/

0/25 ~/temp/

0/1[cheshi@cheshi-laptop2 0]$

pushd +n可以用來「輪尋」堆疊,將當前序號為」n」的目錄迴圈到棧頂(同時也切換到這個目錄)。這個命令不改變棧中目錄之間的次序關係,它是最常用的「目錄棧」導航方式。

[cheshi@cheshi-laptop2 0]$ dirs -v

0 ~/temp/

01 ~/temp/

0/52 ~/temp/

0/43 ~/temp/

0/34 ~/temp/

0/25 ~/temp/

0/1[cheshi@cheshi-laptop2 0]$ pushd +4; dirs -v

~/temp/

0/2 ~/temp/

0/1 ~/temp/

0 ~/temp/

0/5 ~/temp/

0/4 ~/temp/

0/30 ~/temp/

0/21 ~/temp/

0/12 ~/temp/

03 ~/temp/

0/54 ~/temp/

0/45 ~/temp/

0/3[cheshi@cheshi-laptop2 2]$

此外,pushd也支援-n操作,效果跟+n差不多,只是方向相反,不再贅述。

popd正好與pushd相反,使用不帶引數的popd將會使目錄棧中序號為」0」的目錄出棧,其他所有目錄的序號減」1」,原序號為」1」的目錄成為序號為」0」的當前目錄。

[cheshi@cheshi-laptop2 0]$ dirs -v

0 ~/temp/

01 ~/temp/

0/52 ~/temp/

0/43 ~/temp/

0/34 ~/temp/

0/25 ~/temp/

0/1[cheshi@cheshi-laptop2 0]$ popd; dirs -v

~/temp/

0/5 ~/temp/

0/4 ~/temp/

0/3 ~/temp/

0/2 ~/temp/

0/10 ~/temp/

0/51 ~/temp/

0/42 ~/temp/

0/33 ~/temp/

0/24 ~/temp/

0/1[cheshi@cheshi-laptop2 5]$

popd +n命令用來將指定序號的目錄出棧,並將其後的所有目錄序號減」1」。但要注意的是,這個操作並不改變當前目錄(除非你指定的是序號為」0」的目錄)。

[cheshi@cheshi-laptop2 0]$ dirs -v

0 ~/temp/

01 ~/temp/

0/32 ~/temp/

0/23 ~/temp/

0/14 ~/temp/

05 ~/temp/

0/56 ~/temp/

0/4[cheshi@cheshi-laptop2 0]$ popd +4; dirs -v

~/temp/

0 ~/temp/

0/3 ~/temp/

0/2 ~/temp/

0/1 ~/temp/

0/5 ~/temp/

0/40 ~/temp/

01 ~/temp/

0/32 ~/temp/

0/23 ~/temp/

0/14 ~/temp/

0/55 ~/temp/

0/4[cheshi@cheshi-laptop2 0]$

此外,popd同樣也支援-n操作,與+n類似,只不過它是從棧底開始計數的,因此-0為棧中最後乙個目錄,不再贅述。

linux 命令列工具使用小貼士及技巧(一)

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

Linux命令列技巧

下面我將和大家分享一些學習linux命令列的技巧,希望能對大家有所助益。如果在本文中遇到不太熟悉的命令,可以在終端中鍵入以下命令尋求幫助。man linux入門必備 提公升日常工作效率 find name py xargs grep some function cat hosts xargs i s...

Linux命令列技巧

下面我將和大家分享一些學習linux命令列的技巧,希望能對大家有所助益。如果在本文中遇到不太熟悉的命令,可以在終端中鍵入以下命令尋求幫助。linux入門必備 提公升日常工作效率 find name py xargs grep some function cat hosts xargs i ssh r...

Linux命令列技巧

下面我將和大家分享一些學習linux命令列的技巧,希望能對大家有所助益。如果在本文中遇到不太熟悉的命令,可以在終端中鍵入以下命令尋求幫助。linux入門必備 提公升日常工作效率 find name py xargs grep some function cat hosts xargs i ssh r...