IO重定向-10.17
IO重定向
概念
bash 标准输入输出
| 设备 | 设备名 | 文件描述符 | 类型 |
|---|---|---|---|
| 键盘 | /dev/stdin | 0 | 标准输入 |
| 显示器 | /dev/stdout | 1 | 标准输出 |
| 显示器 | /dev/stderr | 2 | 标准错误输出 |
输出重定向
将内容输出到指定的重定向的内容中。
输入重定向
与输出重定向类似,将指定的内容重定向进指定的命令或操作中。

输出重定向用法
| 类型 | 符号 | 作用 |
|---|---|---|
| 标准输出重定向 | 命令 > 文件 | 以覆盖的方式,把命令的正确输出到指定的文件或设备当中。 |
| 标准输出重定向 | 命令 >> 文件 | 以追加的方式,把命令的正确输出到指定的文件或设备当中。 |
| 标准错误输出重定向 | 错误命令 2> 文件 | 以覆盖的方式,把命令的错误输出到指定的文件或设备当中。 |
| 标准错误输出重定向 | 错误命令 2>> 文件 | 以追加的方式,把命令的错误输出到指定的文件或设备当中。 |
-
> 或 1>:
- 正确覆盖输出:将命令的标准输出(正确的输出结果)重定向到一个文件中,如果该文件已经存在,则会覆盖原有内容。
-
>> 或 1>>:
- 正确追加输出:将命令的标准输出追加到指定的文件中,如果文件已经存在,则在文件末尾追加内容,不覆盖原有内容。

-
2>:
- 错误覆盖输出:将命令的标准错误输出(错误信息)重定向到一个文件中,如果该文件已经存在,则会覆盖原有内容。
-
2>>:
- 错误追加输出:将命令的标准错误输出追加到指定的文件中,如果文件已经存在,则在文件末尾追加错误内容,不覆盖原有内容。

- 如果重定向的目标文件或I/O文件不存在,会自动创建该文件。
正确输出和错误输出同时保存:
| 符号 | 作用 |
|---|---|
| 命令 > 文件 2>&1 | 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中。 |
| 命令 >> 文件 2>&1 | 以追加的方式,把正确输出和错误输出都保存到同一个文件当中。 |
| 命令 &> 文件 | 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中。 |
| 命令 &>> 文件 | 以追加的方式,把正确输出和错误输出都保存到同一个文件当中。 |
| 命令 >> 文件 1 2>> 文件 2 | 把正确的输出追加到文件1中,把错误的输出追加到文件2中。 |



Linux 系统中的 /dev/null 被称为“黑洞”,它会吞掉任何写入的数据。任何信息重定向到这个设备文件后,都会被永久丢弃,仿佛从未存在过。同时,从它读取数据时,则总是返回 EOF(文件结束符)。这种机制常用于丢弃不需要的输出,确保不影响程序运行。
与黑洞相反,Linux 中的 /dev/zero 可以看作“白洞”,它会源源不断地产生零字节(0 值),任何程序读取它时,都会获得一串连续的零字节。/dev/zero 常用于创建初始化为零的文件或内存区域,帮助生成空白数据块以便系统或应用程序使用。
输入重定向用法
基础用法
命令 < 文件

高级用法
实现标准输入重定向的符号
<< EOF EOF 可以生成文件


bc ---交互式计算器
- 解释: bc 是一个用于数学计算的命令行工具,提供了精确的计算功能,支持任意精度的数字和数学运算。它可以在命令行中进行交互式计算,也可以从文件或标准输入读取表达式进行计算。

bc<<< +字符或字符串
不能是命令
- 解释: 使用 bc 命令时,<<< 操作符可以用来将简单的数学表达式(如加法)直接传递给 bc。
seq
是单词sequence序列的缩写,其功能就是输出序列化的一串整数
- 解释: seq 命令是 Linux 中用于生成数字序列的工具。可以通过指定起始值、终止值和可选的步长来输出连续的整数。
seq -s+ 加法
- 解释: seq -s+ 使用 -s 选项来指定输出的分隔符为 +,这意味着输出的数字之间会用 + 符号连接。
seq -s- 减法
- 解释: seq -s- 指定输出的分隔符为 -,用于将生成的数字用 - 连接起来。

set -C 和 set +C 是用于控制 Bash Shell 中的文件重定向行为的选项。
- set -C:禁止I/O 覆盖重定向操作
- set +C:开启I/O 覆盖重定向操作

echo
- 格式:echo [option] 内容
- 选项:
- -n :取消输出内容后的换行符

- \-e :允许后面输出内容进行转义,使用特殊字符
- \n :强行换行

- \t :插入制表位




浙公网安备 33010602011771号