学而实习之 不亦乐乎

Linux 使用 pushd 命令切换目录

2023-10-12 07:57:20

Linux 有三个关于目录切换的常用命令,分别是cd、pushd、popd。cd 命令大家再熟悉不过了,用于切换工作目录,但是如果你在两个目录之间需要频繁切换时,比如/etc/httpd/log/error和/home/testUser/Desktop/shell_test,如果一直使用 cd 命令将会很麻烦。此时 pushd 命令是个好选择。pushd 命令的功能是创建一个目录栈,你可以把你目前常见的几个目录压入栈中,并可以迅速地进行切换,非常方便。如:

... ...

$ lsof# pushd ~/Desktop/shell_test/
~/Desktop/shell_test    /etc
$ lsof#

... ...

可以看到我本来的工作目录是/etc,执行 pushd ~/Desktop/shell_test/ 后将 ~/Desktop/shell_test/ 路径压入栈中,得到返回值。而且当前目录也跳转了。

此时,再输入pushd会将栈顶目录和下一目录对调。即:

... ...

$ lsof# pushd
/etc    ~/Desktop/shell_test
$ lsof#

... ...

可以看到此时栈顶目录又变为 /etc。

至于 popd,作用则是与 pushd 相反,将栈顶的目录弹出,此时除非再一次使用 pushd 压栈,否则 pushd 无法再找到已弹出的目录。

... ...

$ lsof# popd
~/Desktop/shell_test
$ lsof#
-----

#popd [+N|-N]还可以指定目录栈的哪个目录优先出栈

... ...

建议:在使用 pushd 时,最好是在三两个目录频繁切换的场景下,否则目录栈变得过多就失去了 pushd 的优势了。

当然,在两个目录进行切换时,”cd -” 是一个不错的命令

### 如何在多个目录之间切换?

pushd +n 即可

说明:- n是一个数字,有此参数时,是切换到堆栈中的第n个目录,并把此目录以堆栈循环的方式推到堆栈的顶部 需要注意: 堆栈从第0个开始数起

... ...

~/Hi3559A/work/REMO_HI3559AV100_SDK/Hi3559AV100_Remo_SDK ~/Hi3559A/work/REMO_HI3559AV100_SDK ~/Hi3559A/work/REMO_HI3559AV100_SDK/Hi3559AV100_SDK_V2.0.1.0/osdrv

... ...

第一个为2的数字,第二个为1的数字,第三个为0的数字