Linux路径切换命令——directory stack

本文介绍Linux环境下使用dirs、pushd和popd命令进行目录栈管理的方法。包括如何查看目录栈内容、将目录压栈和弹栈,以及一些高级用法如指定特定目录的位置变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

操作directory stack一共需要3个命令:

dirs 、pushd、popd

  • dirs: 显示当前目录栈
  • pushd: 把目录压栈
  • popd: 把目录弹栈

dirs

显示目录栈内容,如果没有被pushd过,或者popd到底了,此时dirs会显示当前目录,就等价于pwd了

-c 清空目录栈

-l 不显示~开头的目录

[root@localhost ~]# dirs
~ ~ /tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1
[root@localhost ~]# dirs -l
/root /root /tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1
View Code

-p 显示目录栈,每个条目占一行

[root@localhost ~]# dirs -p
~
~
/tmp/dir4
/tmp/dir3
/tmp/dir2
/tmp/dir1
View Code

-v 显示目录栈,每个条目占一行,并且用序号标出条目在栈中的标号

[root@localhost ~]# dirs -v
 0  ~
 1  ~
 2  /tmp/dir4
 3  /tmp/dir3
 4  /tmp/dir2
 5  /tmp/dir1
View Code

如果想把~替换掉,不能-vl一起使用。这个命令比较怪,虽有单个选项不能组合写。

[root@localhost ~]# dirs -vl
-bash: dirs: -vl: invalid number
dirs: usage: dirs [-clpv] [+N] [-N]
[root@localhost ~]# dirs -v -l
 0  /root
 1  /root
 2  /tmp/dir4
 3  /tmp/dir3
 4  /tmp/dir2
 5  /tmp/dir1
View Code

pushd

上面说到dirs显示目录栈内容。即使目录栈被popd到底,提示:

[root@localhost dir1]# popd
-bash: popd: directory stack empty
View Code

目录栈实际上并没有空,此时执行dirs还是能看到目录(和pwd一样了)。如果此时pushd dir,在目录栈中dir是排在之前pwd显示目录之前的。

此时执行pushd不带参数,不带路径,会提示:

[root@localhost /]# pushd 
-bash: pushd: no other directory
View Code

因为此时目录栈中只有一个目录,没办法两个目录兑换位置

pushd  dir :将dir加到directory stack栈顶。入栈的过程中也会显示之前已经在栈里面的内容。并且入栈后,还会切换到这个目录(-n可以阻止这种行为)

[root@localhost dir3]# cd /tmp/dir4
[root@localhost dir4]# pushd .
/tmp/dir4 /tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1
View Code

pushd :如果不加参数,把栈顶2个条目对换位置

[root@localhost dir4]# dirs -p
/tmp/dir4
/tmp/dir3
/tmp/dir2
/tmp/dir1
/
[root@localhost dir4]# pushd 
/tmp/dir3 /tmp/dir4 /tmp/dir2 /tmp/dir1 /
[root@localhost dir3]# dirs -p
/tmp/dir3
/tmp/dir4
/tmp/dir2
/tmp/dir1
/
View Code

pushd +N :将(从上到下,以0开始)第几个移到栈顶

pushd -N  :将(从下到上,以0开始)第几个移到栈顶

[root@localhost dir3]# dirs -v
 0  /tmp/dir3
 1  /tmp/dir4
 2  /tmp/dir2
 3  /tmp/dir1
 4  /
[root@localhost dir3]# pushd +1
/tmp/dir4 /tmp/dir2 /tmp/dir1 / /tmp/dir3
[root@localhost dir4]# dirs -v
 0  /tmp/dir4
 1  /tmp/dir2
 2  /tmp/dir1
 3  /
 4  /tmp/dir3
[root@localhost dir4]# pushd -1
/ /tmp/dir3 /tmp/dir4 /tmp/dir2 /tmp/dir1
[root@localhost /]# dirs -v
 0  /
 1  /tmp/dir3
 2  /tmp/dir4
 3  /tmp/dir2
 4  /tmp/dir1
View Code

popd

不加参数时,默认行为弹出栈顶目录并且换到该目录。使用-n可以不切换目录

popd +N :将(从上到下,以0开始)第几个删除,栈中原有条目位置不变

popd -N  :将(从下到上,以0开始)第几个删除,栈中原有条目位置不变

[root@localhost dir4]# dirs -v
 0  /tmp/dir4
 1  /tmp/dir3
 2  /tmp/dir2
 3  /tmp/dir1
 4  /
[root@localhost dir4]# popd +1
/tmp/dir4 /tmp/dir2 /tmp/dir1 /
[root@localhost dir4]# dirs -v
 0  /tmp/dir4
 1  /tmp/dir2
 2  /tmp/dir1
 3  /
[root@localhost dir4]# popd -1
/tmp/dir4 /tmp/dir2 /
[root@localhost dir4]# dirs -v
 0  /tmp/dir4
 1  /tmp/dir2
 2  /
View Code

除了目录栈用于切换目录,还可以使用Autojump和bd


 

上面高级目录切换技术,即使最小化安装Linux也有。后面2中技术,需要单独安装

Autojump

Autojump使用Python编写

自动补完不算什么,一键直达目录才是终极神器!

bd

bd:快速返回某级父目录而不用冗余地输入 “cd ../../..”

 

转载于:https://www.cnblogs.com/kelamoyujuzhen/p/9172273.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值