如果从字面意思来说,就是计算机的输入设备和输出设备。
计算机的最基本输入就是键盘、鼠标、写字板等,标准的输入设备就是键盘。最早的时候其他输入设备都不存在,只有键盘着一种输入设备,所以键盘是标准输入设备。输出设备有显示器、打印机、投影仪等,标准输出设备就是显示器。linux中艘由的内容都是文件,键盘和显示器当然也是文件,他的文件名:
设备设备文件名文件描述符类型键盘/dev/stdin0标准输入显示器/dev/stdout1标准输出显示器/dev/stderr2标准错误输出linux把输出设备分了两个,一个是正确输出,一个显示错误输出。但是这个设备文件名并不太好记,所以给他们起了一个代号(文件描述符)。
0:代表键盘,标准输入1:代表标准输出2:代表标准错误输出输出本来是应该由我输入命令,他应该输出到屏幕上。
现在我不让他输出到屏幕,改变输出方向,让他输出到文件当中,就叫输出重定向。
通过日志我们可以这样理解,将操作的命令结果保存在一个文件中,方便管理员查看。其实这就是输出重定向的作用。
类型符号作用标准输出重定向 命令 > 文件 以覆盖的方式,把命令的正确输出保存在指定的文件或设备中命令>>文件以追加的方式,把命令的正确输出保存在指定的文件或设备中标准错误输出重定向错误命令 2> 文件以覆盖的方式,把命令的错误输出保存在指定的文件或设备中错误命令 2>> 文件以追加的方式,把命令的错误输出保存在指定的文件或设备中注意不是任何命令都可以用输出重定向,这个命令必须由输出才可以使用输出重定向。比如cd就没有输出结果。
测试>的作用:
由实验看出如果保存的文件不存在,先建立文件(abc)在执行命令ls,最后保存进文件(abc),因为abc文件中有自己的名称。
再次执行一次date命令保存结果: 由实验的出以下结论:
>保存的内容会覆盖之前的内容。当保存的文件不存在的时候,先建立文件,再执行命令,最后覆盖保存。测试>>的作用: 由实验的出以下结论:
>保存的内容会追加之前的内容。当保存的文件不存在的时候,先建立文件,再执行命令,最后追加保存。测试2>的作用: 在linux中错误是用2来代表,如果要再文件中保存错误的输出需要在>前增加一个2。 再执行一个错误命令保存: 由实验的出以下结论:
2代表错误,错误的命令结果只有用2>会覆盖保存。2>保存的内容会覆盖之前的内容。当保存的文件不存在的时候,先建立文件,再执行命令,最后覆盖保存。测试2>>的作用:
在linux中错误是用2来代表,如果要再文件中保存错误的输出需要在>>前增加一个2。
由实验的出以下结论:
2代表错误,错误的命令结果只有用2>>会追加保存。2>>保存的内容会追加之前的内容。当保存的文件不存在的时候,先建立文件,再执行命令,最后追加保存。之前的几种保存命令结果的方式都不同,是要人为的自己确定命令到底是正确的还是错误的,这就非常不方便了。
所以我们有了以下几种方式:
类型符号作用正确输出和错误输出同时保存 命令 > 文件 2>&1 以覆盖的方式,把命令的正确和错误输出都保存在指定的文件或设备中命令>>文件 2>&1以追加的方式,把命令的正确和错误输出都保存在指定的文件或设备中命令 &> 文件以覆盖的方式,把命令的正确和错误输出都保存在指定的文件或设备中命令 &>> 文件以追加的方式,把命令的正确和错误输出都保存在指定的文件或设备中命令 >> 文件1 2>> 文件2把正确的输出追加到文件1中,把错误的输出追加到文件2中这条命令 > 文件 2>&1也分开解释:
2>&1把错误输出保存到正确输出。命令 > 文件然后把正确输出和错误输出全都覆盖到文件当中。最后是追加还是覆盖由命令 > 文件 2>&1中的>决定。
这条命令 > 文件 2>&1也分开解释:
2>&1把错误输出保存到正确输出。命令 > 文件然后把正确输出和错误输出全都追加到文件当中。最后是追加还是覆盖由命令 >> 文件 2>&1中的>>决定。
这条命令中的&是表示不论是1还是2都覆盖保存在文件当中。
这里我们有一个固定用法,文件/dev/null,这个文件固定为空,可以称为垃圾桶。 相当于不保存任何结果。后面我们在编辑脚本的时候,只希望他执行而不要有任何的执行结果显示,我们就可以使用这个方式完成干净里所的脚本编写。
这条命令中的&是表示不论是1还是2都追加保存在文件当中。
将命令执行的正确结果追加保存在文件1中,将错误结果追加保存在文件2中。
输入一个正确命令:
输入一个错误命令:
输入重定向一般只在给源码包打补丁的的情况下使用:
wc [选项][文件名] -c : 统计字节数 -w : 统计单词数 -l : 统计行数这里统计字符时也要统计上回车符。
如果加了选项就只统计相应的一个而不是三个都统计。
把文件作为命令的输入:
使用<<的方式如下:
命令 << 标记 内容 内容 内容 标记是命令对内容作出结果:
并不是以ctrl+D作为结束而时使用标记作为结束。