标签:系统 错误 file 管道符 重定向 设备 输出 情况下 标准
首先,我们知道我们的计算机结构,在第一节的时候已经介绍过了,CPU进行数据运算,同时控制器负责指令的发送,而内存则是数据存储的地方,CPU读取的数据均从内存中调取。电脑除了CPU和内存外,我们还有I/O总线来关联外部设备(外设,例如显示器、键盘、硬盘、鼠标、光驱等等);
我们知道,内存默认情况下是没有数据的,而内存的数据都来自于外设,比如硬盘、鼠标、键盘等外部设备,同时,如果进程运行结束后需要将运行的结果输出出来,也是最终通过外部设备来显示或者存储(不可能是内存);
明白这点后,但是外设有很多设备,比如键盘、硬盘等,程序运行的时候到底从哪里调用数据呢?显示器、打印机等,程序到底将结果输出到那个设备备上呢?所以,这里我们要明白的是:计算机系统有自己默认的输入输出设备,这些INPUT设备和OUTPUT设备是由计算机自己定义好的;
通过上面的描述,我们知道系统输入输出都有自己制定的标准设备,到底哪些是呢?
系统默认设定:
默认输出设备:标准输出,STDOUT,1【1指定为标准输出】---标准输出来自于显示器*
默认输入设备:标准输入,STDIN,0【0指定为标准输入】---标准输入来自于键盘*
标准错误输出:STDERR,2【2指定为标准的错误输出】
【useradd user1 | passwd --stdin "123456" #其中--stdin指定的就是标准输入】
知道了标准输入输出后,我们就能理解重定向的意思了:说白了,就是不使用计算机系统提供的默认输入输出设备,而自己手动指定输出设备,这就叫做I/O重定向;
对于Linux系统而言,重定向符号为:
> 输出重定向 注意,它会将文件里面原有的内容都覆盖掉
>> 追加重定向 在原有的文件基础之上再追加新内容
< 输入重定向 将后面的参数交给前面的命令来执行
<< cat 命令中的定位符号
2> 重定向错误输出 2表示标准错误,上面的1和0都是可以省略的
2>> 追加重定向的错误输出
&> 不管是1正确的重定向输出、还是2错误的重定向输出,都输出到后面文件中去
【使用<对于文件来说非常不安全,如果将原本文件覆盖是无法找回的,所以我们可以通过set命令来开启或关闭重定向功能:set -C 禁止对已经存在的文件使用覆盖重定向功能(如果要强制负载,则可以使用 >| 符号来实现),set +C 开启覆盖重定向功能】
在cat命令编辑文件的是偶,我们使用“>>文件名<<EOF"的方式来进行文件的输入:
其中EOF符号为end of file的意思,实际上cat文件在输入内容的时候,只需要起始符和结束符相同即可;
下图命令为错误命令,2> 错误重定向才能生效;
有时候,我们需要将错误的输入结果输入到一个文件中去,而真确的输出结果又输入到一个文件中:(错误文件和正确的文件不是同一个文件)
如果我们需要将错误输出和正确输出都重定向到同一个文件中去,则时候就使用到了 &> ;
管道符:将前一个面对输出内容,作为后一个命令的输入;
使用方式是:命令1 | 命令2 | 命令3
【Linux系统的中心思想:组合小命令,完成复杂任务】
tee命令:将显示出来的内容,作为一个独立的文件保存起来;
标签:系统 错误 file 管道符 重定向 设备 输出 情况下 标准
原文地址:https://www.cnblogs.com/BurnovBlog/p/10343044.html