Linux cd命令行工具使用的一些小技巧
linux
前言
在linux系统中,我们切换目录使用cd命令来进行操作,并且我们需要经常在两个目录间来回切换。如果这两个目录在完全不同的两个路径下,比如说,分别在 /home/ 和 /usr/ 下。你会怎么做呢?
其中,最简单直接的方式就是输入这些目录的全路径。虽然这种方式本身没什么问题,但是却很浪费时间。另外一种方式就是打开两个终端窗口分别进行操作。但是这两种方式使用起来既不方便,也显得没啥技术含量。
你应该感到庆幸的是,还有另外一种更为简捷的方法来解决这个问题。你需要做的就是先手动切换到这两个目录(通过 cd 命令分别加上各自的路径),之后你就可以使用 cd - 命令在两个目录之间来回快速切换了。
实例
例如,我现在在下面两个目录下面:
[ggyy@gy-vm02 nginx]$ pwd
/usr/local/nginx
然后我又切换一下目录
[ggyy@gy-vm02 nginx]$ cd/data/configdb/
[ggyy@gy-vm02 configdb]$ pwd
/data/configdb
现在,我可以很方便的使用下面的命令来向前、向后快速地切换到两个目录:
[ggyy@gy-vm02 configdb]$ cd-
/usr/local/nginx
[ggyy@gy-vm02 nginx]$ cd-
/data/configdb
[ggyy@gy-vm02 configdb]$ cd-
/usr/local/nginx
[ggyy@gy-vm02 nginx]$ cd-
/data/configdb
如果你在操作的过程中使用 cd 加路径的方式切换到第三个目录下,那么 cd - 命令将应用于当前目录及第三个目录之间进行切换。
原理
为什么使用‘cd -’命令能自由切换两个目录?
我们知道,cd 命令需要加上一个路径作为它的参数。现在,当 - 符号作为参数传输给 cd 命令时,它将被 OLDPWD 环境变量的值所替代。
[ggyy@gy-vm02 nginx]$ echo $OLDPWD
/data/configdb
[ggyy@gy-vm02 nginx]$ cd-
/data/configdb
[ggyy@gy-vm02 configdb]$ echo $OLDPWD
/usr/local/nginx
[ggyy@gy-vm02 configdb]$ cd-
/usr/local/nginx
现在应该明白了吧, OLDPWD 环境变量存储的是前一个操作目录的路径。
毫无疑问, cd 命令设置了 OLDPWD 环境变量值。因此每一次你切换操作目录时,上一个目录的路径就会被保存到这个变量里。这还让我们看到很重要的一点就是:任何时候启动一个新的 shell 实例(包括手动执行或是使用 shell 脚本),都不存在 ‘上一个工作目录’。
现在我重新打开一个shell
[ggyy@gy-vm02~]$ cd-
-bash:cd:OLDPWDnotset
这也很符合逻辑,因为 cd 命令设置了 OLDPWD 环境变量值。因此,除非你至少执行了一次 cd 命令,否则 OLDPWD 环境变量不会包含任何值
cd - 和 cd $OLDWPD 命令的执行结果并非在所有环境下都相同。比如说,你重新打开一个新的 shell 窗口时
[ggyy@gy-vm02~]$ cd-
-bash:cd:OLDPWDnotset
[ggyy@gy-vm02~]$ cd $OLDPWD
[ggyy@gy-vm02~]$
从上面的截图可以清楚的看出,当执行 cd - 命令提示未设置 OLDPWD 值时, cd $OLDPWD 命令没有报任何错;实际上,它把当前的工作目录改变到用户的 home 目录里。
那是因为 OLDPWD 变量目前还没有被设置, $OLDPWD 仅仅是一个空字符串。因此, cd $OLDPWD 命令跟 cd 命令的执行结果是一致的,默认情况下,会把用户当前的工作目录切换到用户的 home 目录里。
如果觉得《linux 使用cd 命令行 Linux cd命令行工具使用的一些小技巧》对你有帮助,请点赞、收藏,并留下你的观点哦!