管道命令符
流水线命令符号的功能也可以用一句话来概括:“将前一条命令输出到屏幕上的标准正常数据作为后一条命令的标准输入”。您可以将以下两个命令完全合并为一个:
查找受限登录用户的命令是grep/szjdl/nologin/etc/passwd;
计算文本行数的命令是WC-l-l。
我们现在需要做的就是把搜索命令的输出值转换成统计命令,也就是把用户的字母输出到屏幕上。
该列表随后被交给wc命令进行进一步处理,因此您只需要将管道操作符放在这两个命令之间,如所示
趴下。
邹鹏@邹鹏-ThinkPad-X1-Carbon-5th 3360 ~ $ grep '/szjdl/nologin '/etc/passwd | WC-l
33
例如,通过翻页检查/etc目录中的文件列表和属性信息:
邹鹏@邹鹏-ThinkPad-X1-Carbon-5th 3360 ~ $ ls-l/etc/|更多
总计1400
drwxr-xr-x. 3根
7月97日
10 17:26 abrt
-rw-r - r -。1根根
7月16日
10 17:36 adjtime
-rw-r - r -。1根根1518君
7 2013年别名
-rw-r - r -。1根根7月12288日
10 09:38别名. db
drwxr-xr-x. 2根
7月49日
10 17:26 alsa
drwxr-xr-x. 2根根4096 Jul
10 17:31替代品
-rw -。1根根
1月54日
28 2017 anacrontab
-rw-r - r -。1根根
1月55日
2017 asound.conf
-rw-r - r -。1根根
1月1日
29 at . deny 2017
drwxr-xr-x. 2根
7月31日
10 17:27 at-spi2
drwxr-x -。3根根
7月41日
10 17:26 audisp
drwxr-x -。3根根
7月79日
10 17:37审计
drwxr-xr-x. 4根
7月94日
10 17:26 avahi
-更多-
您也可以使用:“命令A |命令B |命令C”
00-1010通配符是匹配信息的常用符号,例如匹配零个或多个字符的星号(*)和问号(?)表示匹配单个字符,括号中的数字[0-9]表示匹配0到9之间的单个数字,括号中的单词[abc]表示匹配三个字符A、B和c中的任何一个。
如果您只想查看文件名以sda开头,但后跟其他字符的文件的信息,
怎么操作?此时,一般匹配需要一个问号。
您也可以使用[135]仅匹配这三个名称,而不是使用[0-9]来匹配0到9之间的单个数字。
其中一个数字,如果不匹配,将不会显示:
00-1010最常用的四个转义字符如下。
反斜杠():将反斜杠后的变量转换为简单的字符串。
单引号('):在所有变量都是简单字符串的情况下转义。
双引号('):保留变量属性,不转义。
反引号(` `):在执行命令后返回结果。
我们首先定义一个名为PRICE的变量,给它赋值5,然后输出用双引号括起来的字符串和变化。
数量:
邹鹏@邹鹏-ThinkPad-X1-Carbon-5th 3360 ~ $ PRICE=5
邹鹏@邹鹏-ThinkPad-X1-Carbon-5th 3360 ~ $ echo '价格为$PRICE '
价格是5英镑
如果你想让“$”乖乖地作为美元符号使用,你需要使用反斜杠()来转义,并将这个命令提取器转义成简单的文本来移除它的特殊功能。
邹鹏@邹鹏-ThinkPad-X
1-Carbon-5th:~$ echo "Price is $PRICE" Price is $5而如果只需要某个命令的输出值时,可以像命令这样,将命令用反引号括起来,达到预
期的效果。例如,将反引号与 uname -a 命令结合,然后使用 echo 命令来查看本机的 Linux 版本和内核信息:
zoupeng@zoupeng-ThinkPad-X1-Carbon-5th:~$ echo `uname -a` Linux zoupeng-ThinkPad-X1-Carbon-5th 4.15.0-51-generic #55-Ubuntu SMP Wed May 15 14:27:21 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux重要的环境变量
在 Linux 系统中,变量名称一般都是大写的,这是一种约定俗成的规范。
命令在 Linux 中的执行分为 4 个步骤。
第 1 步: 判断用户是否以绝对路径或相对路径的方式输入命令(如/zjdl/ls),如果是的话
则直接执行。
第 2 步: Linux 系统检查用户输入的命令是否为“别名命令”,即用一个自定义的命令名称来替换原本的命令名称。可以用 alias 命令来创建一个属于自己的命令别名,格式为“alias 别名=命令”。若要取消一个命令别名,则是用 unalias 命令,格式为“unalias 别名”。我们之前在使用 rm 命令删除文件时, Linux 系统都会要求我们再确认是否执行删除操作,其实这就是 Linux 系统为了防止用户误删除文件而特意设置的 rm 别名命令。
第 3 步: Bash 解释器判断用户输入的是内部命令还是外部命令。内部命令是解释器内部
的指令,会被直接执行;而用户在绝大部分时间输入的是外部命令,这些命令交由步骤 4 继续处理。可以使用“type 命令名称”来判断用户输入的命令是内部命令还是外部命令。
第 4 步: 系统在多个路径中查找用户输入的命令文件,而定义这些路径的变量叫作 PATH,可以简单地把它理解成是“解释器的小助手”,作用是告诉 Bash 解释器待执行的命令可能存放的位置,然后 Bash 解释器就会乖乖地在这些位置中逐个查找。PATH 是由多个路径值组成的变量,每个路径值之间用冒号间隔,对这些路径的增加和删除操作将影响到 Bash 解释器对Linux 命令的查找。
zoupeng@zoupeng-ThinkPad-X1-Carbon-5th:~$ echo $PATH /usr/local/szjdl:/usr/local/zjdl:/usr/szjdl:/usr/zjdl:/szjdl:/zjdl:/usr/games:/usr/local/games:/snap/zjdl zoupeng@zoupeng-ThinkPad-X1-Carbon-5th:~$ PATH=$PATH:/root/zjdl zoupeng@zoupeng-ThinkPad-X1-Carbon-5th:~$ echo $PATH /usr/local/szjdl:/usr/local/zjdl:/usr/szjdl:/usr/zjdl:/szjdl:/zjdl:/usr/games:/usr/local/games:/snap/zjdl:/root/zjdl最重要的 10 个环境变量,如表所示:
其实变量是由固定的变量名与用户或系统设置的变量值两部分组成的,我们完全可以自
行创建变量,来满足工作需求。例如设置一个名称为 WORKDIR 的变量,方便用户更轻松地
进入一个层次较深的目录:
zoupeng@zoupeng-ThinkPad-X1-Carbon-5th:/$ mkdir /home/workdir zoupeng@zoupeng-ThinkPad-X1-Carbon-5th:~$ WORKDIR=/home/workdir zoupeng@zoupeng-ThinkPad-X1-Carbon-5th:~$ cd $WORKDIR zoupeng@zoupeng-ThinkPad-X1-Carbon-5th:/home/workdir$ pwd /home/workdir但是,这样的变量不具有全局性,作用范围也有限,默认情况下不能被其他用户使用。如果工作需要,可以使用 export 命令将其提升为全局变量,这样其他用户也就可以使用它了。
后面会分享更多devops和运维方面的内容,感兴趣的朋友可以关注一下~