Linux | 您所在的位置:网站首页 › cat结束输入 › Linux |
1.linux 的标准输入与输出 linux标准输入设备指的是键盘,标准输出设备指的是显示器,标准错误输出指的是显示器。 设备 设备名 文件描述符 类型 键盘 /dev/stdin 0 标准输入 显示器 /dev/stdout 1 标准输出 显示器 /dev/stderr 2 标准错误输出2.Linux 文件描述符 文件描述符可以理解为 Linux 系统为文件分配的一个数字,范围是 0-3 ,用户也可以自定义文件描述符,但是自定文件描述符不在这里的讨论范围 一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件: 标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。 标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。 标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。 3.什么是输入重定向输入重定向:是指不使用系统提供的标准输入端口,而进行重新的指定。换言之,输入重定向就是不使用标准输入端口输入文件,而是使用指定的文件作为标准输入设备。(重定向简单理解就是使用 “a命令后没有添加任何能容,而是直接按ctrl+d结束命令,此时 a文件中的内容会自动清空。 5.利用重定向导出一个文件 那么当我们不想输出在终端上,想导出一个文件,方便以后查看,便需要输出重定向了。> 的作用就是把原本要输出在终端上的信息重定向导出到指定的地方。
如果文件a.txt已近存在,则会将里面的内容覆盖掉。 如果不存在,将会创建一个a.txt文件,并将内容保存在这个文件中去。 使用 cat a.txt命令就可以查询到里面的内容了 6.追加内容 使用重定向输出的时候,如果原文家中有内容,则会被覆盖,现实中有时候不想覆盖其中的文件, 在使用重定向输出的使用可以使用">>",可以再源文件中追加内容 例如:
7.禁止覆盖 如果在工作中,我们想要在文件中追加内容时>>,却不小心只写入> 就执行了,那么我们的文件被覆盖了,因此就有了,禁止覆盖的命令,set –C 划蓝线的地方:明确表示不能覆盖。
当然我们也可以解除这种禁止 set +C ,很好理解禁止 –C ,解除+C
4.2标准错误输出重定向: stderr描述符用来处理错误信息,Bash Shell会将脚本运行过程中的错误信息输出到stderr,默认情况下stderr与stdout描述符都是输出到控制台
上面的例子显示,以列表的方式显示b.txt 和errfile文件的信息并重定向文件信息到b.txt文件中,当前目录下不存在errfle文件,所以在控制台显示了警告信息,注意到这些警告信息没有输出到文件中而是控制台因为我们只重定向了标准输出到文件没有重定向标准错误输出,所以警告信息输出到了控制台。标准错误输出和标准输出默认情况下都是将信息输出到控制台。另外,重定向标准输出不会重定向表准错误输出。 标准错误输出重定向: 错误信息默认输出到控制台,也可以重定向到其他设备,从上面的表中可以看到错误输出描述符是2,只要在重定向符>之前加上一个2(如:2>),Bash Shell会将错误信息重定向到指定的设备,如下:
这个例子中将错误信息重定向到文件而标准输出还是默认的输出设备控制台. 如果同时重定向错误信息和重定向标准输出到文件必须使用两个重定向符号,并且必须在重定向符前加上相应的文件描述符,如下
此时errfile 文件是不存在的,错误文件信息被重定向输出到b.txt文件。而a.txt文件是事先存在的,被重定向到b2.txt文件 使用cat 查看,b.txt 文件存储的时错误信息,cat b2.txt 查看,是重定向输出的文件 命令 2>>文件1 1>>文件2 以追加方式,把命令的正确输出保存在文件2中;以追加的方式,把命令的错误输出内容保存到文件
1中
如果想将标准输出和错误信息重定向到一个日志文件,Bash Shell提供了&符,就不需要使用两个重定向符了,如下: 使用两个重定向符将标准输出和错误信息重定向到同一个文件中去:
使用&符将标准输出和错误信息重定向到同一个文件中去:
&>file是一种特殊的用法,也可以写成>&file,二者的意思完全相同,
也可以这样写
2>&1就是将标准错误输出重定向到与标准输出同一个文件中保存 &表示全部文件,文件不管对错,1表示标准输出文件,2表示标准错误输出。
做个总结:一下内容为截图:来源于第三方网站,如有侵权,请联系删除
参考: [1] linux 输入、输出重定向的概念和用法详解(Day01)
|
CopyRight 2018-2019 实验室设备网 版权所有 |