千家信息网

Linux下如何使用pushd和popd高效切换目录

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要介绍了Linux下如何使用pushd和popd高效切换目录,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。pushd和pop
千家信息网最后更新 2025年02月01日Linux下如何使用pushd和popd高效切换目录

这篇文章主要介绍了Linux下如何使用pushd和popd高效切换目录,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

pushd和popd是对一个目录栈进行操作,而dirs是显示目录栈的内容。而目录栈就是一个保存目录的栈结构,该栈结构的顶端永远都存放着当前目录。

1、pushd、popd和dirs

1.1 dirs

dirs常用的有两个参数:

选项含义
-p每行显示一条记录
-v每行显示一条记录,同时展示该记录在栈中的index
-c清空目录栈

下面没有显示地对目录栈进行任何操作,我们来看下当前目录栈的内容是什么:

$ pwd/home/lfqy$ dirs -v0  ~$ cd /$ dirs -v0  /$ dirs -c$ dirs -v0  /$

可以看出,目录栈中只有一个目录(当然是在栈顶),就是当前所在的目录。当切换目录之后,栈中的目录也随之改变。通过-c选项可以将目录栈中除当前目录之外的其它目录清除,由于上面的例子中目录栈只包含当前目录,所以没有变化。

1.2 pushd

每次pushd命令执行完成之后,默认都会执行一个dirs命令来显示目录栈的内容。pushd的用法主要有如下几种:

  1. pushd 目录

    pushd后面如果直接跟目录使用,会切换到该目录并且将该目录置于目录栈的栈顶。(时时刻刻都要记住,目录栈的栈顶永远存放的是当前目录。如果当前目录发生变化,那么目录栈的栈顶元素肯定也变了;反过来,如果栈顶元素发生变化,那么当前目录肯定也变了。)下面是一个例子:

    $ pwd/home/lfqy$ pushd // ~$ dirs -v0  /1  ~$ pushd ~/Music/~/Music / ~$ dirs -v0  ~/Music1  /2  ~$

    这样,不难看出,用pushd在切换目录的同时,也将历史目录以栈结构的形式保存了下来。

  2. pushd不带任何参数。

    pushd不带任何参数执行的效果就是,将目录栈最顶层的两个目录进行交换。前面说过,栈顶目录和当前目录一个发生变化,另一个也变。这样,实际上,就实现了cd -的功能。下面是一个例子(这个例子接上文的执行现场):

    $ dirs -v0  ~/Music1  /2  ~$ pushd/ ~/Music ~$ dirs -v0  /1  ~/Music2  ~$ pushd~/Music / ~$ dirs -v0  ~/Music1  /2  ~$
  3. pushd +n

    到这里,可能会想如果想切换到目录栈中的任意一个目录,该如何?pushd +n正是这个作用:pushd +n切换到目录栈中的第n个目录(这里的n就是dirs -v命令展示的index),并将该目录以栈循环的方式推到栈顶。下面是一个例子(接上文的执行现场),注意栈循环的方式带来的栈中内容的变化规律:

    $ dirs -v0  ~/Music1  /2  ~$ pushd +2~ ~/Music /$ dirs -v0  ~1  ~/Music2  /$ pushd +1~/Music / ~$ dirs -v0  ~/Music1  /2  ~$

1.3 popd

每次popd命令执行完成之后,默认都会执行一个dirs命令来显示目录栈的内容。popd的用法主要有如下几种:

  1. popd不带参数

    popd不带任何参数执行的效果,就是将目录栈中的栈顶元素出栈。这时,栈顶元素发生变化,自然当前目录也会发生相应的切换(接上文的执行现场),下面是一个例子:

    $ dirs -v0  ~/Music1  /2  ~$ popd/ ~$ dirs -v0  /1  ~$ popd~$ dirs -v0  ~$
  2. popd +n

    将目录栈中的第n个元素删除(这里的n就是命令dirs -v显示的目录index)。下面是一个例子:

    $ dirs -v0  ~/Music1  /2  ~$ popd +2~/Music /$

    这里可以发现,如果对于目录栈的操作没有引发栈顶元素的变化,将不会导致当前目录的切换。

2、pushd和popd的+n和-n

上面我们用的都是+n作为参数,实际在使用pushd和popd的时候,有时候也会用到-n参数。两者的差别如下:+n的含义是从栈顶往栈底方向进行计数,从0开始;-n的含义刚好相反,从栈底向栈顶方向计数,从0开始。这样有点拗口,实际上,从默认的dirs命令(不带任何参数)的输出来解释最好理解了:+n是指从左往右数,-n是指从右往左数,都是从0开始。

感谢你能够认真阅读完这篇文章,希望小编分享的"Linux下如何使用pushd和popd高效切换目录"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

目录 切换 参数 例子 命令 变化 元素 就是 内容 篇文章 上文 同时 含义 实际 结构 两个 实际上 效果 方向 方式 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库基础增数 上海的保网络技术有限公司搬迁 博罗游戏软件开发 拆服务器主机 丝路之星网络技术有限公司 exec表导入数据库 哪里可以找到机械专业的数据库 工商软件开发中心的优势 计算机网络技术课堂实录 苏州先科星网络技术 dnf台服数据库ip 湖南郴州软件开发工程师学费多少 软件开发对计算机要求 初中信息技术网络安全与文明 e52650服务器cpu windows10家庭版能安装数据库吗 山东博正网络技术有限公司 正数网络技术有限公司是外包吗 建立学生数据库模式 国家一级计算机网络技术师范类 软件开发大学一般是什么专业 wps 导入数据库 谷露软件用他们的数据库安全吗 计算机系统与网络技术课后答案 数据库左连接用法 易语言edb数据库全部清除 2021年网络安全事件案例数据 联想万全服务器t800a 安徽达光网络技术有限公司 最主要的局域网络技术
0