您的当前位置:首页 --> CentOS入门
centos重定向命令
浏览次数:2282 关键词 ( 重定向  命令  centos  )
yw >outfile 2>&1
$ cat outfile 
cat: oyyw: 没有那个文件或目录

$ cat oyyw 2>&1 >outfile
cat: oyyw: 没有那个文件或目录
解惑

搜集了一部分资料以后,解答如下:

顺序是很重要的!命令的执行是自左向右的,因此:  * 对于第一个命令,shell首先读到>outfile(等同于1>outfile),此时标准输出重定向到了文件outfile,然后shell再读到2>&1,此时标准错误输出重定向到了标准输出,也就是重定向到了文件outfile,所以得到的结果是 标准输出标准错误输出都重定向到了文件outfile

  • 对于第二个命令,shell首先读到2>&1,此时标准错误输出重定向到了标准输出(可能是控制台),然后shell再读到>outfile(等同于1>outfile),此时标准输出重定向到了文件outfile,得到的结果是 标准错误输出输出到了控制台,标准输出输出到文件outfile

以下这个例子,应该可以很好解答上面的疑问了:

$ cat learn_redirect.sh 
#!/bin/bash

foo() {
    echo "This is stdout";        # 输出是标准输出
    echo "This is stderr" 1>&2;   # 输出是标准错误输出
}

foo >errlog 2>&1 >outfile
[pms@jq-hadoop ~/workspace/ouyangyewei/learn_linux] eth0 = xxx
$ sh learn_redirect.sh 
[pms@jq-hadoop ~/workspace/ouyangyewei/learn_linux] eth0 = xxx
$ cat outfile 
This is stdout
[pms@jq-hadoop ~/workspace/ouyangyewei/learn_linux] eth0 = xxx
$ cat errlog 
This is stderr
解释如下

foo >errlog 2>&1 >outfile 这一句命令,shell执行顺序是从左向右。首先shell读到>errlog,此时标准输出重定向到了文件errlog,然后shell读到2>&1,此时标准错误输出重定向到了标准输出(等同于标准错误输出重定向到了文件errlog),然后shell读到>outfile,此时标准输出重定向到文件outfile,因此,得到的结果是 标准错误输出输出到文件errlog中,标准输出输出到了文件outfile

参考资料

img/20170809/s40bivcdgdo.html http://mywiki.wooledge.org/BashFAQ/055  http://docstore.mik.ua/orelly/unix/upt/ch45_21.htm  http://docstore.mik.ua/orelly/unix/upt/ch08_13.htm

下载次数:5
下载地址:点击下载
本资源为程序自动采集,如有侵权请联系我们移除 admin#80vps.com 来信请将#替换为@
下一条 centos系统中网络配置相关
上一条 centos 设置ip地址 为ssh 使用

拥有超过10年的业务管理经验。我们是IDC服务和解决方案方面的专家

有任何疑问请不要犹豫,立即点击联系我们