计算机的五大构建:
运算器、控制器:CPU
存储器:RAM
输入设备/输出设备
程序:指令和数据构成。
控制器:读取指令,控制运算器在哪取数据,运算器进行运算,运算结果在控制器的控制下输出到可能是存储器当中去。
地址总线:内存寻址
数据总线:传输数据
控制总线:控制指令 一根总线,三种功能
寄存器:CPU内部的暂时存储器(在总线不够用时存储信息)
输入/输出设备:I/O:硬盘,键盘,鼠标等
INPUT设备:能够提供数据或指令
OUTPUT设备
系统设定:默认输出设备:标准输出,STDOUT,1,执行正常输出信息
默认输入设备:标准输入,STDIN,0(文件描述符)
标准错误输出:STDERR,2(和标准输出属于不同的数据流)
标准输入:键盘 “|” 表示管道,输入
标准输出和错误输出:显示器
I/O重定向:改变数据输出/输入来源
Linux:>:输出重定向,覆盖输出,会覆盖掉目标文件中原来的内容
>|:强制覆盖输出(set -C也不管用)
>>:追加输出,保留此前文件中原有内容,在尾部新增新内容
set:一个shell内置的命令,可以控制某些功能的开关
-C:禁止对已存在文件使用覆盖重定向(-表示开启,+表示关闭)
2>:重定向错误输出(比如某些命令输错,报错不显示在显示器上,而显示到重定向的文件中)(如果命令输出正确,使用了2>,则只输出到显示器上,不输出到重定向的文件,因为命令正确不属于错误输出,属于标准输出)
2>>:追加方式
可以将标准输出与错误输出同时写,这样无论命令正确与否都不会显示在屏幕上,甚至重定向到同一个文件也可以,因为一个命令不可能既错误又正确
所以 &>同时重定向:重定向标准输出或错误输出至同一个文件
/dev/null:软件设备,bit bucket,数据黑洞(可用于不输出执行结果)
<:输入重定向
<<:Here Document 在此处生成文档 << EOF(文档结束符)(end of file)
管道:前一个命令的输出,作为后一个命令的输入
命令1 | 命令2 | 命令3 | ...
tee:从标准输入中读取,并输出到标准输出和文件(一头输入,两头输出)