linux输入输出重定向

概念

文件描述符(file descriptor):是内核为了高效管理已被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I/O操作的系统调用都通过文件描述符。
重定向: 重定向就是不适用系统的标准输入端口,标准输出端口和标准错误输出端口,而进行重新的指定,所以重定向分为输入、输出和错误重定向,通常情况下重定向到一个文件。
标准输入(stdout):标准输入是指输入至程序的数据(通常是文件)。程序要求以读(read)操作来传输数据。并非所有程序都要求输入。如dir或ls程序(显示一个目录中的文件名)运行时不用任何输入。除非重定向,输入是默认由终端(键盘)获取的。
标准输出(stdout):标准输出是指程序写输出数据的流。程序要求数据传输使用写的运算。并非所有程序都要求输出。如mv或ren程序在成功完成时是沉默的。除非重定向,输出默认方式为终端(显示屏)。
标准错误输出(stderr):标准错误输出是另一输出流,用于输出错误消息或诊断。它独立于标准输出,且与标准输出可以分别被重定向。除非重定向,输出默认方式为终端(显示屏)。

    在UNIX/Linux平台上,对于标准输入,标准输出,标准错误输出也对应了三个文件描述符。如下

文件描述符类型STDI/O默认设备
0标准输入STDIN终端(键盘)
1标准输出STDOUT终端(显示屏)
2标准错误输出STDERR终端(显示屏)

重定向符号

重定向符号含义使用方法解释示例跳转
<输入重定向,单词输入command1 < filecommand命令操作内容会从file文件中读取,替代了键盘输入示例
<<输入重定向,交互式多是输入command1 << flag将开始标记flag和结束标记flag之间的内容作为输入示例
>输出重定向,覆盖式command > file将输出重定向到file示例
>>输出重定向,追加式command >> file将输出以追加的方式重定向到file示例
2>错误输出重定向,覆盖式command 2> file将错误输出重定向到file示例
2>错误输出重定向,追加式command 2> file将错误输出以追加的方式重定向到file示例
&>输出与错误输出重定向,覆盖式command &> file输出与错误输出重定向到file示例
&>>输出与错误输出重定向,追加式command &>> file输出与错误输出以追加的方式重定向到file示例

重定向示例

command1 < file
tr 'a-z' 'A-Z' < file
#将file文件“hello world!”内容输入重定向至tr命令改变大小写

在这里插入图片描述

command1 << flag
tr 'a-z' 'A-Z' << EOF
>hello world
>good moring
>EOF
#将EOF标记之间多次输入的内容,全部输入重定向至tr命令改变大小写

在这里插入图片描述

command > file
echo byebye > file
#将byebye输出重定向至文件file,file文件内容hello将被覆盖

在这里插入图片描述

command >> file
echo see you tomorrow >> file
#将see you tomorrow输出重定向至文件file,将在file文件内容后面追加内容

在这里插入图片描述

command 2> file
su - user
#不使用root用户
find /etc/ -name passwd 2> file
#find命令查找passwd文件时,因为权限问题,有成功的也有失败的,将错误输出在file文件内,覆盖原来内容

在这里插入图片描述

command 2>> file
su - user
#不使用root用户
find /etc/ -name passwd 2>> file
#find命令查找passwd文件时,因为权限问题,有成功的也有失败的,将错误输出在file文件内,追加在原来内容之后

在这里插入图片描述

command &> file
su - user
#不使用root用户
find /etc/ -name passwd &> file
#find命令查找passwd文件时,因为权限问题,有成功的也有失败的,将所有输出重定向在file文件内,覆盖原来内容

在这里插入图片描述

command &>> file
su - user
#不使用root用户
find /etc/ -name passwd &>> file
#find命令查找passwd文件时,因为权限问题,有成功的也有失败的,将所有输出重定向在file文件内,追加在原来内容之后

在这里插入图片描述

其他相关命令

tee命令
用于将数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的stdin。
简单的说就是把数据重定向到给定文件和屏幕上。

stdout
tee filename
filename
stdin
ls |tee filename
>将目录内容输出在屏幕上的同时输出在filename的文件中

在这里插入图片描述

ls |tee filename|wc -l
>将目录内容输出重定向在filename的文件中,将备份输出重定向在stdin,然后将stdin输入到wc命令中使用

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值