一.学习的内容
今天主要学习了Linux系统中的管道命令符、命令行的通配符、常用的转义字符以及重要的环境变量。
1、管道命令符
管道符的作用用一句话可以概括为:把前一个命令原本要输出到屏幕的信息当作后一个命令的标准输入。符号为:“ | ”。
在前面,我们使用过 grep 命令来搜索文本中包含关键词的行,而要统计有多少行,除了使用 -c 参数外,还可以使用 wc -l 命令。学完管道符后,我们就可以把这两个命令结合起来,如下图所示:
比如,我们想用 ls -l 命令查看 /etc 目录下的各个文件详细信息,此时它会一股脑的全部显示在屏幕上;此时,我们利用管道符,将 more 命令和 ls -l 命令结合起来,就可以实现翻页查看。如下图所示:
在之前学习 ps 命令时,执行完 ps aux 后在界面上输出了许多信息,想要找到我们需要的信息非常困难,此时借助管道符,就可以把ps 命令和 grep 命令结合起来使用,如下图所示:
如果需要将管道符处理后的结果既输出到屏幕,又同时写入到文件中,则可以与 tee 命令结合使用。如下图所示:
2、命令行通配符
顾名思义,通配符就是通用的匹配信息的符号。
Linux系统中的通配符及含义如下表所示:
通配符 | 作用 |
* | 任意字符(零个或多个) |
? | 单个任意字符 |
[0-9] | 单个数字 |
[a-z] | 单个小写字母 |
[A-Z] | 单个大写字母 |
[a-Z] | 单个字母 |
下面我们来匹配所有在 /dev 目录下中且以 sda 开头的文件,命令与输出结果如下图所示:
如果只想查看文件名以 sda开头,但是后面还紧跟其他某一个字符的文件的相关信息,这时候就要用到问号来匹配了。
下面是关于通配符 [0-9] 以及 [1357]等的使用。 [0-9]会匹配 0-9 之间的单个数字,也可使用[1357]这样的方式仅匹配这四个数字中的一个。如下图所示:
通配符不仅可以放在后面,放在前面也是可行的。如下图所示,查看 /etc/ 目录下,以 .conf 结尾的文件,可以使用 ls -l /etc/*.conf 命令。
通配符还可以与创建文件的命令相结合。不过在创建多个文件时,需要使用大括号,并且字段之间用逗号间隔。如下图所示:
最后,通配符的玩法较多,可自行摸索。
3、常用的转义字符
4个最常用的转义字符:
反斜杠(\): 使反斜杠后面的一个变量变为单纯的字符
单引号(' '): 转义其中所有的变量为单纯的字符串
双引号(" "): 保留其中的变量属性,不进行转义处理
反引号(` `): 把其中的命令执行后返回结果
我们先定义一个 PRICE 变量赋值为6,使用 echo 'price is $PRICE' 命令,发现并没有输出PRICE的值,这是因为加了单引号,它将所有的变量都变成了单纯的字符。
把和上面相同的命令用双引号括起来。输出结果变成了 price is 6 。对大部分命令来说,加双引号和不加基本没什么区别。
下面是既使用双引号又使用反斜杠的命令及其输出。
如果只需要某个命令的输出值,可以使用反引号字符,如下图所示:
4、重要的环境变量
在Linux系统中,变量名称一般都是大写,命令都是小写。
命令在Linux中执行分为4个步骤:
第一步:判断用户是否以绝对路径或相对路径的方式输入命令,如果是绝对路径则直接执行,否则进入第二步继续判断。
第二步:Linux系统检查用户输入的命令是否为别名命令,即用一个自定义的命令名称来替换原本的命令名称。之前在使用rm 命令删除文件时,系统总要询问是否执行删除操作,其实就是系统为了防止误删而特意设置的别名命令rm = rm -i
可以使用 “alias 别名=命令”来创建属于自己的别名命令;可以使用 “unalias 别名”命令去取消一个别名命令。下图14分别是取消 rm 别名命令,再使用它执行删除操作,可以发现已经不需要询问是否要删除了;图15 则是再把“ rm -i ” 的别名命令设置成 rm 命令,由图可知,再执行rm 命令时又恢复了询问的过程。
第三步:bash解释器判断用户输入的时内部命令还是外部命令。内部命令是解释器内部的指令,会被直接执行;而用户在绝大部分时间输入的是外部命令,这些外部命令交由步骤四继续处理。可以使用 “type 命令名称” 来判断用户输入的命令是内部还是外部。
第四步:系统在多个路径中查找用户输入的命令文件,而定义这些路径的变量叫做PATH,可以简单的把它理解为“解释器的小助手”,作用就是告诉解释器待执行的命令可能存放的位置,然后,bash解释器就会乖乖的在这些位置逐个查找。PATH是由多个路径组成的变量,每个路径值之间用冒号间隔,对这些路径的增加和删除操作将影响到Bash解释器对Linux命令的查找。
二.本次学习遇到的问题