目录
5. shell命令--cd
功能说明
cd 是 Linux 和其他类 Unix 系统中用于改变当前工作目录的命令,它的全名是 "change directory"。切换到指定的路径。路径可以是绝对路径,也可以是相对路径。若目录名称省略,则变换至使用者的 home 目录 (也就是刚 login 时所在的目录)。
另外,~ 也表示为 home 目录 的意思, . 则是表示目前所在的目录, .. 则表示目前目录位置的上一层目录。
语法格式
cd [dirName]
选项说明
. | 切换到当前目录 | .. | 切换到上一级目录 |
~ | 切换到用户家目录 | - | 切换到上一次所在目录 |
-L | 切换到符号链接所在的目录 | -P | 切换到符号链接对应的实际目录 |
实践操作
1. 指定目录:使用 cd 命令后接目录路径来切换到指定目录
pwd #打印一下目前的路径
cd /etc/ #切换到指定目录
pwd #再次打印一下
2. 无参数:直接键入 cd 并回车,会将用户带回其家目录
cd #无参数,直接输入 cd
pwd #打印一下
3. .:表示当前目录(通常用于执行当前目录下的脚本或程序),..:表示上一级目录
cd /etc/sysconfig/network-scripts/ #切换到一个比较长的路径下
pwd #显示一下路径
cd . #一个点 . 表示当前目录
pwd #发现没有变化
cd .. #二个点表示上一级所在目录
pwd #发现已经切换到上一级目录下了
cd ../.. #这里表示切换到上一级的上一级目录
pwd #查看一下当前路径
4. ~ 或 $HOME 或 直接 cd :表示当前用户的家目录
cd ~ #这种方法可以快速切换到当前登录用户的家目录
pwd #查看一下当前路径
useradd user #添加一个 ueer 用户
su - user #切换到该用户下
whoami #查看当前登录用户
pwd #查看一下当前路径
cd /etc/sysconfig/network-scripts/ #切换到一个比较长的路径下
pwd #查看一下当前路径
cd #直接输入 cd 切换也可以快速回到当前登录用户的家目录
pwd #查看一下当前路径
cd - #切换到之前的工作目录,这个可以来回切换的
pwd #查看一下当前路径
cd $HOME #这种方法也可以回到当前登录用户的家目录
pwd #查看一下当前路径
logout 或 ctrl + D #退出当前用户
whoami #查看当前登录用户
!su #使用最近以 su 开头的命令
whoami #查看当前登录用户
Ctrl + d #使用快捷键退出当前用户
whoami #查看当前登录用户
5. -P:如果设置了物理目录模式,则使用物理路径而不是逻辑路径。这在存在符号链接时尤其有用。
cd /bin #切换到目录 /bin
pwd #查看一下当前路径
cd -P /bin #加上大写字母 -P
pwd #看一下和之前看一下有啥区别
6. 使用 !$ 来引用上一条命令的最后一个参数(也可以使用快捷键:Esc + . )。
ls /var/log #先来查看一下目录 /var/log
cd !$ #然后输入这个命令 #上一步执行完后也可以按 cd + [快捷键按一下Esc,再按 . ]
pwd #看一下效果
命令示例:1. 指定目录:使用 cd 命令后接目录路径来切换到指定目录
pwd
cd /etc/
pwd
输出结果:
[root@MineGi ~]# pwd
/root
[root@MineGi ~]# cd /etc/
[root@MineGi /etc]# pwd
/etc
[root@MineGi /etc]#
命令示例:2. 无参数:直接键入 cd 并回车,会将用户带回其家目录
cd
pwd
输出结果:
[root@MineGi /etc]# cd
[root@MineGi ~]# pwd
/root
[root@MineGi ~]#
命令示例:3. .:表示当前目录(通常用于执行当前目录下的脚本或程序),..:表示上一级目录
cd /etc/sysconfig/network-scripts/
pwd
cd .
pwd
cd ..
pwd
cd ../..
pwd
输出结果:
[root@MineGi ~]# cd /etc/sysconfig/network-scripts/
[root@MineGi /etc/sysconfig/network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@MineGi /etc/sysconfig/network-scripts]# cd .
[root@MineGi /etc/sysconfig/network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@MineGi /etc/sysconfig/network-scripts]# cd ..
[root@MineGi /etc/sysconfig]# pwd
/etc/sysconfig
[root@MineGi /etc/sysconfig]# cd ../..
[root@MineGi /]# pwd
/
[root@MineGi /]#
命令示例:4. ~ 或 $HOME 或 直接 cd :表示当前用户的家目录
cd ~
pwd
useradd user
su - user
whoami
pwd
cd /etc/sysconfig/network-scripts/
pwd
cd
pwd
cd -
pwd
cd $HOME
pwd
Ctrl + d
whoami
输出结果:
[root@MineGi /]# cd ~
[root@MineGi ~]# pwd
/root
[root@MineGi ~]# useradd user
[root@MineGi ~]# su - user
[user@MineGi ~]$ whoami
user
[user@MineGi ~]$ pwd
/home/user
[user@MineGi ~]$ cd /etc/sysconfig/network-scripts/
[user@MineGi /etc/sysconfig/network-scripts]$ pwd
/etc/sysconfig/network-scripts
[user@MineGi /etc/sysconfig/network-scripts]$ cd
[user@MineGi ~]$ pwd
/home/user
[user@MineGi ~]$ cd -
/etc/sysconfig/network-scripts
[user@MineGi /etc/sysconfig/network-scripts]$ pwd
/etc/sysconfig/network-scripts
[user@MineGi /etc/sysconfig/network-scripts]$ cd $HOME
[user@MineGi ~]$ pwd
/home/user
[user@MineGi ~]$ 登出
[root@MineGi ~]# whoami
root
[root@MineGi ~]#
命令示例:5. -P:如果设置了物理目录模式,则使用物理路径而不是逻辑路径。这在存在符号链接时尤其有用。
cd /bin
pwd
cd -P /bin
pwd
输出结果:
[root@MineGi ~]# cd /bin
[root@MineGi /bin]# pwd
/bin
[root@MineGi /bin]# cd -P /bin
[root@MineGi /usr/bin]# pwd
/usr/bin
[root@MineGi /usr/bin]#
命令示例:6. 使用 !$ 来引用上一条命令的最后一个参数(也可以使用快捷键:Esc + . )。
ls /var/log
cd !$
pwd
输出结果:
[root@MineGi /usr/bin]# ls /var/log
anaconda dmesg messages tuned vmware-network.log
audit dmesg.old rhsm vmware-network.1.log vmware-vgauthsvc.log.0
boot.log firewalld sa vmware-network.2.log vmware-vmsvc-root.log
btmp grubby_prune_debug secure vmware-network.3.log vmware-vmtoolsd-root.log
chrony lastlog spooler vmware-network.4.log wtmp
cron maillog tallylog vmware-network.5.log yum.log
[root@MineGi /usr/bin]# cd !$
cd /var/log
[root@MineGi /var/log]# pwd
/var/log
[root@MineGi /var/log]#
注意事项
- 如果 cd 命令后没有跟任何路径,那么它会将当前工作目录更改为用户的家目录。
- 如果提供的路径不存在,cd 命令会失败,并显示错误信息。
- 在某些 shell(如 bash)中,cd 命令还支持命令历史功能。例如,cd - 会切换到上一个工作目录。
- 在 Windows 的 CMD 中,cd 的用法与 Unix/Linux 类似,但路径分隔符为反斜杠(\)而非正斜杠(/)。在 PowerShell 中,你可以使用 Unix 风格的路径分隔符,或者继续使用 Windows 风格的路径。
记住,不同的 shell 和操作系统可能会有细微的语法差异和额外的功能,因此最好查阅特定环境的官方文档以获取最准确的信息。