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」的是當前目錄,序號越小目錄越靠近棧頂。
pushd
與cd
命令的異同:
- 相同點:它們都可以改變當前目錄,即棧中序號為」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...