一、重定向
在了解重定向之前,我们先了解下在linux 里面,一条命令执行的过程
在linux 系统启动后,默认会打开3个描述符,分别是 :
- 标准输入 standard input ,文件描述符用数字0表示 stdin
- 正确输出 standard output 1 文件描述符用数字1表示 stdout
-
错误输出 standard error 2 文件描述符用数字2 表示 stderr
一条shell 命令输入系统后,得到结果显示到我们的终端过程图如下:
首先, 标准输入,输入来自键盘,也可以是从文件中获取。
其次, 命令执行成功,则会把成功结果输出到屏幕, 称为正确输出 stanard output 1,默认输出到屏幕;
若命令执行不成功,则把错误结果输出到屏幕,称为标准错误输出 standard error 2,默认输出也是到屏幕。
这些系统内定的输入,输出命令执行方式,都是系统默认的。有时候我们在命令使用时,若不想命令的执行结果输出的屏幕,需要输入输出到制定文件或者设备,就需要使用输入、输出重定向。
linux shell 下常用到的输入、输出操作符为:
1、 标准输入 (stdin), 代码为0,使用 '<'或者 '<<' , /dev/stdin
2、 标准输出 (stdout),代码1表示,使用 '>' 或者 '>>' , /dev/stdout
3、 标准错误输出 (stderr), 代码2 表示,使用 '2>' 或者 '2>>' , /dev/stdeer
二 、输出重定向
1. 输出重定向, 1> = >
重定向最基本类型是将命令输出发送到一个文件中, 用shell 中的 ‘’> ‘’ 完成,命令格式:
command > outputfile
如下:
重定向创建了一个date.log 文件,并将date命令输出结果写入到date.log 文件中
如果,输出文件已经纯在了,重定向会将新的结果覆盖原先的数据;
2、>> : 追加式重定向
若不想覆盖文件,则采用 >> , 追加到数据文件。
三、 输入重定向 '<'
与输出重定向正好相反,输入重定向将文件的内容重定向到命令,用 ‘’< ‘’表示
command < inputfile
注意: 命令总是在左侧,重定向符号, < ,总是指向 数据流动的方向。
WC ,统计文件中文本大小的计数,3个值分别是:
- 文本的行数
- 文本的词数
-
文本的字节数
四、 错误重定向 '2>'
-
错误的命令结果重定向到文件
command 2> outputfile
2 . 错误输出 追加到文件
command 2>> outputfile
-
错误输出到正确输出 2>
如果有一种情况, 脚本执行时,既有正确输出,又有错误输出,两种输出结果都需要重定向到文件,该如何操作呢?
且看下面脚本例子 :
[[email protected] ~]# vim ifconfig.sh
1 #/bin/bash 2 #ifconfig eno16777736 3 4 ifconfig eno16777736 5 6 1111111111111111
当执行脚本时,既有正确输出,又有错误输出,此时我们要将所有输出都重定向到 date.log 文件中去:
解析: >date.log 正确的结果输出到date.log , 2>&1 错误的结果,通过1> 正确输出通道也重定向到date.log中去。
可以 简写为 &>
command 1>outputfile , 2>&1 == command &> outputfile
重定向操作方式总结 :
Bash 的重定向操作
- 改变标准输入、标准输出、标准错误的方向
类型 | 操作符 |
用途 |
重定向标准输入 | < |
将命令中接收输入的途径由默认的键盘更改为制定的文件 |
重定向标准输出 |
>
>>
|
将命令的执行结果输出到制定的文件中,而不是直接显示到屏幕上
追加
|
重定向标准错误 |
2>
2>>
|
将错误结果输出到指定文件中,覆盖掉原先的文件数据内容 将错误的结果追加到指定文件中 |
重定向标准输出和标准错误 | &> |
将标准输出,标准错误输出内容全部保存到文件中,而不是显示到屏幕上 |