Linux命令行技巧——使用目录栈进行导航

版权声明:本文为博主原创文章,转载请注明出处,谢谢合作! https://blog.csdn.net/sch0120/article/details/80607747

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命令

pushdcd命令的异同:
- 相同点:它们都可以改变当前目录,即栈中序号为”0”的目录。
- 不同点:cd不改变目录栈的结构(除序号”0”对应的目录改变),但pushd会使原来栈中所有目录的序号加”1”(即发生入栈)。

连续使用不带参数的pushd命令:当前目录会在栈中序号为”0”和”1”的目录之间切换,效果类似于cd -(但cd命令只改变序号为”0”的目录)。

[cheshi@cheshi-laptop2 0]$ dirs -v
 0  ~/temp/0
 1  ~/temp/0/5
 2  ~/temp/0/4
 3  ~/temp/0/3
 4  ~/temp/0/2
 5  ~/temp/0/1
[cheshi@cheshi-laptop2 0]$ cd -; dirs -v
/home/cheshi/temp/0/5
 0  ~/temp/0/5
 1  ~/temp/0/5
 2  ~/temp/0/4
 3  ~/temp/0/3
 4  ~/temp/0/2
 5  ~/temp/0/1
[cheshi@cheshi-laptop2 5]$ cd -; dirs -v
/home/cheshi/temp/0
 0  ~/temp/0
 1  ~/temp/0/5
 2  ~/temp/0/4
 3  ~/temp/0/3
 4  ~/temp/0/2
 5  ~/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/1
 0  ~/temp/0/5
 1  ~/temp/0
 2  ~/temp/0/4
 3  ~/temp/0/3
 4  ~/temp/0/2
 5  ~/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/1
 0  ~/temp/0
 1  ~/temp/0/5
 2  ~/temp/0/4
 3  ~/temp/0/3
 4  ~/temp/0/2
 5  ~/temp/0/1
[cheshi@cheshi-laptop2 0]$

pushd +N可以用来“轮寻”堆栈,将当前序号为”N”的目录循环到栈顶(同时也切换到这个目录)。这个命令不改变栈中目录之间的次序关系,它是最常用的“目录栈”导航方式。

[cheshi@cheshi-laptop2 0]$ dirs -v
 0  ~/temp/0
 1  ~/temp/0/5
 2  ~/temp/0/4
 3  ~/temp/0/3
 4  ~/temp/0/2
 5  ~/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/3
 0  ~/temp/0/2
 1  ~/temp/0/1
 2  ~/temp/0
 3  ~/temp/0/5
 4  ~/temp/0/4
 5  ~/temp/0/3
[cheshi@cheshi-laptop2 2]$

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

popd命令

popd正好与pushd相反,使用不带参数的popd将会使目录栈中序号为”0”的目录出栈,其他所有目录的序号减”1”,原序号为”1”的目录成为序号为”0”的当前目录。

扫描二维码关注公众号,回复: 3830246 查看本文章
[cheshi@cheshi-laptop2 0]$ dirs -v
 0  ~/temp/0
 1  ~/temp/0/5
 2  ~/temp/0/4
 3  ~/temp/0/3
 4  ~/temp/0/2
 5  ~/temp/0/1
[cheshi@cheshi-laptop2 0]$ popd; dirs -v
~/temp/0/5 ~/temp/0/4 ~/temp/0/3 ~/temp/0/2 ~/temp/0/1
 0  ~/temp/0/5
 1  ~/temp/0/4
 2  ~/temp/0/3
 3  ~/temp/0/2
 4  ~/temp/0/1
[cheshi@cheshi-laptop2 5]$

popd +N命令用来将指定序号的目录出栈,并将其后的所有目录序号减”1”。但要注意的是,这个操作并不改变当前目录(除非你指定的是序号为”0”的目录)。

[cheshi@cheshi-laptop2 0]$ dirs -v
 0  ~/temp/0
 1  ~/temp/0/3
 2  ~/temp/0/2
 3  ~/temp/0/1
 4  ~/temp/0
 5  ~/temp/0/5
 6  ~/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/4
 0  ~/temp/0
 1  ~/temp/0/3
 2  ~/temp/0/2
 3  ~/temp/0/1
 4  ~/temp/0/5
 5  ~/temp/0/4
[cheshi@cheshi-laptop2 0]$

此外,popd同样也支持-N操作,与+N类似,只不过它是从栈底开始计数的,因此-0为栈中最后一个目录,不再赘述。

相关文章

Linux 命令行工具使用小贴士及技巧(一)
Linux 命令行工具使用小贴士及技巧(二)

猜你喜欢

转载自blog.csdn.net/sch0120/article/details/80607747
今日推荐