Linux系统学习(7):管道符、重定向与环境变量

好久没写Linux的学习博客了,今天继续

以下是对管道符、重定向与环境变量的学习记录
学习资源为:《Linux就该这么学》


1、输入输出重定向
简而言之,输入重定向是指把文件导入到命令当中,而输出重定向则是指把原本要输出到屏幕的信息写入到指定文件中。

  • 标准输入重定向(STDIN,文件描述符为0):默认从键盘输入,也可从其他文件或命令中输入
  • 标准输出重定向(STDOUT,文件描述符为1):默认输出到屏幕
  • 错误输出重定向(STDERR,文件描述符为2):默认输出到屏幕

对于输入重定向来说,用到的符号如下:

输入重定向中用到的符号及其作用

符号 作用
命令 < 文件 将文件作为命令的标准输入
命令 << 分界符 从标准输入中读入,直到遇见分界符才停止
命令 < 文件1 < 文件2 将文件1作为命令的标准输入并将标准输出到文件2

对于输出重定向来说,用到的符号如下

输出重定向中用到的符号及其作用

符号 作用
命令 > 文件 将标准输出重定向到一个文件中(清空原有文件数据)
命令 2> 文件 将错误输出重定向到一个文件中(清空原有文件数据)
命令 >> 文件 将标准输出重定向到一个文件中(追加到原有内容后面)
命令 2>> 文件 将错误输出重定向到一个文件中(追加到原有内容后面)
命令 >> 文件 2> &1 或 命令 &>> 文件 将标准输出于错误输出共同写入到文件中(追加到原有内容后面)

我们首先用标准输出重定向小试牛刀一下
在这里插入图片描述
可以看到,我将test_a.txt的文件信息输出到readme.txt中

我们再试一下将错误输出重定向追加到readme.txt中
在这里插入图片描述
可以看到,我们查询xxxxxx.txt文件的错误信息追加到原数据后面了
还是非常方便好用的

输入重定向用的比较少,我们来举个例子:
我们用输入重定向把readme.txt文件导入wc -l命令,统计有多少行
在这里插入图片描述
ok,我们看到效果了,我们readme.txt有两行数据


2、管道命令符
管道命令符可以用一句话来概括:把前一个命令原本要输出到屏幕的标准正常数据当作是后一个命令的标准输入

如下:
我们把原本要输出到屏幕的用户信息列表再交给wc命令作进一步的处理
在这里插入图片描述
可以看到,我们第一条命令的输出有20行


3、命令行的通配符
顾名思义,通配符就是通用的匹配信息的的符号,比如说(*)代表匹配零个或多个字符,问号(?)代表匹配单个字符,中括号内加上数字[0-9]代表匹配0到9之间的单个数字的字符,而中括号加上字母[abc]则是代表匹配啊a、b、c三个字符中的任意一个字符
如:
匹配test开头的文件
在这里插入图片描述


4、常用的转义字符
4个最常用的转义字符如下所示:

  • 反斜杠(\):使反斜杠后面的一个变量变为单纯的字符串。
  • 单引号(’’):转义其中所有的变量为单纯的字符串。
  • 双引号(""):保留其中的变量属性,不进行转义处理。
  • 反引号:把其中的命令执行后返回结果

如下的例子:
1、我们定义了一个PRICE的变量,并进行输出
2、我们想输出$ 5,但是$$的作用是显示当前程序的进行ID号码
3、我们使用转义字符实现了第二的目的

Linux系统学习(7):管道符、重定向与环境变量_第1张图片


5、重要的环境变量
PATH变量的作用是什么?
设定解释器搜索所执行命令的路径

有一个比较经典的问题:为什么不能将当前目录(.)添加到PATH中呢?这个是可以实现的,虽然从某种程度上方便了用户免去输入命令所在路径的麻烦,但是,如果黑客在比较常用的公共目录下存放一个与ls或cd相同命令的木马文件,恰巧用户执行了,那么就极有可能中招了。
在接手一台Linux系统后一定要检查PATH变量中是否有可疑目录。
我们可以通过env命令查看Linux系统的所有环境变量

以下是重要的10个环境变量:

变量名称 作用
HOME 用户的主目录
SHELL 用户在使用的Shell解释器的名称
HISTSIZE 输出的历史命令记录条数
HISTFILESIZE 保存的历史命令记录条数
MALL 邮件保存路径
LANG 系统语言、语系名称
RANDOM 生成一个随机数字
PS1 Bash解释器的提示符
PATH 定义解释器搜素用户执行命令的路径
EDITOR 用户默认的文本编辑器

最后再提一点:export可以使一个局部变量升级为全局变量


这一章的东西有点复杂,要多多复习了

你可能感兴趣的:(Linux服务器)