首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

尝试使用PUSHD/POPD将脚本从BASH转换为ZSH

PUSHD和POPD是BASH shell中的命令,用于管理目录堆栈。这些命令的作用是将当前目录压入一个堆栈,并切换到指定目录或从堆栈中弹出一个目录。

在ZSH shell中,可以使用cd命令的参数来实现类似的功能,而不需要使用PUSHD和POPD命令。

要在ZSH中将脚本从BASH转换,需要将使用PUSHD和POPD命令的部分替换为cd命令。下面是一个示例:

代码语言:txt
复制
#!/bin/zsh

# 假设脚本开始时在目录A中

# 将当前目录压入堆栈,并切换到目录B
cd B

# 执行一些操作在目录B中

# 切换回目录A
cd -

# 继续在目录A中执行操作

在这个示例中,我们使用cd命令来替代PUSHD和POPD命令。首先,我们使用cd B将目录B压入堆栈并切换到目录B。然后,在完成目录B中的一些操作后,我们使用cd -返回到之前的目录A。最后,我们可以在目录A中继续执行其他操作。

需要注意的是,如果在BASH脚本中使用了其他与ZSH不兼容的功能或命令,可能需要进行其他的修改或调整以适应ZSH环境。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 有关bash,我希望我能知晓的十件事

    简介 我之前的一篇文章比我预想的更受欢迎,因此我想再写一篇文章来介绍一些不太知名的bash功能 正如之前所言,由于我觉得bash是一种要经常使用(且需理解)的技术,所以我在研究bash时写了一本书。...2)pushd/popd 这个在脚本中非常好用,特别是在循环中 如下所示,假设你正在写一个进入退出文件夹的for循环: for d1 in $(ls -d */) do # Store original...original_wd="$(pwd)" cd "$d1" for d2 in $(ls -d */) do pushd "$d2" # Do something popd...popd done popd done 它可以追踪记录你切换的目录并进行入栈或出栈 注意,当使用pushd出现错误时,可能会丢失栈的记录并且popd多次。...你也可以直接用${VAR:=defaultval}(等号,不是破折号),但是注意这不适用于脚本或函数中的位置变量。尝试修改上面的脚本来看它是如何失败的。

    64550

    pushd popd命令「建议收藏」

    现在进一步讨论,在本文中,我们讨论如何使用 pushdpopd 命令在 Linux 命令行上获得更快的导航体验。...这样,popd 命令允许你以相反的顺序浏览这些目录。 一些高级用法 现在我们已经讨论了 pushdpopd 命令的基础知识,让我们继续讨论与这些命令相关的一些其它细节。...例如,如果要使用 popd 顶部(目前是 ~/Downloads)删除第三个条目,你可以运行以下命令: popd +2 记住堆栈索引的初始值是 0,因此我们使用 2 来访问第三个条目。...虽然它们第一眼看起来可能有点复杂,但是这些命令在编写 shell 脚本时会派上用场 – 你不需要记住你哪里来;只要执行一下 popd,你就能回到你来的目录。...经验丰富的脚本编写者通常以以下方式使用这些命令: popd >/dev/null 2>&1 上述命令确保 popd 保持静默(不产生任何输出)。同样,你也可以静默 pushd

    56620

    培养这10个习惯,你就离UNIX高手更进一步了

    如果键入 f,然后按 Esc 键,填充 file,之后你需要输入 1、2 或 3 来完成相应的文件名。 Bash Bash Shell 也提供了文件名补全功能,但它使用 的是Tab 键。...使用 pushdpopd 管理目录导航 UNIX 支持各种目录导航工具,我最喜欢的两款提高工作效率的工具是 pushdpopd。您肯定知道 cd 命令用于更改当前目录。...pushdpopd 命令创建一个虚拟目录堆栈,pushd 命令用来更改您的当前目录并将其存储在堆栈中,而 popd 命令用来堆栈的顶部移除目录并使您返回该位置。...List4:使用 pushdpopd 在目录树中导航 $ pushd . ~ ~ $ pushd /etc /etc ~ ~ $ pushd /var /var /etc ~ ~ $ pushd...$ popd /etc ~ ~ $ popd ~ ~ $ popd pushdpopd 命令还支持使用参数处理目录堆栈。

    78920

    培养这10个习惯,你就离UNIX高手更进一步了

    如果键入 f,然后按 Esc 键,填充 file,之后你需要输入 1、2 或 3 来完成相应的文件名。 Bash Bash Shell 也提供了文件名补全功能,但它使用 的是Tab 键。...使用 pushdpopd 管理目录导航 UNIX 支持各种目录导航工具,我最喜欢的两款提高工作效率的工具是 pushdpopd。您肯定知道 cd 命令用于更改当前目录。...pushdpopd 命令创建一个虚拟目录堆栈,pushd 命令用来更改您的当前目录并将其存储在堆栈中,而 popd 命令用来堆栈的顶部移除目录并使您返回该位置。...List4:使用 pushdpopd 在目录树中导航 $ pushd . ~ ~ $ pushd /etc /etc ~ ~ $ pushd /var /var /etc ~ ~ $ pushd...$ popd /etc ~ ~ $ popd ~ ~ $ popd pushdpopd 命令还支持使用参数处理目录堆栈。

    94460

    pushdpopd、dirs、cd :让切换目录更方便

    快速返回上一级目录,你可以直接键入pushd,如果不跟路径名,你返回到堆栈中前一个目录的上一层目录。...pushdpopd是我们的好帮手 说明: pushdpopd、dirs 这几个我们讲到的命令是bash内建的命令,所以只要登录到了bash,这几个命令就可以使用了。...如果只是在两个目录之间切换,那么还不必使用pushd,这时只需使用 cd -就可以了。 cd - 的作用是可以回到前一个目录。...不加参数的运行情况: popd把堆栈顶端的目录堆栈中删除,并切换于位于新的顶端的目录。...说明之二: popd 加有参数 +n时,n 是堆栈中的第n个目录,表示把堆栈中第n个目录堆栈中删除。 四,多学一点知识 1,pushdpopd都可以只影响堆栈而不切换目录 用 -n 参数即可。

    3.4K20

    LinuxMac的目录切换

    多个目录之间的切换 多个目录的切换要用到pushdpopd,dirs命令,下面是三个命令的解释: dirs:显示目录栈 pushd:目录压入目录栈,并切换目录(虚拟堆栈) popd:目录弹出目录栈...是栈顶的目录弹出,即编号为0的目录,并将目录切换到目录弹出后的栈顶目录 $ popd ~ ~/Hexo $ pwd /Users/*** $ popd ~/Hexo # 如果栈中只有一个目录,即当前目录...,是不能使用popd的 $ popd -bash: popd: directory stack empty # 如果栈中只有一个目录,是不能使用pushd的 $ pushd -bash: pushd:...1 ~/Hexo 2 ~/MyEclipse 3 ~ # popd +n 弹出目录栈中指定位置的目录,并将目录切换到栈顶目录 $ popd +2 ~/Practice ~/Hexo ~...$ dirs -v 0 ~/Practice 1 ~/Hexo 2 ~ # push +n 目录切换到指定位置的目录,并将其压入目录栈栈顶 $ pushd +2 ~ ~/Practice

    1.2K20

    popdpushd使用

    让切换目录更方便: pushd,popd,dirs,cd – 一,为何要使用这几个命令? 可能大家会有疑问,为何要使用这几个命令, 难道用cd不就可以切换目录了吗?...是我们的好帮手 说明: pushd,popd,dirs这几个我们讲到的命令是bash内建的命令, 所以只要登录到了bash,这几个命令就可以使用了 二,如何在两个目录之间切换...如果只是在两个目录之间切换,那么还不必使用pushd, 这时只需使用 cd -就可以了 cd -的作用是可以回到前一个目录, 看例子: [root@localhost ~]# cd...因为 cd -和 cd $OLDPWD都是只支持最近操作的两个目录,所以要在多个目录之间操作时, 我们需要使用 pushd 1, 先来介绍我们会用到的3条命令 pushd:切换到作为参数的目录...不加参数的运行情况: popd把堆栈顶端的目录堆栈中删除,并切换于位于新的顶端的目录 说明之二: popd 加有参数 +n时, n是堆栈中的第n个目录,表示把堆栈中第n个目录堆栈中删除

    1.2K20

    Linux 命令(153)—— dirs 命令(builtin)

    配套的两个内置命令,一个是 pushd,更改当前目录时目录添加到栈中,另一个是 popd 栈顶删除目录,然后当前目录更改为栈顶目录。dirs 用于显示目录栈的内容。当前目录始终是目录栈的顶部。...可以使用 pushd 命令,向录栈添加目录,并同时改变当前工作目录。...# pushd /root/cpp/txt0 ~/cpp/txt0 ~/cpp # pushd /root/cpp/txt1 ~/cpp/txt1 ~/cpp/txt0 ~/cpp (3)使用长格式显示目录栈...可以使用 popd 命令,删除目录栈栈顶目录,然后改变当前工作目录为栈顶目录。如我们 ~/cpp/txt1 出栈,那么当前工作目录变为 ~/cpp/txt0。...# dirs -c ---- 参考文献 dirs(1) builtin manual - linux.org The Directory Stack (Bash Reference Manual) -

    58410

    文件_bash笔记3

    UNIX系统把一切都看作文件,甚至命令终端也是和一个设备文件关联在一起的,可以通过向该文件写入来实现向终端写入信息,例如: # 输出到当前终端 echo hoho > /dev/tty# bash环境,.../tmp # 查看历史路径栈(-v编号) dirs -v # 返回上一次工作路径 pushd # 返回上上一次... pushd +1 # 返回上上上一次... pushd +2 pushd用来切换工作路径...,交换栈顶记录与指定记录,但历史栈长度不变,需要删除记录的话,用popd: # 返回上一次工作路径,并删除当前路径 popd # 删除上上一次工作路径 popd +1 # 清空历史栈(只保留当前记录)...dirs -c +N、-N表示方向,+N栈顶开始数0123......,-N栈底开始数 P.S.注意og my zsh某个版本+-方向是反的,bash正常 wc 统计行数、单词数、字符数,常用于简单的代码统计: # 输出行数、单词数、字符数 wc test.sh # 取行数

    54820

    gloggflags:linux下用cmake通过MinGW-w64交叉编译生成windows版本静态库

    /bin/bash # 静态编译 gflags 源码脚本 # author guyadong@gdface.net # $gflags_source gflags源码位置 pushd $gflags_source...on \ -DINSTALL_SHARED_LIBS=off \ -DREGISTER_INSTALL_PREFIX=off make clean make -j 8 install popd.../bin/bash # cmake静态编译 glog 源码脚本 # author guyadong@gdface.net # 定义上面脚本编译的gflags的安装位置中CMake文件夹位置 gflags_DIR...=$GFLAGS_INSTALL_PATH/CMake pushd $glog_root # CMAKE_EXE_LINKER_FLAGS指定静态连接所有库 # gflags_DIR=$gflags_DIR...这是个一般编译器都提供的系统头文件,在gcc下这个文件名是全小写(basetsd.h),因为linux下文件名都区分大小写,所以会报错,找到报错的位置 ($glog_root/src/logging.cc),BaseTsd.h

    3.8K70

    Shell系统内置变量

    脚本运行以来经过的时间(单位为秒)。...IFS 内部字段分隔符,影响 read 命令如何行进行分成词 OSIXLY_CORRECT 设定让 bash 进入 posix mode TMOUT 用于设置 Shell 的过期时间,TMOUT 不为...TMPDIR 若设置了,则 bash 在该值所指定的目录下创建临时文件 其他 -- BASH_REMATCH 当使用 =~ 进行正则匹配时,该数组变量存储的是整体或个分组匹配的字符串位置,其中 ${BASH_REMATCH0...} 整个正则表达式匹配的位置 n 第 n 个分组匹配的位置 RANDOM 产生一个 0-32767 之间的随机整数 REPLY read 命令默认标准输入存入该变量, select 命令也默认选择的序号存入该变量...DIRSTACK 存放当前目录栈的数组,pushdpopd 两个内建命令需要操作该数组,同时也允许手工对该数组内的变量进行赋值从而影响 pushdpopd 的行为。

    1.6K00

    Linux中的pushdpopd

    其实,很早就知道pushdpopd在Linux中可以用来方便地在多个目录之间切换。那时比较浮躁,感觉切换目录没必要这么复杂。在实际中,发现通过使用pushdpopd能够极大地提高效率。...pushd的用法主要有如下几种: pushd 目录 pushd后面如果直接跟目录使用,会切换到该目录并且将该目录置于目录栈的栈顶。(时时刻刻都要记住,目录栈的栈顶永远存放的是当前目录。...popd的用法主要有如下几种: popd不带参数 popd不带任何参数执行的效果,就是目录栈中的栈顶元素出栈。...v 0 / 1 ~ $ popd ~ $ dirs -v 0 ~ $ popd +n 目录栈中的第n个元素删除(这里的n就是命令dirs -v显示的目录index)。...2、pushdpopd的+n和-n 上面我们用的都是+n作为参数,实际在使用pushdpopd的时候,有时候也会用到-n参数。

    1.2K20

    Linux下如何高效切换目录?

    良许给大家介绍三个命令:pushdpopd 、 dirs 。...同理,如果你用后文介绍的 pushdpopd 来操作目录栈的话,当前目录切换到目录栈的第一个元素对应地址。 如果我们要清空目录栈,直接使用 -c 选项即可。...pushd 的用法主要有如下几种: 1. pushd + 目录 pushd 后面如果直接跟目录使用,会切换到该目录并且将该目录置于目录栈的栈顶。...首先,我们用 pushd + 目录 的方式这几个路径添加到目录栈中; 然后,再用 pushd +/-n 在不同的目录间快速切换。...popd 的用法主要有如下几种: 1. popd (不带任何参数) popd不带任何参数执行的效果,就是目录栈中的栈顶元素出栈。这时,栈顶元素发生变化,自然当前目录也会发生相应的切换。

    5.2K10
    领券