STDIN(0), STDOUT(1), STDERR(2), 2 > &1

当我们在 shell 中执行命令的时候,每个进程都和三个打开的文件相联系,并使用文件描述符(文件描述符是一个简单的整数,用以标明每一个被进程所打开的文件和socket。第一个打开的文件是0,第二个是1,依此类推)来引用这些文件。由于文件描述符不容易记忆,shell 同时也给出了相应的文件名。 

STDIN  (0): 标准输入,位置 /dev/stdin, 缺省为键盘,也可以是文件或其他命令的输出
STDOUT (1): 标准输出,位置 /dev/stdout, 缺省为 Terminal,也可以是文件
STDERR (2): 标准错误,位置 /dev/stderr, 缺省为 Terminal,也可以是文件

在执行命令时,可以指定命令的标准输入、输出和错误,要实现这一点就需要使用文件重定向。下面列出了最常用的重定向组合,并给出了相应的文件描述符。 
在对标准错误进行重定向时,必须要使用文件描述符,但是对于标准输入和输出来说,这不是必需的。

常用文件重定向命令 

command > filename 把标准输出重定向到一个新文件中 
command >> filename 把标准输出重定向到一个文件中(追加) 
command 1 > fielname 把标准输出重定向到一个文件中 
command > filename 2>&1 把标准输出和标准错误一起重定向到一个文件中 
command 2> filename 把标准错误重定向到一个文件中 
command 2>> filename 把标准输出重定向到一个文件中(追加) 
command >> filename 2>&1 把标准输出和标准错误一起重定向到一个文件中(追加) 
command < filename 把 command 命令以 filename 文件作为标准输入 
command < filename > filename2 把命令 command 以 filename 文件作为标准输入,以 filename2 文件作为标准输出 
command << delimiter 从标准输入中读入,直至遇到 delimier 分界符 
command <&m 把文件描述符m作为标准输入 
command >&m 把标准输出重定向到文件描述符m中 
command <&- 关闭标准输入  

Note: 有些程序(特别是象bash 、make这样执行了其他程序的程序)的设计者为了省事,把一些正常情况的信息也放在stderr中输出(即使程序本身并无错误),而stdout用来输出被调用程序的执行时信息,在这种情况下如果需要将屏幕中的所有输出输出到文件需要使用 2>&1.

转载于:https://www.cnblogs.com/tannerBG/p/5164117.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值