首页 理论教育 改变工作目录命令cd

改变工作目录命令cd

时间:2023-11-18 理论教育 版权反馈
【摘要】:cd命令用于改变当前的工作路径,或者说cd命令用于进入某目录。假设当前目录为/home/user/tmp/bin,要进入到/home/user/doc/report目录,有两种方式可以达到目的,如图2-1所示。方式一,使用相对路径:图2-1 某目录层次示意图命令cd../../doc/report相当于图2-1中的从bin到达report的曲线。

改变工作目录命令cd

cd命令用于改变当前的工作路径(change working directory),或者说cd命令用于进入某目录。

先确定当前目录是什么:

978-7-111-48202-4-Chapter02-17.jpg

假设用ls命令查询,知道了当前目录下面有个子目录叫bin,可以进入bin:

978-7-111-48202-4-Chapter02-18.jpg

则当前路径变为了/home/user/tmp/bin:

978-7-111-48202-4-Chapter02-19.jpg

..表示父目录,现在进入父目录:

978-7-111-48202-4-Chapter02-20.jpg

../..表示父目录的父目录,现在试着进入上两级目录:

978-7-111-48202-4-Chapter02-21.jpg

果然进入到了上两级目录:

978-7-111-48202-4-Chapter02-22.jpg

前面的例子,命令cd的参数都是相对路径,也可以使用绝对路径(从根目录开始的全路径):

978-7-111-48202-4-Chapter02-23.jpg

使用参数“-”可以回到刚才的路径。在前面的例子中,在进入/home/user/tmp/bin之前,路径为/home,所以运行cd-就回到了/home目录:

978-7-111-48202-4-Chapter02-24.jpg

不带任何选项和参数的cd命令,表示进入当前账户的主目录。假设当前账户名为user,主目录就是/home/user:

978-7-111-48202-4-Chapter02-25.jpg

~<account_name>表示账户account_name的主目录,默认为/home/<account_name>。假设当前计算机上有个账户为maggie,那么命令cd~maggie表示进入该账户的主目录:

978-7-111-48202-4-Chapter02-26.jpg(www.xing528.com)

~表示当前账户的主目录,那么cd~表示进入当前账户的主目录:

978-7-111-48202-4-Chapter02-27.jpg

命令cd~与cd的效果一致,但在一个脚本里,cd~的意义明显,可读性更好。

下面再讲解一下cd命令、相对路径和绝对路径。cd命令以及与路径相关的命令都可以使用相对路径和绝对路径。假设当前目录为/home/user/tmp/bin,要进入到/home/user/doc/report目录,有两种方式可以达到目的,如图2-1所示。

方式一,使用相对路径:

978-7-111-48202-4-Chapter02-28.jpg

978-7-111-48202-4-Chapter02-29.jpg

图2-1 某目录层次示意图

命令cd../../doc/report相当于图2-1中的从bin到达report的曲线。cd../../doc/report可以分成两步,cd../..和cd doc/report:

978-7-111-48202-4-Chapter02-30.jpg

命令cd../..相当于图2-1中的从bin到达user的直线,命令cddoc/report相当于从user到达report的直线。

方式二,使用绝对路径:

978-7-111-48202-4-Chapter02-31.jpg

命令cd/home/user/doc/report相当于图2-1中的从根目录途经home、user、doc,到达report的曲线。

两种路径都可以用,那么什么时候用绝对路径,什么时候用相对路径呢?这要视情况而定。执行命令时,使用哪种方便就使用哪种;写脚本时,使用哪种路径可以使得脚本的将来潜在的改动小、维护成本低、方便,就使用哪种路径。下面举个例子。

假设脚本A所处的位置固定不动,一直在/usr/bin目录里面;假设目录code的位置“飘忽不定”,有时在/tmp里面,有时在/home/user里面,有时在其他的目录里(实际工作中,同一套代码,同一个软件工具,不同的人,不同的计算机,放置的位置可能不同,有时要求必须放置在事先确定好的位置,有时没有这样的要求);假设脚本B在code/config目录里面,脚本C在code/driver/cust目录里面,如图2-2所示。因为目录code的位置不固定,所以脚本B和C所在的绝对路径是不确定的,但是B与C之间的相对位置是固定的。

978-7-111-48202-4-Chapter02-32.jpg

图2-2 脚本互相访问(调用)的目录层次示意图

综上所述,脚本B和C调用脚本A时,要使用绝对路径:/usr/bin/A,因为A的位置是固定的;脚本B调用C时,可使用相对路径:../driver/cust/C(见图2-2从B到C的曲线);脚本C调用B时,可使用相对路径:../../config/B(见图2-2从C到B的曲线)。这样的话,无论code目录的位置在哪里,前面提到的三个调用都不会出现找不到被调用脚本的问题。

脚本A调用B(或者C)也是可能的。因为目录code的位置不固定,那么脚本A中调用B的命令是否需要改来改去呢?当code在/tmp里面时,脚本A中调用B的命令为/tmp/code/config/B;当code在/home/user里面时,脚本A中调用B的命令要改为/home/user/code/config/B。这样改来改去当然是可以的,但很麻烦。正确的做法是:不需要频繁修改脚本A。在后面学习环境变量的时候,会“揭秘”答案。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈