做linux系统运维的小伙伴,大概率被这件事折磨过:频繁来回切换多个工作目录。看完日志切配置目录、改完配置还要切回源码目录,反复敲cd xxx、cd ..,路径敲到麻木,效率极低。很多人只知道 cd - 来回切两个目录,但遇到3个及以上目录频繁切换就彻底没辙。
今天给大家分享一个被严重低估的linux神器:pushd。搭配popd、dirs 组合使用,彻底告别低效cd,多目录跳转一键直达。
pushd本质是目录栈工具,遵循后进先出原则:
每次切换目录时,自动把当前路径存入栈中,无需手动记录路径,随时可以回退、跳转任意历史目录。
配套三个核心命令,各司其职:
•pushd:压入目录 + 切换目录
•popd:弹出栈顶目录 + 回退上一级
•dirs:查看当前目录栈列表
二、pushd的日常基本用法
1. 基础用法:存路径+切目录
执行后会自动切换到目标目录,同时将新旧目录存入栈中,终端会直接打印栈列表。
#当前目录:/data/dstpushd /var/log/#输出结果(栈列表)/var/log /data/dst#将原目录/data/dst存入目录栈并切换当前工作目录到/var/log#输出打印顺序:当前新目录 栈内保存的历史目录
简单说:一步实现切换目录+保存路径,比cd多了记忆功能。
执行后目录栈(后进先出):
栈顶 → /data/dst
栈底 → 空
当前目录:/var/log
popd为返回栈顶目录
2. 无参数pushd:双向快速切换
不用任何参数,直接敲pushd,会互换栈顶两个目录。
适合两个目录高频互切场景,替代笨拙的 cd -,响应更快、更稳定
#栈状态:dirA dirBpushd#栈状态自动互换:dirB dirA#下面以/data/dir和/var/log为例pushd /var/logdirspushdpwdpushdpwd
3. dirs 查看栈(日常辅助)
目录存多了容易乱,用dirs -v查看带序号的完整栈列表,清晰直观。
dirs -v#输出示例 0 /data/dst 1 /var/log
序号是核心,后续精准跳转全靠它。
4. 高阶:指定序号一键跳转
这是提升效率的关键!不用逐层回退,通过栈序号直达任意目录。
#跳转到栈中序号为1的目录,有多个目录按照实际序号跳转 pushd +1
多目录交叉工作时,这一条命令能省下大量重复切换时间。
5. popd 清理栈+回退目录
完成当前目录工作后,用 popd 弹出栈顶目录,自动回到上一个目录,同步清理栈冗余。
#回退并删除栈顶目录popd#清空整个目录栈(常用清理命令)dirs -c
三、实战高频场景
场景1:多项目目录来回切换
同时操作源码、日志、配置三个目录,无需反复输路径:
#依次压入常用目录pushd /data/1pushd /data/2pushd /data/3#查看所有缓存目录dirs -v#任意跳转、用完回退pushd +1popd
场景2:临时处理目录,快速归位
当前在配置目录,需要临时查看系统日志,看完立刻返回:
#保存当前目录并切换到日志目录pushd /var/log/#处理完直接回原目录,自动清理栈popd
场景3:双目录高频互切
pushd /data/1pushd /data/2#无参数快速互切,反复调试超方便pushd
四、注意事项
栈不会自动清空:长期操作会堆积大量旧路径,定期用 dirs -c 清理即可
路径失效不报错:目录被删除后,栈中仍会保留无效路径,跳转失败及时清理
区分 +/- 序号:pushd +n 从栈顶正数,pushd -n 从栈底倒数,不要混用
五、总结
日常终端目录切换,记住这套万能流程就够了:
1.常用目录 pushd 路径 存入栈
2.dirs -v 查看所有缓存目录
3.多目录跳转 pushd +序号
4.双目录互切 直接 pushd
5.用完 popd 回退,dirs -c 清空冗余
linux 高效工作的核心,从来不是记住复杂命令,而是用对工具减少无效操作。一个小小的 pushd,熟练使用就能彻底告别低效cd切换,大幅提升终端操作效率。
如果你觉得文章对你的运维工作有帮助,记得点赞加收藏。
#运维#linux运维 #linux实战 #pushd