首页 > 编程知识 正文

push和pop指令执行过程,数据结构中push和pop

时间:2023-05-05 22:36:48 阅读:24510 作者:3918

事实上,我们很早就知道pushd和popd可以用于在linux上轻松地在多个目录之间切换。 那时很漂浮,我觉得切换目录不需要那么复杂。 实际上,发现使用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/lfqy $ CD/oldpwd $ pwd/home/lfqy $ 1、pushd、popd、dirs和dirs pushd与popd成对这里可以从下面进一步看到。

1.1 dirs dirs常用的有两个参数。

可选意义-p1行显示一条记录-v1行显示一条记录,指示不对堆栈中未显示在索引- c空目录堆栈下的目录堆栈执行任何操作。 让我们看看当前目录堆栈的内容。

$ pwd/home/lfqy $ dirs-v 0至$ CD/$ dirs-v0/$ dirs-c $ dirs-v0/$可见,目录堆栈中只有一个当前目录。 切换目录时,堆栈中的目录也会发生变化。 使用-c选项,可以清除目录堆栈中当前目录以外的目录。 在上面的示例中,目录堆栈只包含当前目录,因此没有更改。

1.2每次pushd pushd命令执行完成时,缺省情况下都会运行显示目录堆栈内容的dirs命令。 pushd的使用方法主要有以下几种。

推式产品目录

如果在推送之后直接与目录一起使用,则切换到目录,并位于目录堆栈堆栈的顶部。 请记住,目录堆栈的堆栈顶始终包含当前目录。 如果当前目录发生了更改,目录堆栈的堆栈顶部元素也一定发生了更改。 相反,如果堆栈顶部元素发生更改,当前目录也一定会发生更改。 以下是一个例子:

$ pwd/home/lfqy $ pushd//~$ dirs-v0/1~ $ pushd//music//~$ dirs-v0(/music1/2 ) $,很容易理解

pushd没有参数。

pushd在没有参数的情况下执行的效果是交换目录堆栈顶部的两个目录。 如上所述,堆栈顶部目录和当前目录中的一个发生改变,另一个也发生改变。 就这样,实际上实现了cd -的功能。 以下是一例。 (本例接后续执行现场。 )

$dirs-v0(/music1/2 ) $pushd )/music ) $dirs-v0/1)/music2) $pushd )$dirs-v0)/music1/)

到此为止,如果您想切换到目录堆栈中的一个目录,您可能会想,该怎么办? pushd n正是在发挥这个作用。 pushd n切换到目录堆栈中的第n个目录,其中n是dirs -v命令指示的索引。 在堆栈循环中将此目录推送到堆栈的顶部。 以下是一个例子(后续的执行现场),请注意堆栈循环的方式导致的堆栈内内容的变化规律。

$ dirs-v0~/music1/2~~ $ push D2~~/music/$ dirs-v0~~/music2/$ push D1~~/music/~ $ dirs-v0~ ~

OPD没有参数

OPD在没有参数的情况下执行的效果是堆叠目录堆栈中的堆栈顶部元素。 此时,堆栈顶部元素会发生变化,当前目录当然也会相应切换。 以下是一个示例:

$dirs-v0(/music1/2 ) $popd ) $dirs-v0/1) $popd ) $dirs-v0) $popdn

删除目录堆栈中的第n个元素。 其中n是dirs -v命令显示的目录索引。 以下是一个例子。

$dirs-v0(/music1/2 ) $popd2 )/music/$现在,如果对目录堆栈的操作没有更改堆栈顶部元素,则表明不会切换当前目录。

2、在pushd和popd的n和-n的基础上我们使用n作为参数,但实际使用pushd和popd的时候,也有使用-n参数的时候。 两者的区别如下。 n的意思是从堆栈顶部向堆栈底部方向计数,从0开始。 -n的含义相反,从堆栈底部向堆栈上方计数,从0开始。 虽然有点别扭,但实际上,从缺省dirs命令(无参数)的输出开始说明,您应该明白n从左到右,-n从右到左,都从0开始。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。