>[success] # Linux 输入和输出 1. `linux `中标准的**输入设备默认指的是键盘**,**标准的输出设备默认指的是显示器** * **输入重定向**:指的是重新指定设备来代替键盘作为新的输入设备; * **输出重定向**:指的是重新指定设备来代替显示器作为新的输出设备。 2. 举个例子输入`cat a.txt` 将**a.txt 文件内容输出到屏幕上**,使用**重定向**的形式将它输出的内容展示的位置改变不在是屏幕上而是其他位置 | 设备 | 设备文件名 | 文件描述符 | 类型 | | --- | --- | --- | --- | | 键盘 | /dev/stdin | 0 | 标准输入 | | 显示器 | /dev/stdout | 1 | 标准输出 | | 显示器 | /dev/stderr | 2 | 标准错误输出 | >[success] # 重定向 1. **重定向** -- 将数据转到其他地方,重定向模式分为三种`输出`、`输入`、`标准错误输出` * **标准输入 (stdin)**: 代码为`0`,使用 `< `或 `<<` * **标准输出 (stdout)**: 代码为`1`,使用 `>` 或 `>>`; * **标准错误输出(stderr)**: 代码为`2`,使用 `2>` 或 `2>>` 2. 举个例子例如`echo aaa`意思是将 **aaa 这个字符打印到终端显示**,配合重向,`echo aaa >aaa.txt` 将原本要打印到控制台的内容重定向到`aaa.txt` 也就是将**aaa 写入到文件中** 或者 `cat aa.txt > bb.txt `则表示将**aa.txt 内容写入到bb.txt中** * `>`-- 输出重定向到一个文件或设备 覆盖原来的文件,将左侧命令的结果,覆盖写入到符号右侧指定的文件中 * `>>` -- 输出重定向到一个文件或设备 追加原来的文件,将左侧命令的结果,追加写入到符号右侧指定的文件中 3. `echo 123 1>bb.txt` 将原本输入控制台上的123 写入到 bb.txt 文件,注意了 `1` 是输入正确的结果输出写入到 `bb.txt` 文件内。当然`1`正确可以省略,但 是如果想将错误写入需要用 `2` 来标记  | 类型 | 符号 | 作用 | | --- | --- | --- | | 标准输出重定向 | 命令 > 文件 | 以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中 | | 标准输出重定向 | 命令 >> 文件 | 以追加的方式,把命令的正确输出输出到指定的文件或设备当中 | | 错误输出重定向 | 命令>文件 | 以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中 | | 错误输出重定向 | 命令>>文件 | 以追加的方式,把命令的错误输出输出到指定的文件或设备当中 | | 正确输出和错误输出同时保存 | 命令>文件 2>&1 | 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中 | | 正确输出和错误输出同时保存 | 命令>文件 2>>&1 | 以追加的方式,把正确输出和错误输出都保存到同一个文件当中 | | 正确输出和错误输出同时保存 | 命令&>文件 | 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中 | | 正确输出和错误输出同时保存 | 命令&>>文件 | 以追加的方式,把正确输出和错误输出都保存到同一个文件当中 | | 正确输出和错误输出同时保存 | 命令>>文件1 2>文件2 | 以覆盖的方式,正确的输出追加到文件1中,把错误输出追加到文件2中 | [更多使用效果链接](https://www.linuxprobe.com/linux-eof-diy.html) >[danger] ##### 快速创建文件 创建文件除了`touch `也可以使用**重定向符合例如 `> aa.txt `创建aa.txt 文件** >[danger] ##### 参考 [链接](https://www.cnblogs.com/afeige/p/10897103.html) [链接](http://lnmp.ailinux.net/xargs)