返回介绍

Hack-5 操纵目录栈

发布于 2025-03-08 17:38:08 字数 1766 浏览 0 评论 0 收藏 0

操纵目录栈

刚才我还特地请教了下我们宿舍打 ACM 的杰神,讲了一下堆、栈、队列之间的差别和联系,然后,这一小节的题目还算不错,栈,先进后出。

  • dirs 显示当前目录栈的内容
  • pushd 入目录栈
  • popd 出目录栈

那么这三个命令都有什么用处呢?

不罗嗦,看操作:

➤ for i in {1..4};do mkdir dir_$i;done
mkdir: created directory ‘dir_1’
mkdir: created directory ‘dir_2’
mkdir: created directory ‘dir_3’
mkdir: created directory ‘dir_4’
➤ cd dir_1
➤ pushd . #pushd 完成之后总会进入这一个目录
/tmp/dir_1 /tmp/dir_1
➤ cd /tmp/dir_2
➤ pushd . #而且还会显示当前的目录栈内容
/tmp/dir_2 /tmp/dir_2 /tmp/dir_1
➤ cd /tmp/dir_3
➤ pushd .
/tmp/dir_3 /tmp/dir_3 /tmp/dir_2 /tmp/dir_1
➤ cd /tmp/dir_4
➤ pushd .
/tmp/dir_4 /tmp/dir_4 /tmp/dir_3 /tmp/dir_2 /tmp/dir_1
➤ dirs #第一个是 dir_4,因为栈的顶总是当前目录
/tmp/dir_4 /tmp/dir_4 /tmp/dir_3 /tmp/dir_2 /tmp/dir_1

那么到现在为止我们的目录栈看起来是这样的:

1 - /tmp/dir_1
2 - /tmp/dir_2
3 - /tmp/dir_3
4 - /tmp/dir_4

接下来就轮到 popd 啦:

➤ pwd
/tmp/dir_4
➤ dirs #dirs 显示目录栈内容
/tmp/dir_4 /tmp/dir_4 /tmp/dir_3 /tmp/dir_2 /tmp/dir_1
➤ popd #每次目录出栈之后都会显示目录栈的内容
/tmp/dir_4 /tmp/dir_3 /tmp/dir_2 /tmp/dir_1
➤ pwd #并且进入那个目录
/tmp/dir_4
➤ popd
/tmp/dir_3 /tmp/dir_2 /tmp/dir_1
➤ pwd
/tmp/dir_3
➤ popd
/tmp/dir_2 /tmp/dir_1
➤ pwd
/tmp/dir_2
➤ popd
/tmp/dir_1
➤ pwd
/tmp/dir_1
➤ popd #栈空了,没有了
bash: popd: directory stack empty
➤

看了这么多,这些组合到底有什么用?其实吧,如果你手速够快记忆力够好的话,这些对你没啥用,不过呢,像我这样比较懒的人,这东西就有用了,比如,我要在几个目录之间切换,有不想每次都输入那些命令,怎么办?就用这种方法,因为 pushd 不仅进入了这个目录,而且还给了我一个后退的途径,比 cd - 更高级一点。甚至我可以用 function cd() { pushd $@ &> /dev/null; } 来将 pushd 变成 cd ,反正我也不亏,是不是 :P

本书简介:

  • Linux 进阶技巧
  • 巧妙的命令组合
  • Bash 某些技巧
  • 一共一百零一个(包括充数的)
  • 最后有个奖励章(额外技巧)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文