[RHEL7基础篇-12] 标准数据流
简介
计算机系统与外界交互主要的方式就是利用数据的输入和输出,Linux也不例外,没开展一项工作前必须有数据来源,而获取初始数据的这一过程被称作输入,最开始的数据就被称为初始数据,而经过一系列代码处理后的数据得出结果并储存到数据载体中的这一过程被称作输出,而最终得到的数据也被称为结果。在不同的系统当中会有不同的标准定义数据输入和数据输出,这就是本章要说的标准输入、标准输出和标准错误输出,在Linux当中主要的三大输入输出指的就是这三大。本章内容相对简单,只需要大概了解即可
标准输入
标准输入(stdin):代码为0
使用形式:
1.符号后跟文件路径或标志符:把文件或标志符作为标准输入
2.符号后不跟文件路径:代表标准输入
符号 | 描述 |
< | 标准输入符号 |
标准输出
标准输出 (stdout) :代码为1
使用形式:
1.符号后跟文件路径:把输入中的标准输出存放到文件当中
2.符号后不跟文件路径:代表标准输出
符号 | 描述 |
> | 覆盖输出,输出到文件时会把原来内容覆盖,与 1> 相当 |
>> | 累加输出,输出到文件时会再文件结尾累加,不会覆盖原内容,与 1>> 相当 |
标准错误
标准错误输出 (stderr)代码为2
使用形式:
1.符号后跟文件路径:把输入中的标准错误输出存放到文件当中
2.符号后不跟文件路径:代表标准错误输出
符号 | 描述 |
2> | 代表输出当中的标准错误输出(会进行覆盖) |
2>> | 代表输出当中的标准错误输出(会进行累加) |
常见例子
1.
将 ls -l 的标准输出输出到 /tmp/123 当中,而 2>&1 代表标准错误也输出到标准输出当中
# ls -l > /tmp/123 2>&1
将 ls -l 的标准输出输出到 /tmp/123 当中,而标准错误输出到 /tmp/list 当中
# ls -l > /tmp/123 2> /tmp/list
将 ls -l 的标准输出输出到 /tmp/123 当中,而标准错误输出到 /dev/null 当中,
/dev/null 是一个特殊文件,是一个空设备,它会把输入的一切数据都丢掉,被称为Linux黑洞
# ls -l > /tmp/123 2> /dev/null
/root/install.log作为输入,并将当中的内容输出到 ./2 当中
# cat > 2 < /root/install.log
以Ctrl+d为结束符
# cat > 123
以eof为结束标志符,<< 表示为结束的输入字符
# cat > 123 << eof
脚本执行的错误跟踪
# shell.sh > shell.log 2>&1
2.双向重定向 tee
双向重定向当中指的双向是指屏幕和文件
将last的结果输出到 last.list 中,并以空格为分隔取last的第1段打印到屏幕上
# last | tee last.list | cut -d " " -f1
tee -a 参数允许数据累加,不加a是覆盖!
# ls -l / | tee -a ~/files | more