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

📄 ch04_02.htm

📁 unix基础教程
💻 HTM
📖 第 1 页 / 共 3 页
字号:
allows it to be used literally, as itself.The following table displays characters have special meaning to the Bourne andKorn shells.</p><table border="1" cellpadding="3"><tr><th><em class="emphasis">Character</em></th><th><em class="emphasis">Meaning</em></th></tr><tr><td><p><tt class="literal">;</tt></p></td><td><p>Command separator</p></td></tr><tr><td><p><tt class="literal">&amp;</tt></p></td><td><p>Background execution</p></td></tr><tr><td><p><tt class="literal">( )</tt></p></td><td><p>Command grouping</p></td></tr><tr><td><p><tt class="literal">|</tt></p></td><td><p>Pipe</p></td></tr><tr><td><p><tt class="literal">&lt; &gt; &amp;</tt></p></td><td><p>Redirection symbols</p></td></tr><tr><td><p><tt class="literal">* ? [ ] ~ + - @ !</tt></p></td><td><p>Filename metacharacters</p></td></tr><tr><td><p><tt class="literal">" ' \</tt></p></td><td><p>Used in quoting other characters</p></td></tr><tr><td><p><tt class="literal">&#8216;</tt></p></td><td><p>Command substitution</p></td></tr><tr><td><p><tt class="literal">$</tt></p></td><td><p>Variable substitution (or command or arithmetic substitution)</p></td></tr><tr><td><p><tt class="literal">space</tt><tt class="literal">tab</tt><tt class="literal">newline</tt></p></td><td><p>Word separators</p></td></tr></table><p><p>These characters can be used for quoting:</p><dl><dt><tt class="literal">" "</tt></dt><dd>Everything between <tt class="literal">"</tt>and <tt class="literal">"</tt> istaken literally,except for the following characters that keep their special meaning:<a name="IXT-4-122679" /></p><dl><dt><tt class="literal">$</tt></dt><dd>Variable (or Korn shell command and arithmetic) substitution will occur.</p></dd><dt><tt class="literal">&#8216;</tt></dt><dd>Command substitution will occur.</p></dd><dt><tt class="literal">"</tt></dt><dd>This marks the end of the double quote.</p></dd></dl></dd><dt><tt class="literal">' '</tt></dt><dd><a name="IXT-4-122680" /><a name="IXT-4-122681" />Everything between <tt class="literal">'</tt>and <tt class="literal">'</tt>is taken literally exceptfor another <tt class="literal">'</tt>.You cannot embed another <tt class="literal">'</tt> within such a quoted string.</p></dd><dt><tt class="literal">\</tt></dt><dd><a name="IXT-4-122682" />The character following a <tt class="literal">\</tt> is taken literally.Use within <tt class="literal">" "</tt>to escape <tt class="literal">"</tt>,<tt class="literal">$</tt>,and <tt class="literal">&#8216;</tt>.Often used to escape itself, spaces, or newlines.</p></dd><dt><tt class="literal">$" "</tt></dt><dd><tt class="literal">ksh93</tt> only.Just like <tt class="literal">""</tt>, except that localetranslation is done.</p></dd><dt><tt class="literal">$' '</tt></dt><dd><tt class="literal">ksh93</tt> only.Similar to <tt class="literal">''</tt>, but the quotedtext is processed for the following escape sequences:</p></dd></dl><table border="1" cellpadding="3"><tr><th><em class="emphasis">Sequence</em></th><th><em class="emphasis">Value</em></th><th><em class="emphasis">Sequence</em></th><th><em class="emphasis">Value</em></th></tr><tr><td><tt class="literal">\a</tt></td><td>Alert</td><td><tt class="literal">\</tt><em class="replaceable"><tt>nnn</em></td><td>Octal value <em class="emphasis">nnn</tt></em></td></tr><tr><td><tt class="literal">\b</tt></td><td>Backspace</td><td><tt class="literal">\x</tt><em class="replaceable"><tt>nn</em></td><td>Hexadecimal value <em class="emphasis">nn</tt></em></td></tr><tr><td><tt class="literal">\f</tt></td><td>Form feed</td><td><tt class="literal">\'</tt></td><td>Single quote</td></tr><tr><td><tt class="literal">\n</tt></td><td>Newline</td><td><tt class="literal">\"</tt></td><td>Double quote</td></tr><tr><td><tt class="literal">\r</tt></td><td>Carriage return</td><td><tt class="literal">\\</tt></td><td>Backslash</td></tr><tr><td><tt class="literal">\t</tt></td><td>Tab</td><td><tt class="literal">\E</tt></td><td>Escape</td></tr><tr><td><tt class="literal">\v</tt></td><td>Vertical tab</td><td></td><td>&nbsp;</td></tr></table><p><a name="unut-ch-4-sect-2.3.1" /><div class="sect3"><h3 class="sect3">4.2.3.1. Examples</h3><blockquote><pre class="code">$ <tt class="userinput"><b>echo 'Single quotes "protect" double quotes'</b></tt>Single quotes "protect" double quotes$ <tt class="userinput"><b>echo "Well, isn't that \"special\"?"</b></tt>Well, isn't that "special"?$ <tt class="userinput"><b>echo "You have `ls | wc -l` files in `pwd`"</b></tt>You have      43 files in /home/bob$ <tt class="userinput"><b>echo "The value of \$x is $x"</b></tt>The value of $x is 100</pre></blockquote></div></div><a name="unut-ch-4-sect-2.4" /><div class="sect2"><h3 class="sect2">4.2.4. Command Forms</h3><a name="IXT-4-122683" /><a name="IXT-4-122684" /><a name="IXT-4-122685" /><a name="IXT-4-122686" /><a name="IXT-4-122687" /><a name="IXT-4-122688" /><a name="IXT-4-122689" /><a name="IXT-4-122690" /><a name="IXT-4-122691" /><table border="1" cellpadding="3"><tr><td><p><em class="replaceable"><tt>cmd</tt></em> <tt class="literal">&amp;</tt></p></td><td><p>Execute <em class="emphasis">cmd</em> in background.</p></td></tr><tr><td><p><em class="replaceable"><tt>cmd1</em> <tt class="literal">;</tt> <em class="replaceable">cmd2</tt></em></p></td><td><p>Command sequence; execute multiple <em class="emphasis">cmd</em>s on the same line.</p></td></tr><tr><td><p><tt class="literal">{</tt> <em class="replaceable"><tt>cmd1</em> <tt class="literal">;</tt> <em class="replaceable">cmd2</tt></em> <tt class="literal">; }</tt></p></td><td><p>Execute commands as a group in the current shell.</p></td></tr><tr><td><p><tt class="literal">(</tt><em class="replaceable"><tt>cmd1</em> <tt class="literal">;</tt> <em class="replaceable">cmd2</tt></em><tt class="literal">)</tt></p></td><td><p>Execute commands as a group in a subshell.</p></td></tr><tr><td><p><em class="replaceable"><tt>cmd1</em> <tt class="literal">|</tt> <em class="replaceable">cmd2</tt></em></p></td><td><p>Pipe; use output from <em class="emphasis">cmd1</em> as input to <em class="emphasis">cmd2</em>.</p></td></tr><tr><td><p><em class="replaceable"><tt>cmd1</em> <tt class="literal">&#8216;</tt><em class="replaceable">cmd2</tt></em><tt class="literal">&#8216;</tt></p></td><td><p>Command substitution; use <em class="emphasis">cmd2</em> output as arguments to <em class="emphasis">cmd1</em>.</p></td></tr><tr><td><p><em class="replaceable"><tt>cmd1</em> <tt class="literal">$(</tt><em class="replaceable">cmd2</tt></em><tt class="literal">)</tt></p></td><td><p>Korn shell command substitution; nesting is allowed.</p></td></tr><tr><td><p><em class="replaceable"><tt>cmd</em>   <tt class="literal">$((</tt><em class="replaceable">expression</tt></em><tt class="literal">))</tt></p></td><td><p>Korn shell arithmetic substitution.Use the result of <em class="emphasis">expression</em>as argument to <em class="emphasis">cmd</em>.</p></td></tr><tr><td><p><em class="replaceable"><tt>cmd1</em> <tt class="literal">&amp;&amp;</tt> <em class="replaceable">cmd2</tt></em></p></td><td><p>AND; execute <em class="emphasis">cmd1</em> and then(if <em class="emphasis">cmd1</em> succeeds)<em class="emphasis">cmd2</em>.This is a &#8220;short-circuit&#8221; operation;<em class="emphasis">cmd2</em> is never executed if <em class="emphasis">cmd1</em> fails.</p></td></tr><tr><td><p><em class="replaceable"><tt>cmd1</em> <tt class="literal">||</tt> <em class="replaceable">cmd2</tt></em></p></td><td><p>OR; execute either <em class="emphasis">cmd1</em> or (if <em class="emphasis">cmd1</em> fails) <em class="emphasis">cmd2</em>.This is a &#8220;short-circuit&#8221; operation;<em class="emphasis">cmd2</em> is never executed if <em class="emphasis">cmd1</em> succeeds.</p></td></tr></table><p><a name="IXT-4-122692" /><a name="IXT-4-122693" /><a name="unut-ch-4-sect-2.4.1" /><div class="sect3"><h3 class="sect3">4.2.4.1. Examples</h3><blockquote><pre class="code">$ <tt class="userinput"><b>nroff file &gt; file.txt &amp;</b></tt>             <i class="lineannotation">Format in the background</i>$ <tt class="userinput"><b>cd; ls</b></tt>                              <i class="lineannotation">Execute sequentially</i>$ <tt class="userinput"><b>(date; who; pwd) &gt; logfile</b></tt>          <i class="lineannotation">All output is redirected</i>$ <tt class="userinput"><b>sort file | pr -3 | lp</b></tt>              <i class="lineannotation">Sort file, page output, then print</i>$ <tt class="userinput"><b>vi `grep -l ifdef *.c`</b></tt>              <i class="lineannotation">Edit files found by grep</i>$ <tt class="userinput"><b>egrep '(yes|no)' `cat list`</b></tt>         <i class="lineannotation">Specify a list of files to search</i>$ <tt class="userinput"><b>egrep '(yes|no)' $(cat list)</b></tt>        <i class="lineannotation">Korn shell version of previous</i>$ <tt class="userinput"><b>egrep '(yes|no)' $(&lt;list)</b></tt>           <i class="lineannotation">Same, but faster</i>$ <tt class="userinput"><b>grep XX file &amp;&amp; lp file</b></tt>             <i class="lineannotation">Print file if it contains the pattern;</i>$ <tt class="userinput"><b>grep XX file || echo "XX not found"</b></tt> <i class="lineannotation">otherwise, echo an error message</i></pre></blockquote></div></div><a name="unut-ch-4-sect-2.5" /><div class="sect2"><h3 class="sect2">4.2.5. Redirection Forms</h3><p><a name="IXT-4-122694" /><a name="IXT-4-122695" /><a name="IXT-4-122696" /></p><table border="1" cellpadding="3"><tr><th><em class="emphasis">File Descriptor</em></th><th><em class="emphasis">Name</em></th><th><em class="emphasis">Common Abbreviation</em></th><th><em class="emphasis">Typical Default</em></th></tr><tr><td><p>0</p></td><td><p>Standard input</p></td><td><p>stdin</p></td><td><p>Keyboard</p></td></tr><tr><td><p>1</p></td><td><p>Standard output</p></td><td><p>stdout</p></td><td><p>Terminal</p></td></tr><tr><td><p>2</p>

⌨️ 快捷键说明

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