shell中2>&1之类的命令
2016-08-03 12:03
288 查看
放在>后面的&,表示重定向的目标不是一个文件,而是一个文件描述符,内置的文件描述符如下
换言之 2>1 代表将stderr重定向到当前路径下文件名为1的regular file中,而2>&1代表将stderr重定向到文件描述符为1的文件(即/dev/stdout)中,这个文件就是stdout在file system中的映射
而&>file是一种特殊的用法,也可以写成>&file,二者的意思完全相同,都等价于
此处&>或者>&视作整体,分开没有单独的含义
第二个问题:
第一种
先将要输出到stdout的内容重定向到文件,此时文件list就是这个程序的stdout,再将stderr重定向到stdout,也就是文件list
第二种
先将要输出到stderr的内容重定向到stdout,此时会产生一个stdout的拷贝,作为程序的stderr,而程序原本要输出到stdout的内容,依然是对接在stdout原身上的,因此第二步重定向stdout,对stdout的拷贝不产生任何影响
http://www.gnu.org/software/bash/manual/bashref.html#Redirections
https://segmentfault.com/q/1010000002454596
1 => stdout 2 => stderr 0 => stdin
换言之 2>1 代表将stderr重定向到当前路径下文件名为1的regular file中,而2>&1代表将stderr重定向到文件描述符为1的文件(即/dev/stdout)中,这个文件就是stdout在file system中的映射
而&>file是一种特殊的用法,也可以写成>&file,二者的意思完全相同,都等价于
>file 2>&1
此处&>或者>&视作整体,分开没有单独的含义
第二个问题:
find /etc -name .bashrc > list 2>&1 # 我想问为什么不能调下顺序,比如这样 find /etc -name .bashrc 2>&1 > list 这个是从左到右有顺序的
第一种
xxx > list 2>&1
先将要输出到stdout的内容重定向到文件,此时文件list就是这个程序的stdout,再将stderr重定向到stdout,也就是文件list
第二种
xxx 2>&1 > list
先将要输出到stderr的内容重定向到stdout,此时会产生一个stdout的拷贝,作为程序的stderr,而程序原本要输出到stdout的内容,依然是对接在stdout原身上的,因此第二步重定向stdout,对stdout的拷贝不产生任何影响
http://www.gnu.org/software/bash/manual/bashref.html#Redirections
https://segmentfault.com/q/1010000002454596
相关文章推荐
- shell中的"2>&1"命令
- centos shell基础 alias 变量单引号 双引号 history 错误重定向 2>&1 jobs 环境变量 .bash_history source配置文件 nohup & 后台运行 cut,sort,wc ,uniq ,tee ,tr ,split, paste cat> 2.txt <<EOF 通配符 glob模式 发邮件命令mail 2015-4-8 第十二节课
- 关于shell中的commond >out.file 2>&1 命令
- shell命令 2>&1
- shell命令 2>&1
- 关于shell命令的定向输出 2>&1
- shell命令 2>&1
- Shell命令中的/dev/null 与2>&1
- 关于shell命令的定向输出 2>&1
- 关于shell命令的定向输出 2>&1
- 分析shell命令中 >/dev/null 2>&1的语法实现原理
- Linux:shell脚本命令: >/dev/null 2>&1 的理解
- 【转】shell命令中>/dev/null 2>&1的实现原理
- shell 命令之nohup、>/dev/null 2>&1
- shell命令中>/dev/null 2>&1的实现原理
- shell: Linux中标准输入输出解释2>&1 crontab
- shell之“>/dev/null 2>&1” 详解
- bash中的2>&1需要摆放在命令的最后面
- shell之“>/dev/null 2>&1”
- shell 编程之2>&1