linux的标准输入输出

1.文件描述符

  • 文件描述符是一个简单的正整数,用以标明每一个被进程所打开的文件和socket。
  • 最前面的三个文件描述符(0,1,2)分别与标准输入(stdin),标准输出(stdout)和标准错误(stderr)对应
文件描述符缩写描述
0STDIN标准输入
1STDOUT标准输出
2STDERR标准错误输出

Shell会自动为我们打开和关闭0、1、2这三个文件描述符,我们不需要显式地打开或关闭它们。标准输入是命令的输入,默认指向键盘;标准输出是命令的输出,默认指向屏幕;标准错误是命令错误信息的输出,默认指向屏幕。

2.重定向的使用规律

  • 标准输入0、输出1、错误2需要分别重定向,一个重定向只能改变它们中的一个
  • 标准输入0和标准输出1可以省略。(当其出现重定向符号左侧时)
  • 文件描述符在重定向符号左侧时直接写即可,在右侧时前面加&
  • 文件描述符与重定向符号之间不能有空格

3.测试

这里使用(echo 1; echo1 1)命令测试

 [root@testhost shell-study]# (echo 1; echo1 1)

这里写图片描述

[root@testhost shell-study]# (echo 1; echo1 1)>1.log

可以看到标准输出进了1.log,标准输入0和标准输出1可以省略。(当其出现重定向符号左侧时)
这里写图片描述

[root@testhost shell-study]# (echo 1; echo1 1) 1>1.log 2>2.log

可以看到标准输出进入了1.log,标准错误进入了2.log
这里写图片描述

[root@testhost shell-study]# (echo 1; echo1 1) 2>&1 >1.log

表示把错误出定向到标准输出(此时标准输出为终端,所以输出到终端), 标准输出定位到文件( >1.log其实是1>1.log),所以看到错误信息输出到终端,而正确信息保存到了1.log
这里写图片描述

把上面的位置调换下,先把标准输出定位到1.log

[root@testhost shell-study]# (echo 1; echo1 1) >1.log 2>&1

把标准输出定位到文件,错误输出到标准输出(此时标准输出指向文件,所以输出到文件)
这里写图片描述
/dev/null 代表空设备文件,我们经常把输出定位到/dev/null这样可以避免程序不必要的打印。

[root@testhost shell-study]# (echo 1; echo1 1) >/dev/null 2>&1

这里写图片描述
这样把标准输入定位到空,再把标准错误定位到标准输出。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值