一.学习的内容
先简要介绍一下什么是重定向?重定向主要可以分为两类:输入重定向、输出重定向。输入重定向是指把文件导入到命令中,而输出重定向则是指把原本要输到屏幕上的数据信息写入到文件中。
相较于输入重定向,我们使用输出重定向的频率更高,所以又将输出重定向分为了:标准输出重定向和错误输出重定向技术,以及覆盖写入和追加写入两种模式。
标准输入重定向(文件描述符为 0):默认从键盘输入,也可从其他文件或命令中输入
标准输出重定向(文件描述符为 1):默认输出到屏幕
错误输出重定向(文件描述符为 2):默认输出到屏幕
对于重定向中的标准输出模式,可以省略文件描述符1 不写;而错误输出模式的文件描述符 2是必须要写的。
对于输入重定向来讲,用到的符号和作用如下表所示:
符号 | 作用 |
命令 < 文件 | 将文件作为命令的标准输入 |
命令 << 分界符 | 从标准输入中读入,直到遇见分界符才停止 |
命令 <文件1> 文件2 | 将文件1作为命令的输入并把输出写入文件2 |
对于输出重定向来讲,用到的符号和作用如下表所示:
符号 | 作用 |
命令 > 文件 | 将标准输出重定向到一个文件中(清除原有文件的数据) |
命令 2> 文件 | 将错误输出重定向到一个文件中(清除原有文件的数据) |
命令 >> 文件 | 将标准输出重定向到一个文件中(追加到原有内容后面) |
命令 2>> 文件 | 将错误输出重定向到一个文件中(追加到原有内容后面) |
命令 &>> 文件 | 将标准和错误输出都追加到原有内容后面 |
1、输出重定向
如下图一所示,当执行 ls 命令时,若文件存在,则应输出文件的一些相关信息,这是该命令的标准输出信息;若文件不存在,执行完命令后显示报错信息 ,这是该命令的错误输出信息。
![](https://i-blog.csdnimg.cn/blog_migrate/ba2ef0ce07c0a85d4f874c5bff7c4f13.png)
如下图所示,使用 cat 命令将标准输出重定向到 readme 文件中,然后再使用 cat 命令查看 readme 文件。
![](https://i-blog.csdnimg.cn/blog_migrate/2e8033b21017779d221eb099154ac72e.png)
如下图所示,对比 覆盖模式和追加模式的区别。
![](https://i-blog.csdnimg.cn/blog_migrate/71d4b3b71af0e1a8d4eaaf45d0f9ad4d.png)
对比标准输出重定向、错误输出重定向的区别,如图4所示。
![](https://i-blog.csdnimg.cn/blog_migrate/b7d13a255b6485633d2795d991932e21.png)
如下图所示,把命令的报错信息写入到文件。
![](https://i-blog.csdnimg.cn/blog_migrate/98c246dc5b7e17f10d84c861eb58aa30.png)
把命令的标准输出信息和错误输出信息都追加到文件里,如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/056edc5e92ff663d64212cab9bd20893.png)
2、输入重定向
关于输入重定向使用频率较低。输入重定向的作用是把文件直接导入到命令中。
如下图所示,可以发现使用输入重定向时的输出,和不使用输入重定向还是有微小的区别的。
![](https://i-blog.csdnimg.cn/blog_migrate/b21db969183426eb37d761e011aaf53e.png)
二.本次学习遇到的问题
1、RHEL8中文件的命名规则
2、标准输入重定向 和 错误输入重定向 有什么区别?
三、问题的答案及解决办法
1、避免特殊字符:文件名应避免使用特殊字符,如空格、制表符、斜杠等,以确保在命令行或脚本中能够正确引用这些文件。使用下划线或连字符:通常建议使用下划线(_)或连字符(-)来分隔单词,以增强文件名的可读性。例如,my_file.txt
或 my-file.txt
。
2、顾名思义,在使用标准输出重定向(> 、>>)时,只有命令的输出为标准信息时,才会写入到文件中;而使用错误输出重定向(2> 、 2>>)时,只有命令的输出为错误信息时,才会写入到文件中。