linux 输入、输出重定向的概念和用法详解(Day01)
介绍重定向之前先来介绍几个重要的概念:(笔记不易---- 转载请注明出处)
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.什么是输入重定向
输入重定向:是指不使用系统提供的标准输入端口,而进行重新的指定。换言之,输入重定向就是不使用标准输入端口输入文件,而是使用指定的文件作为标准输入设备。(重定向简单理解就是使用 “<”符来修改标准输入设备)
比如,默认情况下,cat命令会接受默认标准输入设备键盘的输入,并显示到控制台,但是可以通过“<”符号修改标准输入设备,指定文件作为标准输入设备,那么cat命令将指定的文件作为输入设备,并将文件中的内容读取并显示到控制台。
输入重定向 | ||
类型 | 符号(语法) | 功能 |
标准输入 | 命令<文件1 | 命令把文件1的内容作为标准输入设备 |
标识符限定输入 | 命令<<标识符 | 命令把标准输入中读入内容,直到遇到“标识符”分解符为止 |
输入输出重定向(同时使用) | 命令< 文件1 >文件2 | 命令把文件1的内容作为标准输入,把文件2作为标准输出。 |
#cat /etc/passwd 它是以键盘作为标准输入设备,并将文件内容显示到控制台
语法1: # cat < /etc/passwd 而输入重定向,cat < /etc/passwd ,它是将passwd文件指定为输入设备,并将内容显示到控制台。
语法2.# cat << delimiter
# cat < <delimiter (这个字符串字符是任意的,没有任何含义)
它的作用是将这个 delimiter 字符之前的内容(document) 作为输入传递给 cat
碰到delimiter将自动结束输入,并将输入的内容显示出来;
语法3:# cat /etc/passwd < a > b.txt :将文件passwdt输入重定向到a,输出重定向到b.txt文件
4.输出重定向:(通俗的讲,重定向输出就是把要输出的文件信息写入到一个文件中去,而不是将要输出的文件信息输出到控制台(显示屏))
在linux中,默认的标准输出设备是控制台(或称为显示器),用户输出的信息默认情况下都会显示到控制台,
比如:cat /etc/passwd ,它是使用控制台显示内容。 默认情况下,标准输出设备是控制台,所以cat命令将文件信息输出到控制台,但是,我们可以使用“>”修饰符修改标准输出设备,使用指定的文件做为标准输出设备,来显示文件。输出重定向的概念就出现了。
4.1什么是输出重定向?
输出重定向就是指不使用linux默认的标准输出设备显示信息,而是指定某个文件做为标准输出设备来存储文件信息。
(以覆盖的方式把指定文件的信息输出到指定文件)
例如
cat /etc/passwd >a 表示,把a作为标准输出设备,并把文件信息输入到文件a中去,在使用cat a命令将信息在控制台中显示出来。
注意,如果文件a中有内容,此时内容被覆盖掉(清除掉)。
输出重定向的作用:
我们不想输出在终端上,想导出一个文件,方便以后查看,便需要输出重定向了。> 的作用就是把原本要输出在终端上的信息重定向导出到指定的地方。
输出重定向的几种用法
1.
2.使用重定向将查询的文件信息发送到其它控制台。
3.使用重定向将查询的文件信息发送到其它控制台。
其它控制台受到的消息
4.利用输出重定向清空文件、创建新文件:
当a文件中有内容,当执行 cat >a命令后,进入编辑模式,我们
输入什么内容,都会保存进去,使用ctrl+D命令结束,但如果文件a中有内容则会覆盖掉原来的内容
如果a是一个不存在的文件,则结束命令后悔添加一个名称为a的文件,刚才输入的内容会保存在这个文件中。
另一种情况,a文件存在,a文件中有内容,执行 cat >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表示标准错误输出。
做个总结:一下内容为截图:来源于第三方网站,如有侵权,请联系删除
linux 输入、输出重定向的概念和用法详解(Day01)相关推荐
- linux管道命令详解,Linux系统中的管道命令的用法详解
Linux系统中管道命令是linux系统的一个强大之处.下面由学习啦小编为大家整理了Linux系统中的管道命令的用法详解的相关知识,希望对大家有帮助! Linux系统中的管道命令的用法详解 管道命令操 ...
- linux中替换命令详解,linux中sed命令字符串替换的用法详解
Linux系统中sed命令可以将字符串批量替换,省去了很多麻烦,下面由学习啦小编为大家整理了linux系统中sed命令字符串替换的用法详解,希望对大家有帮助! linux中sed命令字符串替换的用法详 ...
- linux 移动剪切命令,Linux中vi的复制命令的用法详解
在Linux系统中,使用VI编辑的时候经常用到的操作就是复制粘贴,那么下面由学习啦小编为大家整理了linux中vi的复制命令的用法详解的相关知识,希望对大家有帮助! Linux中vi的复制命令的用法详 ...
- linux为什么用tar压缩,linux下tar压缩和解压命令用法详解
linux下tar压缩和解压命令用法详解 2017-03-25 14:06 分享人:老牛 将/usr/local/test目录下所有文件仅打包,不压缩到 /usr/local/auto_bak/目下 ...
- python装饰器详解-Python装饰器基础概念与用法详解
本文实例讲述了Python装饰器基础概念与用法.分享给大家供大家参考,具体如下: 装饰器基础 前面快速介绍了装饰器的语法,在这里,我们将深入装饰器内部工作机制,更详细更系统地介绍装饰器的内容,并学习自 ...
- Linux输入/输出重定向
重定向操作符--">".">>"."<"."<<" 在Linux系统中 默认的输入设 ...
- 【Golang画图】2D渲染绘图库gg的概念与用法详解(一)
文章目录 概述 基本使用 基本概念 基本底层操作 具体操作: 示例1:画圆 示例2:画带边框的矩形 示例3:贴图片文件 示例4:贴文字 示例5:半透明+缩放贴图 备注 概述 最近的项目中需要用代码来手 ...
- mysql 创建游标报错,MySQL游标概念与用法详解
本文实例讲述了mysql游标概念与用法.分享给大家供大家参考,具体如下: 1.游标的概念(cursor) 一条sql,对应n条资源,取出资源的接口,就是游标,沿着游标,可以一次取出1行.如果开发过安卓 ...
- mysql游标_MySQL游标概念与用法详解
本文实例讲述了MySQL游标概念与用法.分享给大家供大家参考,具体如下: 1.游标的概念(Cursor) 一条sql,对应N条资源,取出资源的接口,就是游标,沿着游标,可以一次取出1行.如果开发过安卓 ...
最新文章
- 算法时间复杂度求解法【详细过程说明】
- 重磅!新一轮“双一流”,有重大变化!
- 常见的清除浮动的五种解决办法
- 【转】持续交付和DevOps的前世今生
- 两台windows服务器----SVN的迁移
- The method getTextContent() is undefined for the type Node 错误解决办法
- SnapKit 约束创建过程
- 再说invoke和begininvoke
- 【权限设计】如何以“权限”为单位的进行权限设计(二)
- linux下编译geos,linux下编译GDAL3.x(集成Proj和Geos等)
- 互联网裁员为什么专捡大于35的裁?
- 微信小程序系列4——传值详解
- 远程桌面端口映射如何设置
- 移动cmtds设置服务器无响应,总感觉手机的4G信号变差了?跟我这样设置,让你的信号瞬间满格...
- 如何将AD类型的封装导成Allegro库中的封装
- 云端原生数据泄露事件解析
- 质数乘积 -LintCode
- RecycleView 二级列表(多级列表)
- 云原生运行时的下一个五年
- 柔性作业车间调度问题研究-思考