linux popd 命令,Linux shell中的pushd和popd命令「建议收藏」

linux popd 命令,Linux shell中的pushd和popd命令「建议收藏」在linux的shell中可以使用pushd和popd命令方便地在多个目录之间切换。通过使用pushd和popd能够极大地提高效率。下面介绍下简单使用方法:0、使用cd-进行目录切换一般,Shell中都可以通过cd-命令回到之前的目录,下面是一个例子:$pwd/home/lfqy$cd/$cd-/home/lfqy$实际上,cd-中,-就相当于变量$OLDPWD。cd-就相当…

大家好,又见面了,我是你们的朋友全栈君。

在linux的shell中可以使用 pushd和popd 命令方便地在多个目录之间切换。通过使用pushd和popd能够极大地提高效率。下面介绍下简单使用方法:

0、使用cd -进行目录切换

一般,Shell中都可以通过cd -命令回到之前的目录,下面是一个例子:$ pwd

/home/lfqy

$ cd /

$ cd –

/home/lfqy

$

实际上,cd -中,-就相当于变量$OLDPWD。cd -就相当于cd $OLDPWD。下面是一个例子:$ pwd

/home/lfqy

$ cd /

$ echo $OLDPWD

/home/lfqy

$ cd $OLDPWD

$ pwd

/home/lfqy

$

1、pushd、popd和dirs

pushd和popd是对一个目录栈进行操作,而dirs是显示目录栈的内容。而目录栈就是一个保存目录的栈结构,该栈结构的顶端永远都存放着当前目录(这里点从下面可以进一步看到)。

1.1 dirs

dirs常用的有两个参数:选项含义-p每行显示一条记录

-v每行显示一条记录,同时展示该记录在栈中的index

-c清空目录栈

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

/home/lfqy

$ dirs -v

0 ~

$ cd /

$ dirs -v

0 /

$ dirs -c

$ dirs -v

0 /

$

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

1.2 pushd

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

pushd 目录

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

/home/lfqy

$ pushd /

/ ~

$ dirs -v

0 /

1 ~

$ pushd ~/Music/

~/Music / ~

$ dirs -v

0 ~/Music

1 /

2 ~

$

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

pushd不带任何参数。

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

0 ~/Music

1 /

2 ~

$ pushd

/ ~/Music ~

$ dirs -v

0 /

1 ~/Music

2 ~

$ pushd

~/Music / ~

$ dirs -v

0 ~/Music

1 /

2 ~

$

pushd +n

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

0 ~/Music

1 /

2 ~

$ pushd +2

~ ~/Music /

$ dirs -v

0 ~

1 ~/Music

2 /

$ pushd +1

~/Music / ~

$ dirs -v

0 ~/Music

1 /

2 ~

$

1.3 popd

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

popd不带参数

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

0 ~/Music

1 /

2 ~

$ popd

/ ~

$ dirs -v

0 /

1 ~

$ popd

~

$ dirs -v

0 ~

$

popd +n

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

0 ~/Music

1 /

2 ~

$ popd +2

~/Music /

$

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

2、pushd和popd的+n和-n

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

最后更新于 2019-03-28 07:19:11 并被添加「」标签,已有 1152 位童鞋阅读过。

本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148307.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java自定义注解怎么实现注解(怎么获取自定义注解内的值)

    TL;DRJava注解广泛运用在开发之中,用于增强变量/方法/类等。尝试说明Java自定义注解的使用,以及通过开源项目中的使用进行说明。本文主要记录个人的理解,全文基于JavaSE8。自定义注解自定义注解分为两个部分:注解声明和注解处理逻辑。每个注解可以有多个属性值,同名注解通过声明后可以在对象上使用多个。注解结构定义注解用以下实例说明:12345678910@Repeatable(Lea…

    2022年4月13日
    99
  • 深度自编码器原理_编码器原理

    深度自编码器原理_编码器原理自编码器的目标:使用少量高阶特征重构输入定义:使用自身的高阶特征编码自己思想:自编码器其实也是一种神经网络,他的输入和输出一致的,借助稀疏编码的思想,目标是使用高阶特征重新组合来重构自己。特点:期望输入和输出一致;希望使用高阶特征来重构自己,而不只是复制像素点。Hinton提出基于信念网络(deepbeliefNetwords,DBN,由多层RBM堆叠而成)可以使用无监督学习逐层训练的贪心算法…

    2022年10月1日
    4
  • glassfish是什么_glasses of

    glassfish是什么_glasses of一:安装下载:    必须预先安装Jdk,并且设置JAVA_HOME环境变量。从官网下载GlassFish,是一个jar文件。下载后运行:F:\>java-Xmx256m-jarglassfish-installer-v2ur2-b04-windows.jar如果这里不加上-Xmx256m,很有可能会报OutOfMemoryException。这个命令会产生一个名为glassf

    2022年8月20日
    6
  • stack overflow at line 错误原因及解决

    stack overflow at line 错误原因及解决错误表现:按关闭窗口按钮时,弹出对话框:stackoverflowatline87 .那个按键的onclick=”window.close()”                     很简单的代码,不知道为什么总是出错,后来找了一下,发现原因是:我的代码为:”JavaScript”>function close(){    windo

    2022年7月15日
    23
  • EM算法定义及推导

    EM算法是一种迭代算法,传说中的上帝算法,俗人可望不可及。用以含有隐变量的概率模型参数的极大似然估计,或极大后验概率估计EM算法定义输入:观测变量数据X,隐变量数据Z,联合分布$P(X,Z|\th

    2021年12月30日
    54
  • 【转载】通过sqlserver日志恢复误删除的数据

    【转载】通过sqlserver日志恢复误删除的数据

    2021年11月21日
    51

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号