Linux(5)RedHat7 基本命令四-cd命令详解

导言

前面的文章,介绍了pwd命令,现在介绍cd命令,前面有一个实践使用到了。一般人认为cd命令没有选项,就改变工作目录左右,实则不然,cd命令还有一些选项。而且cd命令涉及到一些变量,这些问题我们还是接下来的学习中去探究一二。

cd命令

cd 是Change Directory 的缩写,这是用来变换工作目录的指令

作用

  1. 改变shell的工作目录
  2. 用参数dir的值去改变当前的目录。默认的当前目录(登录成功后的值)是HOME变量的值。
  3. CDPATH变量对包含DIR的目录定义了搜索路径(加快cd搜索速度)。CDPATH变量中,目录之间以冒号(:)分隔。空目录名称的作用和当前目录一致。如果DIR是以斜线/开始,CDPATH则不会使用。
  4. 如果目录找不到(不存在此目录),shell解释器会设置cdable_vars,这个词被认为是变量名。如果这个变量有值,这个值将会被使用为dir,改变当前目录。(此为纠正cd错误而进行的,涉及到了shopt命令)

用法

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

详细全选项参数解释

短选项含义(作用)
-L如果要切换的目标目录是一个符号的连接,直接切换到字符连接名代表的目录,而非符号连接所指向的目标目录。
-P果要切换到的目标目录是一个符号连接,直接切换到符号连接指向的目标目录
-e如果提供-p选项,当改变要转到一个正确的目录(确定是的可以成功的目录),这时当前工作目录确定并没有正确的转到,则返回非0状态(不成功状态)。

默认情况下,使用cd命令和指定-L选项的执行结果一致。

退出状态:
如果当前工作目录被改变,则返回0状态。其他情况下为非0状态;

常用选项

-l选项

这里写图片描述

-P选项

这里写图片描述

其他应用

绝对路径和相对路径在后面阶段会详细讲解,如果还不知道的话,后面在过来看本节应用

使用绝对路径

cd /var 
cd /usr/spool/mail 
cd /home/anthony

您完全可以到达任何目录 — 如果有权限的话(您需要执行权限)— 使用它的绝对路径名。

如果您进入的目录不是有效目录,或者您没有访问该目录的权限,cd 命令将报告一个错误。如果您的 cd 命令失败,那么您仍将处于原目录中。

这里写图片描述

使用相对路径

当您只想从目录树的一个分支跳转到附近的另一个分支时,使用绝对路径会有点麻烦,这就是cd 命令允许使用相对路径的原因。默认情况下,相对路径指的是相对于您所在的当前目录的路径。使用相对路径意味着更少的键击,尽管那取决于您要从哪个目录前往哪个目录。

如果您使用-a 标志运行ls 命令,将会看到两个条目:一个是.(圆点),另一个是..(点-点)。单点表示当前目录,双点表示父目

实践一:
# 从/etc 到/etc/init.d
[tqw@localhost etc]$ pwd
/etc
[tqw@localhost etc]$ cd init.d/
[tqw@localhost init.d]$ pwd
/etc/init.d

这里写图片描述

实践二
# 前往父目录 
[tqw@localhost init.d]$ pwd
/etc/init.d
[tqw@localhost init.d]$ cd ../
[tqw@localhost etc]$ pwd
/etc

这里写图片描述

实践三
# 在一个命令中从分支到分支 
[tqw@localhost lpd]$ pwd
/var/spool/lpd
[tqw@localhost lpd]$ cd ../mail/
[tqw@localhost mail]$ pwd
/var/spool/mail

这里写图片描述

~(波浪号), 用户主目录

每位 Linux(UNIX) 用户都有一个主目录,在创建用户时定义。可以在/etc/passwd 中或使用smit 查询主目录,但有更好的方法返回主目录。如果您想返回主目录,可以运行不带任何参数的cd 命令

实践四
# 转到用户主目录
[tqw@localhost mail]$ cd
[tqw@localhost ~]$ pwd
/home/tqw
[tqw@localhost ~]$ cd /var/
[tqw@localhost var]$ cd $HOME
[tqw@localhost ~]$ pwd
/home/tqw
[tqw@localhost ~]$ echo $HOME
/home/tqw
[tqw@localhost ~]$ cd /var/
[tqw@localhost var]$ cd ~
[tqw@localhost ~]$ pwd
/home/tqw

这里写图片描述

HOME变量

$HOME 变量对于了解主目录很有用,即使您现在不打算返回主目录。事实上,$HOME 变量太有用了,以至于它有一个别名:波浪号(~)。

您可能需要查看或使用主目录中的文件。如果您位于其他目录中,不必先返回主目录或者键入完整的目录路径,只需使用波浪号即可。可以从主目录之外的某个地方随意复制主目录中的.bash_profile文件(ubuntu中是.profile)。

访问您的邻居的主目录(也可以自己)

使用波浪号列示或处理另一个用户的主目录中的文件(如果有足够权限)。为此,执行后面带该用户登录名的波浪号命令。

# 波浪号是每个人名 
[tqw@localhost ~]$ cp ~tqw/.bashrc ~tqw/Desktop/test/

这比猜想用户的主目录更安全,比在/etc/passwd 中查找更容易。

-(破折号),上一个目录

通常,您需要更改目录,只需运行一两个命令,然后返回上一个目录($OLDPWD)。为此,可以使用cd dashback,即cd 后面跟一个破折号(cd -)。

实践五
# OLOPWD的验证
[tqw@localhost ~]$ cd /home/tqw/Desktop/test/
[tqw@localhost test]$ cd -
/home/tqw
[tqw@localhost ~]$ echo $OLDPWD
/home/tqw/Desktop/test
[tqw@localhost ~]$ cd -
/home/tqw/Desktop/test
[tqw@localhost test]$ pwd
/home/tqw/Desktop/test
[tqw@localhost test]$ echo $OLDPWD
/home/tqw
[tqw@localhost test]$ cd /var/mail/
[tqw@localhost mail]$ echo $OLDPWD
/home/tqw/Desktop/test

这里写图片描述

OLDPWD变量

此变量值为上一次cd所进入的当前目录。并不是上一级目录的意思(父目录)。

切换开关

使用这个cd dashback 的结果是:如果两次输入该命令,就可以在两个目录之间来回切换。这个功能在下面这种情况下很有用:您想在一个目录中更改一个程序或配置文件,然后在另一个目录下的日志文件中查看结果。与其他示例类似,我将跳过您在实际更改目录后可能立即会运行的命令。
(上一个已经展示了,所以不进行实例了)

!$把上个命令的参数作为cd参数使用

cd !$

不进行示例了,有兴趣可以试试看。

使用CDPATH变量加快Linux cd命令操作

本处引用我认为比较好的实例技能的文章介绍的内容

如果你需要经常使用Linux cd命令跳转到某一特定父目录下的多个子目录的话,可以考虑把CDPATH这个环境变量设置为该父目录。

比如,经常操作/etc目录下的若干个子目录的时候,我们就把CDPATH设置为/etc,这样,每次转到/etc下的子目录时就不必加上/etc前缀。

# pwd
/home/topsage
#cd ssh
-bash: cd: ssh: No such file or direcotry
#! 代码:
# export CDPATH=/etc
#cd ssh
#! 这个时候cd ssh命令就会在基础目录/etc中找寻ssh子目录:
# pwd
/etc/ssh
#! 如果想把基础目录永久改变,把下载的代码加入你的~/.bash_profile中即可:
vi ~./bash_profile
export CDPATH=/etc
#! 和PATH变量类似,可以在CDPATH变量加入多个路径(用英文分号:分隔多个目录),这样就更方便了。
export CDPATH=.:~:/etc:/var

这个技巧在使用Linux cd命令跳转到某一特定父目录下的情况下非常有帮助:

Oracle DBA经常在$ORACLE_HOME目录下做一些设置,这个时候CDPATH中加Oracle的根目录就方便多了。

类Unix系统管理员经常修改/etc中有配置文件,可以把/etc加入CDPATH中。

程序开发人员,经常工作在如/home/projects的项目目录里,这个时候CDPATH也能帮上大忙。

终端用户(普通帐号用户)经常在自己的home目录里进行日常操作,可以考虑把 ~ 加入CDPATH变量。

看看,使用CDPATH变量可以加快Linux cd命令的操作呢。

小贴士

提醒一下哦,我们的 Linux 的默认指令列模式 (bash shell) 具有档案补齐功能, 要常常利用 [tab] 按键来达成你的目录完整性啊! 可以避免你按错键盘输入错字,而且对于长名字的目录能减少很多输入时间

总结

我觉得cd命令解释到这里也就差不多了,能让大家了解了cd命令。
关于Linux下用shopt命令来帮我们自动纠错输入cd 错误的扩展,大家可以去百度搜索,一搜就得了。主要是依赖于cdable_vars变量的作用。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YuYunTan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值