⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch08_19.htm

📁 the unix power tools
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<HTML><!--Distributed by F --><HEAD><TITLE>[Chapter 8] 8.19 "Special&quot; Characters and Operators </TITLE><METANAME="DC.title"CONTENT="UNIX Power Tools"><METANAME="DC.creator"CONTENT="Jerry Peek, Tim O'Reilly &amp; Mike Loukides"><METANAME="DC.publisher"CONTENT="O'Reilly &amp; Associates, Inc."><METANAME="DC.date"CONTENT="1998-08-04T21:34:37Z"><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_18.htm"TITLE="8.18 Here Documents "><LINKREL="next"HREF="ch08_20.htm"TITLE="8.20 How Many Backslashes?"></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_18.htm"TITLE="8.18 Here Documents "><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT="Previous: 8.18 Here Documents "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_20.htm"TITLE="8.20 How Many Backslashes?"><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 8.20 How Many Backslashes?"BORDER="0"></A></TD></TR></TABLE>&nbsp;<HRALIGN="LEFT"WIDTH="515"TITLE="footer"></DIV><DIVCLASS="SECT1"><H2CLASS="sect1"><ACLASS="title"NAME="UPT-ART-0419">8.19 &quot;Special&quot; Characters and Operators </A></H2><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-8901"></A><ACLASS="indexterm"NAME="AUTOID-8904"></A>Before you learn about<SPANCLASS="link">regular expressions (<ACLASS="linkend"HREF="ch26_01.htm#UPT-ART-7844"TITLE="That's an Expression ">26.1</A>)</SPAN>,you should understand how<SPANCLASS="link">quoting (<ACLASS="linkend"HREF="ch08_14.htm"TITLE="Bourne Shell Quoting ">8.14</A>)</SPAN>works in UNIX.</P><PCLASS="para">Regular expressions use metacharacters. The shells also have metacharacters.Metacharacters are simply characters that have a special meaning.The problem occurs when you want to use a regular expression in ashell script. Will the shell do something special with the character?Or will it be passed unchanged to the program?The <CODECLASS="literal">$</CODE>character is a good example.<SPANCLASS="link"> It could be the beginning of a variable name or it could bepart of a regular expression . (<ACLASS="linkend"HREF="ch26_02.htm"TITLE="Don't Confuse Regular Expressions with Wildcards ">26.2</A>)</SPAN>If you need a regular expression, you must know if any of thecharacters of the expression are metacharacters, and must know the right wayto quote that character so that it is passed to the program withoutbeing modified by the shell.</P><PCLASS="para"><ACLASS="xref"HREF="ch08_19.htm#UPT-ART-419-TAB-0"TITLE="List of Special Characters and Their Meanings">Table 8.3</A><ACLASS="indexterm"NAME="UPT-ART-419-IX-C-SHELL-CSH-SPECIAL-CHARACTERS-OPERATORS-IN"></A><ACLASS="indexterm"NAME="UPT-ART-419-IX-SH-BOURNE-SHELL-SPECIAL-CHARACTERS-OPERATORS-IN"></A>is a table of special characters and operators in the C shell (<EMCLASS="emphasis">csh</EM>)and Bourne shell (<EMCLASS="emphasis">sh</EM>).The chart also includes several combinations of characters just to becomplete.As in other parts of this book, the <EMCLASS="emphasis">sh</EM> entries apply to<EMCLASS="emphasis">ksh</EM> and <EMCLASS="emphasis">bash</EM>; the <EMCLASS="emphasis">csh</EM> entries apply to <EMCLASS="emphasis">tcsh</EM>.</P><TABLECLASS="table"><CAPTIONCLASS="table"><ACLASS="title"NAME="UPT-ART-419-TAB-0">Table 8.3: List of Special Characters and Their Meanings</A></CAPTION><THEADCLASS="thead"><TRCLASS="row"VALIGN="TOP"><THCLASS="entry"ALIGN="LEFT"ROWSPAN="1"COLSPAN="1">Character</TH><THCLASS="entry"ALIGN="LEFT"ROWSPAN="1"COLSPAN="1">Where</TH><THCLASS="entry"ALIGN="LEFT"ROWSPAN="1"COLSPAN="1">Meaning</TH><THCLASS="entry"ALIGN="LEFT"ROWSPAN="1"COLSPAN="1">Article</TH></TR></THEAD><TBODYCLASS="tbody"><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">ESC</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">csh</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">Filename completion.</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><ACLASS="xref"HREF="ch09_08.htm"TITLE="Filename Completion: Faster Filename Typing ">9.8</A></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">RETURN</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">csh, sh</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">Execute command.</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><ACLASS="xref"HREF="ch41_02.htm"TITLE="stty and All That Stuff ">41.2</A></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">space</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">csh, sh</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">Argument separator.</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><ACLASS="xref"HREF="ch08_05.htm"TITLE="Command-Line Evaluation ">8.5</A></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">TAB</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">csh, sh</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">Argument separator.</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><ACLASS="xref"HREF="ch08_05.htm"TITLE="Command-Line Evaluation ">8.5</A></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">TAB</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">bash</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">Filename completion.</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><ACLASS="xref"HREF="ch09_08.htm"TITLE="Filename Completion: Faster Filename Typing ">9.8</A></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">#</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">csh, sh</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">Start a comment.</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><ACLASS="xref"HREF="ch44_02.htm"TITLE="Writing a Simple Shell Program ">44.2</A></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">`</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">csh, sh</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">Command substitution (backquotes).</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><ACLASS="xref"HREF="ch09_16.htm"TITLE="Command Substitution ">9.16</A></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">&quot;</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">sh</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">Weak quotes.</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><ACLASS="xref"HREF="ch08_14.htm"TITLE="Bourne Shell Quoting ">8.14</A></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">&quot;</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">csh</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">Weak quotes.</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para"><ACLASS="xref"HREF="ch08_15.htm"TITLE="Differences Between Bourne and C Shell Quoting ">8.15</A>,<ACLASS="xref"HREF="ch08_14.htm"TITLE="Bourne Shell Quoting ">8.14</A></P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">'</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">sh</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">Strong quotes.</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><ACLASS="xref"HREF="ch08_14.htm"TITLE="Bourne Shell Quoting ">8.14</A></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">'</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">csh</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">Strong quotes.</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para"><ACLASS="xref"HREF="ch08_15.htm"TITLE="Differences Between Bourne and C Shell Quoting ">8.15</A>,<ACLASS="xref"HREF="ch08_14.htm"TITLE="Bourne Shell Quoting ">8.14</A>See \.</P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">\</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">sh</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">Single-character quote.</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><ACLASS="xref"HREF="ch08_14.htm"TITLE="Bourne Shell Quoting ">8.14</A></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">\</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">csh</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">Single-character quote.</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para"><ACLASS="xref"HREF="ch08_15.htm"TITLE="Differences Between Bourne and C Shell Quoting ">8.15</A>,<ACLASS="xref"HREF="ch08_14.htm"TITLE="Bourne Shell Quoting ">8.14</A></P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">$<CODECLASS="replaceable"><I>var</I></CODE></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">csh, sh</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">Variable.</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para"><ACLASS="xref"HREF="ch06_01.htm#UPT-ART-1170"TITLE="What Environment Variables Are Good For ">6.1</A>,<ACLASS="xref"HREF="ch06_08.htm"TITLE="Shell Variables ">6.8</A></P></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">${<CODECLASS="replaceable"><I>var</I></CODE>}</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">csh, sh</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">Same as <CODECLASS="literal">$</CODE><CODECLASS="replaceable"><I>var</I></CODE>.</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><ACLASS="xref"HREF="ch06_08.htm"TITLE="Shell Variables ">6.8</A></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">$<CODECLASS="replaceable"><I>var</I></CODE>:<CODECLASS="replaceable"><I>mod</I></CODE></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">csh</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">Edit <CODECLASS="replaceable"><I>var</I></CODE> with modifier <CODECLASS="replaceable"><I>mod</I></CODE></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><ACLASS="xref"HREF="ch09_06.htm"TITLE="String Editing (Colon) Operators ">9.6</A></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">${<CODECLASS="replaceable"><I>var</I></CODE>-<CODECLASS="replaceable"><I>default</I></CODE>}</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">sh</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">If <CODECLASS="replaceable"><I>var</I></CODE> not set, use <CODECLASS="replaceable"><I>default</I></CODE>.</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><ACLASS="xref"HREF="ch45_12.htm"TITLE="Parameter Substitution ">45.12</A></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">${<CODECLASS="replaceable"><I>var</I></CODE>=<CODECLASS="replaceable"><I>default</I></CODE>}</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">sh</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">If <CODECLASS="replaceable"><I>var</I></CODE> not set, set it to <CODECLASS="replaceable"><I>default</I></CODE> and use that value.</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><ACLASS="xref"HREF="ch45_12.htm"TITLE="Parameter Substitution ">45.12</A></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">${<CODECLASS="replaceable"><I>var</I></CODE>+<CODECLASS="replaceable"><I>instead</I></CODE>}</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">sh</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">If <CODECLASS="replaceable"><I>var</I></CODE> set, use <CODECLASS="replaceable"><I>instead</I></CODE>.Otherwise, null string.</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><ACLASS="xref"HREF="ch45_12.htm"TITLE="Parameter Substitution ">45.12</A></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">${<CODECLASS="replaceable"><I>var</I></CODE>?<CODECLASS="replaceable"><I>message</I></CODE>}</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">sh</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">If <CODECLASS="replaceable"><I>var</I></CODE> not set, print <CODECLASS="replaceable"><I>message</I></CODE> (else default).If <CODECLASS="replaceable"><I>var</I></CODE> set, use its value.</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><ACLASS="xref"HREF="ch45_12.htm"TITLE="Parameter Substitution ">45.12</A></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">${<CODECLASS="replaceable"><I>var</I></CODE>#<CODECLASS="replaceable"><I>pat</I></CODE>}</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">ksh, bash</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Value of <CODECLASS="replaceable"><I>var</I></CODE> with smallest <CODECLASS="replaceable"><I>pat</I></CODE> deleted from start.</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><ACLASS="xref"HREF="ch09_07.htm"TITLE="String Editing in ksh and bash ">9.7</A></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">${<CODECLASS="replaceable"><I>var</I></CODE>##<CODECLASS="replaceable"><I>pat</I></CODE>}</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">ksh, bash</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Value of <CODECLASS="replaceable"><I>var</I></CODE> with largest <CODECLASS="replaceable"><I>pat</I></CODE> deleted from start.</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><ACLASS="xref"HREF="ch09_07.htm"TITLE="String Editing in ksh and bash ">9.7</A></TD></TR><TRCLASS="row"VALIGN="TOP"><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">${<CODECLASS="replaceable"><I>var</I></CODE>%<CODECLASS="replaceable"><I>pat</I></CODE>}</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1">ksh, bash</TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><PCLASS="para">Value of <CODECLASS="replaceable"><I>var</I></CODE> with smallest <CODECLASS="replaceable"><I>pat</I></CODE> deleted from end.</P></TD><TDCLASS="entry"ROWSPAN="1"COLSPAN="1"><ACLASS="xref"HREF="ch09_07.htm"TITLE="String Editing in ksh and bash ">9.7</A></TD></TR><TR

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -