linux中的pushd、popd与dirs

最近在项目中,看到一些模块的启动脚本中,有一些 pushd、popd等操作。之前并没有接触过这类命令,但是目测它是与目录相关的,因为都是操作完了目录之后,才能运行启动命令。

dirs

展示目录栈。

什么是目录栈?

使用cd命令进入一个目录后,该目录会存放进以个栈中,当前目录永远位于栈顶
dirs 可以用来查看栈中的目录信息。如:

linux中的pushd、popd与dirs_第1张图片

注意:最左边表示栈顶,最右边表示栈底

一些具体操作:

-c:删除目录栈中的所有记录
-l:以完整格式显示
-p:一个目录一行的方式显示
-v:每行一个目录来显示目录栈的内容,每个目录前加上的编号
+N:显示从左到右的第n个目录,数字从0开始
-N:显示从右到左的第n个日录,数字从0开始

linux中的pushd、popd与dirs_第2张图片

有了目录栈,自然会有与栈相关的操作,如入栈与出栈,即可通俗理解成pushd、popd。

pushd

主要功能就是修改栈顶目录,即切换目录。主要有如下3种体现:

  1. 将目录入栈,即加入到栈顶。
  2. 将栈中某个目录切换栈顶。

不带参数,与cd -同语义:

linux中的pushd、popd与dirs_第3张图片

带目录,与cd some_dir同语义:

linux中的pushd、popd与dirs_第4张图片

+/-n,切换栈中某个具体位置的目录到栈顶:

  • pushd +N: 将栈内元素循环左移,直到将(从边数)第N个元素移动到栈顶,由0开始计。
  • pushd -N: 将栈内元素循环左移,直到将(从边数)第N个元素移动到栈顶,由0开始计。

linux中的pushd、popd与dirs_第5张图片

注:图中~/Movies的标号应该为3,特此更正

popd

主要功能是将目录出栈。包括栈顶(修改当前目录为上次目录,即单向的cd -)、及其他位置目录(可能不修改栈顶目录)。

  • 不带任何参数:栈顶元素出栈。
  • popd +N:删除栈中(从右边数)第N个元素,由0开始计。
  • popd -N:删除栈中(从左边数)第N个元素,由0开始计。

linux中的pushd、popd与dirs_第6张图片

小结

可以理解为cd -的加强版本,实际作用可能并不是特别大。

你可能感兴趣的:(工具使用,Linux)