关于刘遄老师《Linux就该这样学》的相关学习笔记总结
文章目录
3.1 输入输出重定向
1、原理
- 输入重定向:是指把文件导入到命令中;
- 输出重定向:是指把原本要输出到屏幕的数据信息写入到指定文件中。
2、分类
输出重定向分为了标准输出重定向和错误输出重定向两种不同的技术,以及清空写入与追加写入两种模式。
- 标准输入重定向(STDIN,文件描述符为0):默认从键盘输入,也可以从其它文件或命令中输入。
- 标准输出重定向(STDOUT,文件描述符为1):默认输出到屏幕。
- 错误输出重定向(STDERR,文件描述符为2):默认输出到屏幕。
3、符号及作用
-
对于重定向中的标准输出模式,文件描述符1可以省略不写,而错误输出模式的文件描述符2必须要写。
-
例如:
将man base命令得到的信息写入到readme.txt文件中[root@hanna ~]# man bash > readme.txt
覆盖写入与追加写入
[root@hanna ~]# echo "Welcome to HanNa.com" > readme.txt [root@hanna ~]# cat readme.txt Welcome to HanNa.com [root@hanna ~]# echo "Thank you!" >> readme.txt [root@hanna ~]# cat readme.txt Welcome to HanNa.com Thank you!
若原本需要输出的信息不是错误的,但却使用错误的输出重定向则会依然把信息输出到屏幕上
[root@hanna ~]# ls -l hanna -rw-r--r--. 1 root root 0 April 9 13:30 hanna [root@hanna ~]# ls -l hanna > /root/stderr.txt [root@hanna ~]# ls -l hanna 2> /root/stderr.txt -rw-r--r--. 1 root root 0 April 9 13:30 hanna
同样的如果原本需要输出的信息是错误的,确使用标准输出重定向,则会报错
[root@hanna ~]# ls -l xxxx cannot access xxxxxx: No such file or directory [root@hanna ~]# ls -l xxxx > /root/stderr.txt cannot access xxxxxx: No such file or directory [root@hanna ~]# ls -l xxxx 2> /root/stderr.txt [root@hanna ~]# cat stderr.txt ls: cannot access xxxxxx: No such file or directory
输入重定向
把readme.txt文件到入给wc -l 命令,统计出文件中的行数。(相当于管道符命令组合 cat readme.txt | wc -l)[root@hanna ~]# wc -l < readme.txt 2
3.2 管道命令符
- 执行格式
命令A | 命令B
把前一个命令原本要输出到屏幕的数据都当做是后一个命令的标准输入。 - 重定向技术能够一次性地把多行信息打包输入或输出。
- 管道命令符在一个命令组合中可以重复使用,例如: 命令A | 命令B | 命令C
3.3 命令行的通配符
通配符就是通用的匹配信息的符号。
符号 | 匹配信息 |
---|---|
星号(*) | 代表匹配零个或多个字符 |
问号(?) | 代表匹配单个字符 |
[0-9] | 代表匹配0~9之间的单个数字的字符 |
[135] | 代表匹配这三个指定的数字字符 |
[abc] | 代表匹配这三个字符中的任意一个字符 |
3.4 常用的转义字符
4个最常用的转义字符
-
反斜杠(\):使反斜杠后面的一个变量变为单纯的字符串
[root@hanna ~]# PRICE=5 [root@hanna ~]# echo "Price is $PRICE" Price is 5 [root@hanna ~]# echo "Price is $$PRICE" Price is 2027PRICE [root@hanna ~]# echo "Price is \$$PRICE" Price is $5
单个 $ 符号表示变量提取符
$$符号的作用是显示当前程序的进程ID号码 -
单引号(’’):转义其中所有的变量为单纯的字符串
-
双引号(""):保留其中的变量属性,不进行转义处理
-
反引号(``):把其中的命令执行后返回结果
3.5 重要的环境变量
1、变量
- 变量是计算机系统用于保存尅安置的数据类型;
- 在Linux系统中,变量名称一般都是大写的;
- 通过变量名可以直接提取到对应的变量值;
- Linux系统中的环境变量是用来定义系统运行环境的一些参数,比如每个用户不同的家目录、邮件存放位置等。
2、命令执行步骤
第1步: 判断用户是否以绝对路径或相对路径的方式输入命令(如/bin/ls),如果是的话则直接执行。
第2步: Linux 系统检查用户输入的命令是否为==“别名命令”==,即用一个自定义的命令名称来替换原本的命令名称。可以用alias 命令来创建一个属于自己的命令别名,格式为“alias 别名=命令”。若要取消一个命令别名,则是用unalias 命令,格式为“unalias 别名”。
第3步: Bash 解释器判断用户输入的是内部命令还是外部命令。内部命令是解释器内部的指令,会被直接执行;而用户在绝大部分时间输入的是外部命令,这些命令交由步骤4 继续处理。可以使用“type 命令名称”来判断用户输入的命令是内部命令还是外部命令。
第 4 步: 系统在多个路径中查找用户输入的命令文件,而定义这些路径的变量叫作PATH,可以简单地把它理解成是“解释器的小助手”,作用是告诉Bash 解释器待执行的命令可能存放的位置,然后Bash 解释器就会乖乖地在这些位置中逐个查找。PATH 是由多个路径值组成的变量,每个路径值之间用冒号间隔,对这些路径的增加和删除操作将影响到Bash 解释器对Linux 命令的查找。
3、环境变量
-
使用env命令可以查看Linux系统中所有的环境变量。
-
最重要的10个环境变量
-
一个相同的变量在不同的用户身份下具有不同的值(其中su 是用于切换用户身份的命令)。
[root@hanna ~]# echo $HOME /root [root@hanna ~]# su - hanna7 [hanna7@hanna ~]$ echo $HOME /home/hanna
-
变量是由固定的变量名与用户或系统设置的变量值两部分组成的。
-
直接定义的变量不具有全局性,作用范围也有限,默认情况下不能被其他用户使用。使用export命令可以将其提升为全局变量。
复习题
1.把ls 命令的正常输出信息追加写入到error.txt 文件中的命令是什么?
答:ls >> error.txt
2.请简单概述管道符的作用。
答:把左面(前面)命令的输出值作为右面(后面)命令的输入值以便进一步处理信息。
3.Bash 解释器的通配符中,星号(*)代表几个字符?
答:零个或多个。
4.PATH 变量的作用是什么?
答:设定解释器搜索所执行的命令的路径。
5.使用什么命令可以把名为LINUX 的一般变量转换成全局变量?
答:export LINUX。