重定向,管道符,黑洞文件

Posted sunlizhao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重定向,管道符,黑洞文件相关的知识,希望对你有一定的参考价值。

输出重定向:

将命令的正常输出结果保存到指定的文件,而不是直接显示到屏幕上

语法:

  • 如果文件不存在,则会创建
 > 文件名
表示将标准输出的内容,覆盖写到后面的文件中
 >> 文件名
表示将标准输出的内容,追加写到后面的文件中

 

 

将内核的版本信息追加到1.txt文件中

 

 

输入重定向

将命令中接受输入的路径由默认的键盘改为其他文件

 

 

 EOF

本意是End Of File, 表示到了文件末尾,通常与 << 结合使用, 可以理解为分界符
  • 标记符可以使EOF,也可以是ccc,ddd

 cat > 1.txt << ccc
 之后可以输入内容,直到输入ccc,结束输入

  • 可以看到,文件名前面是 > 是覆盖写入,  >> 是追加写入

 

错误重定向

将命令执行过程中出现的错误信息(选项或参数错误)保存到指定的文件,而不是直接显示到显示器
  • 错误信息保存到文件
操作符
    错误重定向符号: 2>
    标准输入: 1< 或者简写 <
    标准输出: 0> 或者简写 >
  • 2指的是标准错误输出的文件描述符(标准的输入和输出省略了1和0)
在实际应用中,错误重定向可以用来收集执行的错误信息, 为排错提供依据
对于shell脚本还可以将无关紧要的错误信息重定向到空文件/dev/null,保持脚本输出的简介

 

将错误显示的内容和 正确显示的内容分开

接下来查看两个目录

还可以进行简写,将正确的信息 和 错误的信息追加到两个文件

 

 

 

null黑洞, 

把/dev/null看做黑洞,所有写入他的内容都会永远丢失,而尝试从它哪里读取内容则会什么都不会读到
然而/dev/null对命令行和脚本非常有用

 

 zeor空文件

在类UNIX操作系统中,/dev/zero是一个特别的文件,当你读他的时候,他会提供无限的空字符
典型的用法就是产生一个特定大小的空白文件
使用dd命令产生一个50M的文件
参数
if 代表输入文件,如果不指定if,默认就会从stdin中读取输入
of 代表输出文件,如果不指定of,默认就会将stdout作为默认输出
bs 代表字节为单位的快大小
count 代表被复制的块数

 

能查看到文件的大小

 

但是不能显示文件的信息,因为没有内容

 

 

&> 和 >&符号

  • &表示等于的意思
1>&2 将标准输出重定向到标准错误
2>&1 将标准错误重定向到标准输出

 上图的no.txt文件中多了两个错误文件,是因为追加到文件的

 

将正确结果和错误结果放到一个文件中(简写)

 

 互动:工作中shell脚本中的 >/dev/null 2>&1 是什么意思

将标准输出和错误输出全部重定向到/dev/null中,也就是将产生的所有信息丢弃

 

 

 

管道 | 的使用

  • 管道命令只处理前一个命令正确输出,不处理错误输出
  • 管道右面的命令,必须能够接受标准输入流才行
  • 关道符可以吧两条命令连起来,可以链接多个命令使用
ps -aux | grep sshd

 

 

 tee

  • 读取标准输入的数据,并将其内容输出成文件
-a 内容追加到给定的文件   而非覆盖
磁盘使用信息
df -h            

将磁盘使用的信息写入到文件
df -h | tee disk.log

将磁盘使用的信息追加写入到文件
df -h | tee -a disk.log
  

 

以上是关于重定向,管道符,黑洞文件的主要内容,如果未能解决你的问题,请参考以下文章

管道符重定向与环境变量

管道符重定向和环境变量

Linux学习之管道符和重定向详解

Linux管道符重定向与环境变量

Linux管道符和重定向与环境变量

第三章 重定向通配符管道符转义符环境变量