实例讲解Linux中cd命令切换目录的使用技巧

内容摘要
cd命令大家再熟悉不过了,bash shell经常会被用到的切换目录命令. 接下来我们直接通过万能的man来了解cd命令.
直接 man cd 是不行的,会显示 No manual entry for cd .cd命令
文章正文

cd命令大家再熟悉不过了,bash shell经常会被用到的切换目录命令. 接下来我们直接通过万能的man来了解cd命令.

直接 man cd 是不行的,会显示 No manual entry for cd .cd命令是bash基本命令中的一种,所以应该是 man bash.
关于man以及man page等相关内容会在以后的 LinuxShell命令:man 中详细介绍.
通过查找man page里可以看到cd的命令语法如下

复制代码
代码如下:

cd [-L|[-P [-e]] [-@]] [dir]

基本作用
cd命令的作用就是从当前目录跳转到dir处, 如果dir处留空的话就会跳转到环境变量HOME中设置的值.

附加内容

环境变量CDPATH
对于环境变量CDPATH,
如果没有设置CDPATH的话,每次cd查找的跳转目录都是以当前的目录为父目录.
若有设置CDPATH的话,每次cd查找的跳转目录就是以设置的目录为父目录来查找.
e.g. 假设当前有目录结构: ~/a/b/c 若没有设置CDPATH

复制代码
代码如下:

luckyshq@localhost:~$ cd a
luckyshq@localhost:~/a$ cd c
bash: cd: c: No such file or directory

若将CDPATH设为CDPATH=.:/home/luckyshq/a/b的话

复制代码
代码如下:

luckyshq@localhost:~$ cd a
luckyshq@localhost:~/a$ cd c
luckyshq@localhost:~/a/b/c$

将常用目录设置到CDPATH里就能有效提高cd的效率.
CDPATH中目录见用:隔开.
若不加上.路径(即当前路径的话),以前默认的本目录作为父目录cd就不可用了.
若dir处是以/开头(即是绝对路径)的话,CDPATH就失效了.

cd -P, -e参数
进入到快捷方式目录的实际目录中. e.g. 假设 ~ 目录下有a,b两个目录, 同时a下有一个连接到b的子目录b(这个b是快捷方式)

复制代码
代码如下:

// 不加 -P 参数
luckyshq@localhost:~$ cd a
luckyshq@localhost:~/a$ cd b
luckyshq@localhost:~/a/b$
//加上 -P 参数
luckyshq@localhost:~$ cd a
luckyshq@localhost:~/a$ cd -P b
luckyshq@localhost:~/b$

若将一个文件夹自己的快捷方式放到文件夹里,这样写脚本的时候就有可能会出现无限循环,当前路径名就会变得无限长,但是加上了-P命令后就可以避免无线循环的情况.
如果在-P后面加上-e的话,若跳转前路径不存在对应物理路径的话(比如说夹杂着多个快捷方式为名称的路径)就会返回一个失败的状态.(-e具体的用法可能要到Shell编程时才能体会到.)

cd -L参数
-L参数和-P相反(两者不能同时出现,即 -L|-P),是跳转到链接目录中,类似于不带参数的cd.(加不加-L具体有什么区别还没弄清=,=)

..
dir中如果出现了..,
若..后有路径,则吞掉路径中第一个目录元素(例如 cd ../a/b/c 等价 cd b/c).
若..后没路径,则退回到当前路径的父目录中.


代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!