📄 ch08_13.htm
字号:
<HTML><!--Distributed by F --><HEAD><TITLE>[Chapter 8] 8.13 Is It "2>&1 file" or "> file 2>&1"? Why?</TITLE><METANAME="DC.title"CONTENT="UNIX Power Tools"><METANAME="DC.creator"CONTENT="Jerry Peek, Tim O'Reilly & Mike Loukides"><METANAME="DC.publisher"CONTENT="O'Reilly & Associates, Inc."><METANAME="DC.date"CONTENT="1998-08-04T21:34:27Z"><METANAME="DC.type"CONTENT="Text.Monograph"><METANAME="DC.format"CONTENT="text/html"SCHEME="MIME"><METANAME="DC.source"CONTENT="1-56592-260-3"SCHEME="ISBN"><METANAME="DC.language"CONTENT="en-US"><METANAME="generator"CONTENT="Jade 1.1/O'Reilly DocBook 3.0 to HTML 4.0"><LINKREV="made"HREF="mailto:online-books@oreilly.com"TITLE="Online Books Comments"><LINKREL="up"HREF="ch08_01.htm"TITLE="8. How the Shell Interprets What You Type"><LINKREL="prev"HREF="ch08_12.htm"TITLE="8.12 Which One Will the C Shell Use? "><LINKREL="next"HREF="ch08_14.htm"TITLE="8.14 Bourne Shell Quoting "></HEAD><BODYBGCOLOR="#FFFFFF"TEXT="#000000"><DIVCLASS="htmlnav"><H1><IMGSRC="gifs/smbanner.gif"ALT="UNIX Power Tools"USEMAP="#srchmap"BORDER="0"></H1><MAPNAME="srchmap"><AREASHAPE="RECT"COORDS="0,0,466,58"HREF="index.htm"ALT="UNIX Power Tools"><AREASHAPE="RECT"COORDS="467,0,514,18"HREF="jobjects/fsearch.htm"ALT="Search this book"></MAP><TABLEWIDTH="515"BORDER="0"CELLSPACING="0"CELLPADDING="0"><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="172"><ACLASS="SECT1"HREF="ch08_12.htm"TITLE="8.12 Which One Will the C Shell Use? "><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT="Previous: 8.12 Which One Will the C Shell Use? "BORDER="0"></A></TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="171"><B><FONTFACE="ARIEL,HELVETICA,HELV,SANSERIF"SIZE="-1">Chapter 8<BR>How the Shell Interprets What You Type</FONT></B></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="172"><ACLASS="SECT1"HREF="ch08_14.htm"TITLE="8.14 Bourne Shell Quoting "><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 8.14 Bourne Shell Quoting "BORDER="0"></A></TD></TR></TABLE> <HRALIGN="LEFT"WIDTH="515"TITLE="footer"></DIV><DIVCLASS="SECT1"><H2CLASS="sect1"><ACLASS="title"NAME="UPT-ART-0210">8.13 Is It "2>&1 file" or "> file 2>&1"? Why?</A></H2><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-8344"></A><ACLASS="indexterm"NAME="AUTOID-8347"></A>One of the common questions about the Bourne and Korn shells is whyonly the second command will redirect both<SPANCLASS="link"><EMCLASS="emphasis">stdout</EM> and <EMCLASS="emphasis">stderr</EM> (<ACLASS="linkend"HREF="ch13_01.htm#UPT-ART-1023"TITLE="Using Standard Input and Output">13.1</A>)</SPAN>to a file:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">$ <CODECLASS="userinput"><B>cat food 2>&1 >file</B></CODE>cat: can't open food$ <CODECLASS="userinput"><B>cat food >file 2>&1</B></CODE>$</PRE></BLOCKQUOTE></P><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-8358"></A>Although lots of <EMCLASS="emphasis">sh</EM> manual pages don't mention this, the shell readsarguments from left to right.</P><OLCLASS="orderedlist"><LICLASS="listitem"><PCLASS="para">On the first command line, the shell sees <CODECLASS="literal">2>&1</CODE> first.That means "make the standard error (file descriptor 2) go to the sameplace as the standard output (fd1) is going."There's no effect because both fd2 and fd1 are already going to the terminal.Then <CODECLASS="literal">>file</CODE> redirects fd1 (<EMCLASS="emphasis">stdout</EM>) to <CODECLASS="literal">file</CODE>.But fd2 (<EMCLASS="emphasis">stderr</EM>) is still going to the terminal.</P></LI><LICLASS="listitem"><PCLASS="para">On the second command line, the shell sees <CODECLASS="literal">>file</CODE> first andredirects <EMCLASS="emphasis">stdout</EM> to <CODECLASS="literal">file</CODE>.Next <CODECLASS="literal">2>&1</CODE> sends fd2 (<EMCLASS="emphasis">stderr</EM>) to the same place fd1 isgoing - that's to the file.And that's what you want.</P></LI></OL><PCLASS="para">Article<ACLASS="xref"HREF="ch45_21.htm"TITLE="n>&m: Swap Standard Output and Standard Error ">45.21</A>has much more about the <CODECLASS="replaceable"><I>m</I></CODE><CODECLASS="literal">>&</CODE><CODECLASS="replaceable"><I>n</I></CODE> operator.</P><DIVCLASS="sect1info"><PCLASS="SECT1INFO">- <SPANCLASS="authorinitials">JP</SPAN></P></DIV></DIV><DIVCLASS="htmlnav"><P></P><HRALIGN="LEFT"WIDTH="515"TITLE="footer"><TABLEWIDTH="515"BORDER="0"CELLSPACING="0"CELLPADDING="0"><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="172"><ACLASS="SECT1"HREF="ch08_12.htm"TITLE="8.12 Which One Will the C Shell Use? "><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT="Previous: 8.12 Which One Will the C Shell Use? "BORDER="0"></A></TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="171"><ACLASS="book"HREF="index.htm"TITLE="UNIX Power Tools"><IMGSRC="gifs/txthome.gif"SRC="gifs/txthome.gif"ALT="UNIX Power Tools"BORDER="0"></A></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="172"><ACLASS="SECT1"HREF="ch08_14.htm"TITLE="8.14 Bourne Shell Quoting "><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 8.14 Bourne Shell Quoting "BORDER="0"></A></TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="172">8.12 Which One Will the C Shell Use? </TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="171"><ACLASS="index"HREF="index/idx_0.htm"TITLE="Book Index"><IMGSRC="gifs/index.gif"SRC="gifs/index.gif"ALT="Book Index"BORDER="0"></A></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="172">8.14 Bourne Shell Quoting </TD></TR></TABLE><HRALIGN="LEFT"WIDTH="515"TITLE="footer"><IMGSRC="gifs/smnavbar.gif"SRC="gifs/smnavbar.gif"USEMAP="#map"BORDER="0"ALT="The UNIX CD Bookshelf Navigation"><MAPNAME="map"><AREASHAPE="RECT"COORDS="0,0,73,21"HREF="../index.htm"ALT="The UNIX CD Bookshelf"><AREASHAPE="RECT"COORDS="74,0,163,21"HREF="index.htm"ALT="UNIX Power Tools"><AREASHAPE="RECT"COORDS="164,0,257,21"HREF="../unixnut/index.htm"ALT="UNIX in a Nutshell"><AREASHAPE="RECT"COORDS="258,0,321,21"HREF="../vi/index.htm"ALT="Learning the vi Editor"><AREASHAPE="RECT"COORDS="322,0,378,21"HREF="../sedawk/index.htm"ALT="sed & awk"><AREASHAPE="RECT"COORDS="379,0,438,21"HREF="../ksh/index.htm"ALT="Learning the Korn Shell"><AREASHAPE="RECT"COORDS="439,0,514,21"HREF="../lrnunix/index.htm"ALT="Learning the UNIX Operating System"></MAP></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -