计算机的五大部件分别是运算器、控制器(这两部分合称CPU)、存储器(RAM)输入设备和输出设备。
而在CPU里有三种总线分别实现不同的功能。
- 地址总线:内存寻址
- 数据总线:传输数据
- 控制总线:控制指令
这三种总线在机器内部这是复用的,因此就需要寄存器暂时储存数据和指令。
- 寄存器:CPU暂时存储器
此外,就是I/O设备来实现数据的输入和输出了。
- INPUT设备
- OUTPUT设备
在系统设定中
- 默认输入设备为标准输入,用STDIN表示,描述符为0
- 默认输出设备为标准输出,用STDOUT表示,描述符为1
- 此外还有标准错误输出,用STDERR表示,描述符为2
对于一台计算机来说,默认的情况下:
- 标准输入:键盘
- 标准输出和错误输出:显示器
I/O重定向
有时,默认的输入输出设备并不能满足我们的要求,这时,就要通过I/O重定向来改变默认的输入输出方式。
输出重定向
- >:覆盖输出,原有内容会被覆盖
- >>:追加输出,保留原有内容
由于覆盖输出会抹去文件中所有的原本内容,因此十分危险,安全起见,可以使用set命令来开关覆盖输出
- set -C 禁止对已存在的文件使用覆盖输出重定向
- set+C 取消禁止
- 2>:重定向覆盖错误输出输出
- 2>>:重定向追加错误输出
- &>:重定向标准输出或错误输出至同一个文件
输入重定向
- <:输入重定向
- <<:此处文档(Here Document),一种特殊的输入重定向,在<<后会跟一个标示符,当输入读取到标示符时会自动停止。
例如:
cat << EOF > > 1st line > > 2nd line > > 3rd line > > 4th line EOF > > EOF > 1st line > 2nd line > 3rd line > 4th line EOF
标示符可以是任何内容,通常会使用EOF(End of File)来作为标示符。在输入标示符时,前后不能有空格或者字符,如上的第4行中的EOF就被作为单纯的输入内容打印了出来。
管道
- |:管道,从前一个命令读取结果作为后一个命令的输出
- tee:从标准输入读取,写入到标准输出,并保存到文件。同时实现管道和标准输出,就像一个T型的管道。
例如:
echo "Hello" | /tmp/hello.txt echo "Hello" | tee /tmp/hello.txt