歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> 學習Linux >> centos重定向命令

centos重定向命令

日期:2017/3/3 17:47:01   编辑:學習Linux

centos重定向命令

centos重定向命令


yw >outfile 2>&1$ cat outfile cat: oyyw: 沒有那個文件或目錄

$ cat oyyw 2>&1 >outfilecat: 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/bashfoo() {    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

參考資料

http://www.gnu.org/software/bash/manual/bash.html#Redirections 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

http://xxxxxx/Linuxjc/1184720.html TechArticle

Copyright © Linux教程網 All Rights Reserved