前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux中Shell重定向

Linux中Shell重定向

原创
作者头像
入门笔记
修改2021-08-02 10:30:34
2.3K0
修改2021-08-02 10:30:34
举报
文章被收录于专栏:入门小站

在shell脚本中,默认情况下,总是有三个文件处于打开状态,标准输入(键盘输入)、标准输出(输出到屏幕)、标准错误(也是输出到屏幕),它们分别对应的文件描述符是 0,1,2 。

  • & 是一个描述符,如果1或2前不加&,会被当成一个普通文件。
  • > 默认为标准输出重定向,与 1> 相同
  • 1>&2 意思是把标准输出重定向到标准错误.
  • 2>&1 意思是把标准错误输出重定向到标准输出。
  • &>filename 意思是把标准输出和标准错误输出都重定向到文件filename中.
  • >&21>&2也就是把结果输出到和标准错误一样

/dev/null是一个文件,这个文件比较特殊,所有传给它的东西它都丢弃掉

标准输出和错误输出

代码语言:txt
复制
> ls
rumenz.txt

> ls rumenz.txt 1.txt
ls: 1.txt: No such file or directory
rumenz.txt
  • 由于1.txt不存在,所以ls: 1.txt: No such file or directory就是错误输出就是2。
  • rumenz.txt文件是存在的,所以rumenz.txt就是标准输出。就是1。

把上述的标准输出和错误输出重定向到文件

代码语言:txt
复制
> ls rumenz.txt 1.txt 1>out.log 2>err.log
> cat out.log
rumenz.txt
> rumenz cat err.log
ls: 1.txt: No such file or directory
  • out.log存的是标准输出
  • err.log存的是错误输出

案例分析

代码语言:txt
复制
> ls rumenz.txt 1.txt > out.txt
ls: 1.txt: No such file or directory
> cat out.txt
rumenz.txt

由于只重定向了标准输出,所以out.txt文件只有标准输出

代码语言:txt
复制
> ls rumenz.txt 1.txt > out.log 1>&2
ls: cannot access 1.txt: No such file or directory
rumenz.txt
> cat out.log

> out.log将标准输出重定向到文件,但是1>&2将标准输出重定向到了错误输出,所以out.log里面什么也没有.

代码语言:txt
复制
> ls rumenz.txt 1.txt > out.txt 2>&1
> cat out.txt 
ls: cannot access 1.txt: No such file or directory
rumenz.txt

> out.log将标准输出重定向到文件,但是2>&1将错误输出重定向到标准输出,所以out.log里面既有正常的输出也有错误的输出.

/dev/null

/dev/null:表示 的是一个黑洞,通常用于丢弃不需要的数据输出, 或者用于输入流的空文件

代码语言:txt
复制
> rm -f $(find / -name rumenz) &> /dev/null

原文链接:https://rumenz.com/rumenbiji/linux-shell-redirect.html

微信公众号:入门小站

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 标准输出和错误输出
  • 把上述的标准输出和错误输出重定向到文件
  • 案例分析
  • /dev/null
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档