Update cd.md

更新文件内容。
如果有人知道-@选项的用法欢迎补充。
This commit is contained in:
ZhuangZhu-74 2019-08-08 10:34:29 +08:00 committed by GitHub
parent a93448da0a
commit 44dd34078d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 59 additions and 14 deletions

View File

@ -1,36 +1,81 @@
cd
===
切换用户当前工作目录
切换用户当前工作目录
## 补充说明
**cd命令** 用来切换工作目录至dirname。 其中dirName表示法可为绝对路径或相对路径。若目录名称省略则变换至使用者的home directory(也就是刚login时所在的目录)。另外,`~`也表示为home directory的意思`.`则是表示目前所在的目录,`..`则表示目前目录位置的上一层目录。
### 语法
## 概要
```shell
cd (选项) (参数)
cd [-L|[-P [-e]]] [dir]
```
### 选项
## 主要用途
- 切换工作目录至`dir`。其中`dir`的表示法可以是绝对路径或相对路径。
- 若参数`dir`省略则默认为使用者的shell变量`HOME`。
- 如果`dir`指定为`~`时表示为使用者的shell变量`HOME``.`表示当前目录,`..`表示当前目录的上一级目录。
- 环境变量`CDPATH`是由冒号分割的一到多个目录,你可以将常去的目录的上一级加入到`CDPATH`以便方便访问它们;如果`dir`以`/`开头那么`CDPATH`不会被使用。
- 当`shopt`选项`cdable_vars`打开时,如果`dir`在`CDPATH`及当前目录下均不存在,那么会把它当作变量,读取它的值作为要进入的目录。
## 参数
dir可选指定要切换到的目录。
## 选项
```shell
-p 如果要切换到的目标目录是一个符号连接,直接切换到符号连接指向的目标目录
-L 如果要切换的目标目录是一个符号的连接,直接切换到字符连接名代表的目录,而非符号连接所指向的目标目录。
- 当仅实用"-"一个选项时,当前工作目录将被切换到环境变量"OLDPWD"所表示的目录。
-L (默认值)如果要切换到的目标目录是一个符号连接,那么切换到符号连接的目录。
-P 如果要切换到的目标目录是一个符号连接,那么切换到它指向的物理位置目录。
- 当前工作目录将被切换到环境变量OLDPWD所表示的目录也就是前一个工作目录。
```
### 实例
## 返回值
返回状态为成功除非无法进入指定的目录。
## 例子
```shell
cd # 进入用户主目录;
cd / # 进入根目录
cd ~ # 进入用户主目录;
cd - # 返回进入此目录之前所在的目录;
cd - # 显示并返回进入此目录之前所在的目录(也就是根目录)
cd .. # 返回上级目录(若当前目录为“/“,则执行完后还在“/"".."为上级目录的意思);
cd ../.. # 返回上两级目录;
cd !$ # 把上个命令的参数作为cd参数使用。
```
关于`CDPATH`
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->
```shell
# 设置桌面文件夹作为CDPATH的值。
CDPATH='~/Desktop'
# 假设我们接下来要演示涉及到的路径~和~/Desktop下没有test3文件夹现在新建它们。
mkdir ~/test3
mkdir ~/Desktop/test3
# 进入~目录。
cd ~
# 进入test3目录。
cd test3
# 执行后显示~/Desktop/test3并进入该目录而不是~目录的test3目录。
# 如果CDPATH存在值那么优先在CDPATH中查找并进入第一个匹配成功的如果全部失败那么最后尝试当前目录。
```
关于`cdable_vars`
```shell
# 打开选项。
shopt -s cdable_vars
# 假设当前路径以及CDPATH没有名为new_var的目录。
new_var='~/Desktop'
# 尝试进入。
cd new_var
# 关闭选项。
shopt -u cdable_vars
```
### 注意
1. 该命令是bash内建命令相关的帮助信息请查看`help`命令。
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->