linux输⼊、输出重定向的概念和⽤法详解(Day01)
介绍重定向之前先来介绍⼏个重要的概念:(笔记不易---- 转载请注明出处)
1.linux 的标准输⼊与输出
linux标准输⼊设备指的是键盘,标准输出设备指的是显⽰器,标准错误输出指的是显⽰器。
设备设备名⽂件描述符类型linux重定向
键盘/dev/stdin0标准输⼊
显⽰器/dev/stdout1标准输出
显⽰器/dev/stderr2标准错误输出
在解释什么是重定向之前,再来说说什么是⽂件描述符
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⽂件,并将内容保存在这个⽂件中去。
使⽤ 命令就可以查询到⾥⾯的内容了
6.追加内容
使⽤重定向输出的时候,如果原⽂家中有内容,则会被覆盖,现实中有时候不想覆盖其中的⽂件,
在使⽤重定向输出的使⽤可以使⽤">>",可以再源⽂件中追加内容
例如:
7.禁⽌覆盖
如果在⼯作中,我们想要在⽂件中追加内容时>>,却不⼩⼼只写⼊> 就执⾏了,那么我们的⽂件被覆盖了,因此就有了,禁⽌覆盖的命令,set –C
划蓝线的地⽅:明确表⽰不能覆盖。
当然我们也可以解除这种禁⽌ set +C ,很好理解禁⽌ –C ,解除+C
4.2标准错误输出重定向:
stderr描述符⽤来处理错误信息,Bash Shell会将脚本运⾏过程中的错误信息输出到stderr,默认情况下stderr与stdout描述符都是输出到控制台
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论