博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell 中 2>&1 的使用
阅读量:7076 次
发布时间:2019-06-28

本文共 1246 字,大约阅读时间需要 4 分钟。

一 相关知识
1)默认地,标准的输入为键盘,但是也可以来自文件或管道(pipe |)。
2)默认地,标准的输出为终端(terminal),但是也可以重定向到文件,管道或后引号(backquotes `)。
3) 默认地,标准的错误输出到终端,但是也可以重定向到文件。
4)标准的输入,输出和错误输出分别表示为STDIN,STDOUT,STDERR,也可以用0,1,2来表示。
5)其实除了以上常用的3中文件描述符,还有3~9也可以作为文件描述符。3~9你可以认为是执行某个地方的文件描述符,常被用来作为临时的中间描述符。
 
 
二 实例
1)command 2>errfile : command的错误重定向到文件errfile。
2)command 2>&1 | ...: command的错误重定向到标准输出,错误和标准输出都通过管道传给下个命令。
3)var=`command 2>&1 : command的错误重定向到标准输出,错误和标准输出都赋值给var。
4)command 3>&2 2>&1 1>&3 | ...:实现标准输出和错误输出的交换。
5)var=`command 3>&2 2>&1 1>&3`:实现标准输出和错误输出的交换。
6)command 2>&1 1>&2 | ...     (wrong...) :这个不能实现标准输出和错误输出的交换。因为shell从左到右执行命令,当执行完2>&1后,错误输出已经和标准输出一样的,再执行1>&2也没有意义。
 
 
三 "2>&1 file"和 "> file 2>&1"区别
1)cat food 2>&1 >file :错误输出到终端,标准输出被重定向到文件file。
2)cat food >file 2>&1 :标准输出被重定向到文件file,然后错误输出也重定向到和标准输出一样,所以也错误输出到文件file。
 
 
四 注意
通常打开的文件在进程推出的时候自动的关闭,但是更好的办法是当你使用完以后立即关闭。用m<&-来关闭输入文件描述符m,用m>&-来关闭输出文件描述符m。如果你需要关闭标准输入用<&-; >&- 被用来关闭标准输出。
 
五 同时输出到终端和文件
copy source dest | tee.exe copyerror.txt
 
六 参考
1)http://docstore.mik.ua/orelly/unix/upt/ch45_21.htm
2)http://www.unix.com/shell-programming-scripting/34011-meaning-dev-null-2-1-a.html
3)http://docstore.mik.ua/orelly/unix/upt/ch08_13.htm
 
感谢,Thanks!
 
作者:iTech
出处:http://itech.cnblogs.com/
本文版权归作者iTech所有,转载请包含作者签名和出处,不得用于商业用途,非则追究法律责任!
你可能感兴趣的文章
linux 用户和用户组命令
查看>>
WordPress 主题开发:从入门到精通(必读)
查看>>
Vue入坑记
查看>>
SpringBoot使用AOP+注解实现简单的权限验证
查看>>
Android 8.0 系统和API的变化
查看>>
js 时间对象的常规操作
查看>>
Centos 7 Yum方式安装Mongdb 3.4
查看>>
遇见大数据可视化 : 【云图】让数据可见
查看>>
Mac Docker 创建第一个Django 应用,Part 1
查看>>
zendAPI 的 CMake 参数详解
查看>>
【201天】黑马程序员27天视频学习笔记【Day18复习脑图】
查看>>
vue+webpack搭建单文件应用和多文件应用webpack.config.js的写法区别
查看>>
leetcode82. Remove Duplicates from Sorted List II
查看>>
简单学习node微信开发
查看>>
Yii2实现ActiveForm ajax提交
查看>>
【译】State and Lifecycle (State和生命周期)
查看>>
C接口与实现---之三
查看>>
解密新一代Java JIT编译器Graal
查看>>
HTTP协议:看个新闻原来这么麻烦
查看>>
服务平台化,知乎 HBase 实践
查看>>