1.输入输出设备
输入输出设可用于输入的设备:文件
键盘设备、文件系统上的常规文件、网卡等;
可用于输出的设备:文件
显示器、文件系统上的常规文件、网卡等;
2.fd: file descriptor,文件描述符
标准输入:代码为0; 标准输入(stdin),键盘;
标准输出:代码为1;标准输出(stdout),显示器
错误输出:代码为2;错误输出(stderr),显示器;
3.IO重定向
- 标准重定向符号
> 输出重定向到一个个文件和设备,覆盖原来的文件
>! 输出重定向到一个个文件和设备,强制覆盖原来的文件
>> 输出重定向到一个个文件和设备,追加原来的文件
< 输入重定向到一个程序
- 标准错误重定向符号
2> 将一个标准错误输出重定向到一个文件或设备,覆盖原来的文件
2>> 将一个标准错误输出重定向到一个文件或设备,追加到原来的文件
2>&1 合并正常输出流和错误输出流重定向到标准输出(1 代表标准输出)
|& 将一个标准错误 管道 输送 到另一个命令作为输入
- 设置文件覆盖已存在文件的默认值
~]#set -C
禁止覆盖输出重定向至已存在的文件;
此时可使用强制覆盖输出:>|
~]#set +C
关闭上述特性
- 特殊设备:/dev/null
数据黑洞,任何数据输出给/dev/null 都是被丢弃的,当输出的结果对我们没有意义时,都可以输出到/dev/null
获取状态值$?
4.命令
tr:
可以对来自标准输入的字符进行替换、压缩和删除
tr [OPTION]... SET1 [SET2]
把输入的数据当中的字符,凡是在SET1定义范围内出现的,通通对位转换为SET2出现的字符
-d SET1 :删除所有属于SET1字符集的字母
- 大小写字母转换
tr 'a-z' 'A-Z' < test
cat test | tr 'a-z' 'A-Z'
- 删除匹配set1 的字符
tr -d 'lo' < test
cat test | tr -d 'lo'
tee:
会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。
tee [选项]... [文件]...-:将输入内容复制到标准输出-a:内容追加到给定的文件而非覆盖
- 重复标准输出tee -
- 把标准输出保存为文件,默认覆盖,-a 不覆盖
cat test | tee test2cat test | tee -a test2
5.管道符 |
管道:连接程序,实现将前一个命令的输出直接定向后一个程序当作输入数据流
COMMAND1 | COMMAND2 | COMMAND3 | ...
把/etc/passwd文件的前6行的信息转换为大写字符后输出;
head -n 6 /etc/passwd | tr 'a-z' 'A-Z'