自动化运维[shell编程]——————输出重定向和输入重定向wc

本文详细介绍了Linux Shell编程中的输入输出重定向,特别是输出重定向的不同方式,包括`>`、`>>`、`2>`、`2>>`等,以及如何同时处理正确输出和错误输出。此外,还探讨了输入重定向`<`和`<<`的使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.输入输出重定向

1.1 标准输入输出

如果从字面意思来说,就是计算机的输入设备和输出设备。

  • 计算机的最基本输入就是键盘、鼠标、写字板等,标准的输入设备就是键盘。最早的时候其他输入设备都不存在,只有键盘着一种输入设备,所以键盘是标准输入设备
  • 输出设备有显示器、打印机、投影仪等,标准输出设备就是显示器

linux中艘由的内容都是文件,键盘和显示器当然也是文件,他的文件名:

设备设备文件名文件描述符类型
键盘/dev/stdin0标准输入
显示器/dev/stdout1标准输出
显示器/dev/stderr2标准错误输出

在这里插入图片描述

linux把输出设备分了两个,一个是正确输出,一个显示错误输出。但是这个设备文件名并不太好记,所以给他们起了一个代号(文件描述符)

  • 0:代表键盘,标准输入
  • 1:代表标准输出
  • 2:代表标准错误输出

1.2 输出重定向

输出本来是应该由我输入命令,他应该输出到屏幕上。

现在我不让他输出到屏幕,改变输出方向,让他输出到文件当中,就叫输出重定向

通过日志我们可以这样理解,将操作的命令结果保存在一个文件中,方便管理员查看。其实这就是输出重定向的作用。

类型符号作用
标准输出重定向 命令 > 文件 以覆盖的方式,把命令的正确输出保存在指定的文件或设备中
命令>>文件以追加的方式,把命令的正确输出保存在指定的文件或设备中
标准错误输出重定向错误命令 2> 文件以覆盖的方式,把命令的错误输出保存在指定的文件或设备中
错误命令 2>> 文件以追加的方式,把命令的错误输出保存在指定的文件或设备中

注意不是任何命令都可以用输出重定向,这个命令必须由输出才可以使用输出重定向。比如cd就没有输出结果。

1.2.1 >

测试>的作用:

在这里插入图片描述
由实验看出如果保存的文件不存在,先建立文件(abc)在执行命令ls,最后保存进文件(abc),因为abc文件中有自己的名称。

再次执行一次date命令保存结果:
在这里插入图片描述由实验的出以下结论:

  • >保存的内容会覆盖之前的内容
  • 当保存的文件不存在的时候,先建立文件,再执行命令,最后覆盖保存

1.2.2 >>

测试>>的作用:
在这里插入图片描述由实验的出以下结论:

  • >保存的内容会追加之前的内容
  • 当保存的文件不存在的时候,先建立文件,再执行命令,最后追加保存

1.2.3 2>

测试2>的作用:
在这里插入图片描述在linux中错误是用2来代表,如果要再文件中保存错误的输出需要在>前增加一个2
在这里插入图片描述
再执行一个错误命令保存:
在这里插入图片描述
由实验的出以下结论:

  • 2代表错误,错误的命令结果只有用2>会覆盖保存。
  • 2>保存的内容会覆盖之前的内容
  • 当保存的文件不存在的时候,先建立文件,再执行命令,最后覆盖保存

1.2.4 2>>

测试2>>的作用:

在这里插入图片描述
在linux中错误是用2来代表,如果要再文件中保存错误的输出需要在>>前增加一个2

由实验的出以下结论:

  • 2代表错误,错误的命令结果只有用2>>会追加保存。
  • 2>>保存的内容会追加之前的内容
  • 当保存的文件不存在的时候,先建立文件,再执行命令,最后追加保存

之前的几种保存命令结果的方式都不同,是要人为的自己确定命令到底是正确的还是错误的,这就非常不方便了

所以我们有了以下几种方式:

类型符号作用
正确输出和错误输出同时保存 命令 > 文件 2>&1 以覆盖的方式,把命令的正确和错误输出都保存在指定的文件或设备中
命令>>文件 2>&1以追加的方式,把命令的正确和错误输出都保存在指定的文件或设备中
命令 &> 文件以覆盖的方式,把命令的正确和错误输出都保存在指定的文件或设备中
命令 &>> 文件以追加的方式,把命令的正确和错误输出都保存在指定的文件或设备中
命令 >> 文件1 2>> 文件2把正确的输出追加到文件1中,把错误的输出追加到文件2中

1.2.5 命令 > 文件 2>&1

这条命令 > 文件 2>&1也分开解释:

  • 2>&1错误输出保存到正确输出
  • 命令 > 文件然后把正确输出和错误输出全都覆盖到文件当中

在这里插入图片描述
最后是追加还是覆盖由命令 > 文件 2>&1中的>决定。

1.2.6 命令>>文件 2>&1

这条命令 > 文件 2>&1也分开解释:

  • 2>&1错误输出保存到正确输出
  • 命令 > 文件然后把正确输出和错误输出全都追加到文件当中

在这里插入图片描述最后是追加还是覆盖由命令 >> 文件 2>&1中的>>决定。

1.2.7 命令 &> 文件

这条命令中的&是表示不论是1还是2都覆盖保存在文件当中

在这里插入图片描述
这里我们有一个固定用法,文件/dev/null,这个文件固定为空,可以称为垃圾桶
在这里插入图片描述
相当于不保存任何结果。后面我们在编辑脚本的时候,只希望他执行而不要有任何的执行结果显示,我们就可以使用这个方式完成干净里所的脚本编写。

1.2.7 命令 &>> 文件

这条命令中的&是表示不论是1还是2都追加保存在文件当中

在这里插入图片描述

1.2.9 命令 >> 文件1 2>> 文件2

将命令执行的正确结果追加保存在文件1中,将错误结果追加保存在文件2中

输入一个正确命令:

在这里插入图片描述
输入一个错误命令:

在这里插入图片描述

1.3 输入重定向

1.3.1 命令wc

输入重定向一般只在给源码包打补丁的的情况下使用:

wc [选项][文件名]

-c : 统计字节数
-w : 统计单词数
-l : 统计行数

在这里插入图片描述这里统计字符时也要统计上回车符。

如果加了选项就只统计相应的一个而不是三个都统计。

1.3.2 命令<文件

把文件作为命令的输入:

在这里插入图片描述

1.3.3 <<

使用<<的方式如下:

命令 << 标记
内容
内容
内容
标记

是命令对内容作出结果:

在这里插入图片描述并不是以ctrl+D作为结束而时使用标记作为结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值