linux shell脚本攻略01-文件描述符和重定向

文件描述符是与某个打开的文件或数据流相关联的整数,文件描述符0、1、2是系统预留的
标准输入(stdin)----------0
标准输出(stdout)---------1
标准错误(stderr)----------2

覆盖
echo “hello world” > a.txt 重定向覆盖,a.txt的内容首先被清空

追加
echo “hello world” >> a.txt 重定向追加文本

当我们运行错误的命令时
ls +
ls:cannot access +:No such file or directory
这个错误信息就是标准错误,即使我们
ls + > out.txt
在out.txt中一样没有数据,因为并没有标准输出stdout输出到out.txt中,只有stderr输出到屏幕上,所以我们可以修改为

ls + 2>out.txt
command 2>stderr.txt 1>stdout.txt
或者我们将标准错误输出也输出到stdout中
command 2>&1 output.txt
或者
command &> output.txt

如果对stderr和stdout进行重定向到文件中,被重定向的文本会传入文件中,所以无法通过管道符等操作获取数据,作为下一个命令的stdin,但是有一个方法,既可以把数据重定向到文件中,又可以将stdout的输出保存一个副本,作为下一个命令的输入,tee

例:
echo “a1” > a1;cp a1 a2;cp a2 a3;chmod 000 a1;
command | tee file1 file2
cat a* | tee out.txt | cat -n 会将a.*的stdout输出到out.txt中,同时将stdin标准输入输出到屏幕,附加行号

cat :a1:Permission denied
1a1
2a2
当cat out.txt时,只能看到
a1
a1

注意:cat :a1:Permission denied,这是因为错误信息输入标准错误stderr,tee只能从stdin中读取数据
默认tee会覆盖文件,可以使用-a参数,进行append
cat a
| tee -a out.txt | cat -n
*

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值