Bash脚本教程之目录堆栈

举报
孙叫兽 发表于 2021/03/26 23:52:52 2021/03/26
【摘要】 目录 cd - pushd,popd dirs 命令 为了方便用户在不同目录之间切换,Bash 提供了目录堆栈功能。 cd - Bash 可以记忆用户进入过的目录。默认情况下,只记忆前一次所在的目录,cd -命令可以返回前一次的目录。 # 当前目录是 /path/to/foo$ cd bar # 重新回到 /path/to/foo$ cd - 上面例子中,用...

目录

cd -

pushd,popd

dirs 命令


为了方便用户在不同目录之间切换,Bash 提供了目录堆栈功能。

cd -

Bash 可以记忆用户进入过的目录。默认情况下,只记忆前一次所在的目录,cd -命令可以返回前一次的目录。


  
  1. # 当前目录是 /path/to/foo
  2. $ cd bar
  3. # 重新回到 /path/to/foo
  4. $ cd -

上面例子中,用户原来所在的目录是/path/to/foo,进入子目录bar以后,使用cd -可以回到原来的目录。

 

pushd,popd

如果希望记忆多重目录,可以使用pushd命令和popd命令。它们用来操作目录堆栈。

pushd命令的用法类似cd命令,可以进入指定的目录。

$ pushd dirname
 

上面命令会进入目录dirname,并将该目录放入堆栈。

第一次使用pushd命令时,会将当前目录先放入堆栈,然后将所要进入的目录也放入堆栈,位置在前一个记录的上方。以后每次使用pushd命令,都会将所要进入的目录,放在堆栈的顶部。

popd命令不带有参数时,会移除堆栈的顶部记录,并进入新的堆栈顶部目录(即原来的第二条目录)。

下面是一个例子。


  
  1. # 当前处在主目录,堆栈为空
  2. $ pwd
  3. /home/me
  4. # 进入 /home/me/foo
  5. # 当前堆栈为 /home/me/foo /home/me
  6. $ pushd ~/foo
  7. # 进入 /etc
  8. # 当前堆栈为 /etc /home/me/foo /home/me
  9. $ pushd /etc
  10. # 进入 /home/me/foo
  11. # 当前堆栈为 /home/me/foo /home/me
  12. $ popd
  13. # 进入 /home/me
  14. # 当前堆栈为 /home/me
  15. $ popd
  16. # 目录不变,当前堆栈为空
  17. $ popd

这两个命令的参数如下。

(1)-n 参数

-n的参数表示仅操作堆栈,不改变目录。

$ popd -n
 

上面的命令仅删除堆栈顶部的记录,不改变目录,执行完成后还停留在当前目录。

(2)整数参数

这两个命令还可以接受一个整数作为参数,该整数表示堆栈中指定位置的记录(从0开始),作为操作对象。这时不会切换目录。


  
  1. # 从栈顶算起的3号目录(从0开始),移动到栈顶
  2. $ pushd +3
  3. # 从栈底算起的3号目录(从0开始),移动到栈顶
  4. $ pushd -3
  5. # 删除从栈顶算起的3号目录(从0开始)
  6. $ popd +3
  7. # 删除从栈底算起的3号目录(从0开始)
  8. $ popd -3

上面例子的整数编号都是从0开始计算,popd +0是删除第一个目录,popd +1是删除第二个,popd -0是删除最后一个目录,,popd -1是删除倒数第二个。

(3)目录参数

pushd可以接受一个目录作为参数,表示将该目录放到堆栈顶部,并进入该目录。

$ pushd dir
 

popd没有这个参数。

 

dirs 命令

dirs命令可以显示目录堆栈的内容,一般用来查看pushdpopd操作后的结果。

$ dirs
 

它有以下参数。

  • -c:清空目录栈。
  • -l:用户主目录不显示波浪号前缀,而打印完整的目录。
  • -p:每行一个条目打印目录栈,默认是打印在一行。
  • -v:每行一个条目,每个条目之前显示位置编号(从0开始)。
  • +NN为整数,表示显示堆顶算起的第 N 个目录,从零开始。
  • -NN为整数,表示显示堆底算起的第 N 个目录,从零开始。

 

下一节Bash脚本教程之脚本入门

 

 

 

文章来源: sunmenglei.blog.csdn.net,作者:孙叫兽,版权归原作者所有,如需转载,请联系作者。

原文链接:sunmenglei.blog.csdn.net/article/details/107173445

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。