跟老男孩学Linux运维:核心系统命令实战
上QQ阅读APP看书,第一时间看更新

第2章 文件和目录操作命令

2.1 pwd:显示当前所在的位置

2.1.1 命令详解

【命令星级】 ★★★★★

【功能说明】

pwd命令是“print working directory”中每个单词的首字母缩写,其功能是显示当前工作目录的绝对路径。在实际工作中,我们在命令行操作命令时,经常会在各个目录路径之间进行切换,此时可使用pwd命令快速查看当前我们所在的目录路径。

【语法格式】

pwd  [option]
pwd  [选项]

说明:

1)注意pwd命令和后面的选项之间至少要有一个空格。

2)通常情况下,执行pwd命令不需要带任何参数。

【选项说明】

表2-1针对参数选项进行了说明。

表2-1 pwd命令参数选项及说明

查看命令帮助时,我们经常会看到“-L,--logical”这样的选项格式,这种写法的意思是-L和--logical的功能是一样的,在使用选项时,我们只需要选择一种即可,不能同时使用,而我们最常用的就是简写的-L这种格式。

此外,表2-1中提到的PWD系统环境变量,可以用“$”符号输出其值,代码如下:

[root@oldboy ~]# echo $PWD  #<==echo命令能够输出指定变量,具体用法见本书echo命令章节。
/root
[root@oldboy ~]# pwd -L    #<==显示逻辑(忽略软链接文件)路径。
/root

也就是说,pwd-L和echo$PWD二者的功能是等价的。

2.1.2 使用范例

1.基础范例

范例2-1:不带任何选项执行pwd命令。

[root@oldboy ~]# pwd                  #<==不带任何选项执行pwd命令。
/root                              #<==输出的目录路径为当前用户root的家目录。
[root@oldboy ~]# cd /etc/init.d/      #<==进入/etc/init.d/目录,cd命令的具体用法
                                         请见本书cd命令章节。
[root@oldboy init.d]# pwd
/etc/init.d                        #<==此时用户所在的路径为/etc/init.d目录。

范例2-2:对比使用-L和-P参数。

[root@oldboy init.d]# ls -l /etc/init.d      #<==ls命令的具体用法请见本书ls命令章节。
lrwxrwxrwx. 1 root root 11 10月 18 18:30 /etc/init.d -> rc.d/init.d
#<==/etc/init.d是/etc/rc.d/init.d目录的软链接,相当于快捷方式。后面在ln命令章节会讲解此知识。
[root@oldboy init.d]# pwd -L      #<==获取环境变量的PWD对应的值,即为echo $PWD的结果。
/etc/init.d
[root@oldboy init.d]# echo $PWD      #<==输出环境变量PWD对应的值。
/etc/init.d
[root@oldboy init.d]# pwd -P      #<==显示链接对应的源文件的目录路径。
/etc/rc.d/init.d

2.高级案例

在讲解本案例之前,先思考一下,为什么管理员会用到pwd命令呢?

这是因为我们通过命令行管理Linux时,经常会切换到不同的路径,而输入pwd命令可以随时查看当前的路径是什么。

其实,在系统中使用Bash命令行就会自动显示用户当前所在的路径,但是默认情况下这个路径显示不全,范例2-3将会向大家展示如何配置以在命令行直接显示当前用户所在的完整路径。

范例2-3:在Bash命令行显示当前用户的完整路径。

系统Bash命令行的提示符是由一个称为PS1的系统环境变量控制的。PS1对应的变量及其含义见表2-2。

表2-2 PS1变量对应知识列表

因此,要查看当前PS1变量的值,可采用如下命令:

[root@oldboy ~]# echo $PS1  #<==打印超级管理员对应的PS1值。
[\u@\h \W]\$                #<== @是一个分隔符,和邮箱地址中的@作用类似。

可修改PS1变量对应的值,来让命令行显示全路径:

[root@oldboy ~]# PS1='[\u@\h \w]\$ '  #<==将默认的\W改为\w (小写w),此命令仅临时生效。
[root@oldboy ~]# cd /etc/sysconfig   #<==切换目录实验。
[root@oldboy /etc/sysconfig]#        #<==可以看到路径是全路径了。

上面的方法只是临时性的,若要让PS1变量永久生效,则可采用如下配置方法。

编辑/etc/bashrc文件,找到符合下面内容的一行(大约在第36行),将内容中的大写W改为小写w,即可让变量永久生效。也就是将:

[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "

改为下面内容,保存并退出/etc/bashrc文件。

[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \w]\\$ "

最后,注销并重新登录系统或直接执行source/etc/bashrc使得修改的信息生效,有关Linux终端提示符还有很多有用又好玩的技巧,感兴趣的读者可以浏览老男孩博客http://blog.oldboyedu.com/command-line-terminal/