2>&1的使用
2013-07-03 18:42
169 查看
一、相关知识
1)默认的标准输入为键盘,但是也可以来自文件或管道(pipe |)。
2)默认的标准输出为终端(terminal),但是也可以重定向到文件,管道或后引号
`(backquotes)。
3)默认的标准错误输出到终端,但是也可以重定向到文件。
4)标准的输入、输出和错误输出分别表示为 STDIN, STDOUT, STDERR,也可以用 0,1,2 来表示。
5)除了以上常用的 3 种文件描述符,还有 3~9 也可以作为文件描述符。3~9 你可以认为是某个地方的文件描述符,常被用作临时的中间描述符。
在 Bourne shell 中,n>&m 能够重新排列文件和文件描述符,“使得文件描述符 n 指向文件描述符 m 所指向的文件”(想一下指针)。
二、实例
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
转载自:http://www.cnblogs.com/itech/archive/0001/01/01/1525590.html
1)默认的标准输入为键盘,但是也可以来自文件或管道(pipe |)。
2)默认的标准输出为终端(terminal),但是也可以重定向到文件,管道或后引号
`(backquotes)。
3)默认的标准错误输出到终端,但是也可以重定向到文件。
4)标准的输入、输出和错误输出分别表示为 STDIN, STDOUT, STDERR,也可以用 0,1,2 来表示。
5)除了以上常用的 3 种文件描述符,还有 3~9 也可以作为文件描述符。3~9 你可以认为是某个地方的文件描述符,常被用作临时的中间描述符。
在 Bourne shell 中,n>&m 能够重新排列文件和文件描述符,“使得文件描述符 n 指向文件描述符 m 所指向的文件”(想一下指针)。
二、实例
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
转载自:http://www.cnblogs.com/itech/archive/0001/01/01/1525590.html
相关文章推荐
- UITableView使用<2>UITableViewCell的介绍
- shell 中 2>&1 的使用
- Alfred工具使用<2>
- 2>&1使用
- 2>&1使用
- 2>&1使用
- >/dev/null 2>&1 与 2>&1 >/dev/null 的区别及使用技巧
- linux之2>&1使用
- SHELL文件描述符,类2>&1使用
- 关于shell中的2>&1的使用的例子
- >/dev/null 2>&1 这句话的含义及使用的意义
- Linux中2>&1使用
- shell中使用>/dev/null 2>&1 丢弃信息
- >/dev/null 2>&1 与 2>&1 >/dev/null 的区别及使用技巧
- redirect:2>&1使用&redirect and output and return value are different
- Dojo AMD加载器的高级使用教程 <2>
- Hadoop的Partitioner使用实例2<转>
- 2>&1使用
- 2>&1使用
- 2>&1的使用