?? ch05_05.htm
字號:
<html><head><title>Command History (UNIX in a Nutshell: System V Edition)</title><link rel="stylesheet" type="text/css" href="../style/style1.css" /><meta name="DC.Creator" content="Arnold Robbins" /><meta name="DC.Format" content="text/xml" scheme="MIME" /><meta name="DC.Language" content="en-US" /><meta name="DC.Publisher" content="O'Reilly & Associates, Inc." /><meta name="DC.Source" scheme="ISBN" content="1-56592-427-4" /><meta name="DC.Subject.Keyword" content="stuff" /><meta name="DC.Title" content="UNIX in a Nutshell: System V Edition" /><meta name="DC.Type" content="Text.Monograph" /></head><body bgcolor="#ffffff"><img src="gifs/smbanner.gif" usemap="#banner-map" border="0" alt="Book Home" /><map name="banner-map"><area shape="rect" coords="1,-2,616,66" href="index.htm" alt="Book Title" /><area shape="rect" coords="629,-11,726,25" href="jobjects/fsearch.htm" alt="Search this book" /></map><div class="navbar"><table width="684" border="0"><tr><td align="left" valign="top" width="228"><a href="ch05_04.htm"><img src="../gifs/txtpreva.gif" alt="Previous" border="0" /></a></td><td align="center" valign="top" width="228" /><td align="right" valign="top" width="228"><a href="ch05_06.htm"><img src="../gifs/txtnexta.gif" alt="Next" border="0" /></a></td></tr></table></div><h2 class="sect1">5.5. Command History</h2><p><a name="unut-ch-5-ix-command-history-csh-shell" /><a name="unut-ch-5-ix-history-command-csh-shell" /><a name="IXT-5-123014" />Previously executed commands are stored in a history list.The C shell lets you access this listso you can verify commands, repeat them, or execute modified versions of them.<a name="IXT-5-123015" />The <tt class="literal">history</tt> built-in command displays the history list;the predefined variables <tt class="literal">histchars</tt>, <tt class="literal">history</tt>, and <tt class="literal">savehist</tt> also affect the history mechanism.Accessing the history list involves three things:</p><ul><li><p>Making command substitutions (using <tt class="literal">!</tt> and <tt class="literal">^</tt>)</p></li><li><p>Making argument substitutions (specific words within a command)</p></li><li><p>Using modifiers to extract or replace parts of a command or word</p></li></ul><a name="unut-ch-5-sect-5.1" /><div class="sect2"><h3 class="sect2">5.5.1. Command Substitution</h3><p><a name="IXT-5-123016" /><a name="IXT-5-123017" /></p><table border="1" cellpadding="3"><tr><td><tt class="literal">!</tt></td><td>Begin a history substitution</td></tr><tr><td><tt class="literal">!!</tt></td><td>Previous command</td></tr><tr><td><tt class="literal">!</tt><em class="replaceable"><tt>N</em></td><td>Command number <em class="emphasis">N</tt></em> in history list</td></tr><tr><td><tt class="literal">!-</tt><em class="replaceable"><tt>N</em></td><td><em class="emphasis">N</tt></em>th command back from current command</td></tr><tr><td><tt class="literal">!</tt><em class="replaceable"><tt>string</em></td><td><p>Most recent command that starts with <em class="emphasis">string</tt></em></p></td></tr><tr><td><tt class="literal">!?</tt><em class="replaceable"><tt>string</em><tt class="literal">?</tt></td><td><p>Most recent command that contains <em class="emphasis">string</tt></em></p></td></tr><tr><td><tt class="literal">!?</tt><em class="replaceable"><tt>string</em><tt class="literal">?%</tt></td><td><p>Most recent command argument that contains <em class="emphasis">string</tt></em></p></td></tr><tr><td><tt class="literal">!$</tt></td><td>Last argument of previous command</td></tr><tr><td><tt class="literal">!!</tt><em class="replaceable"><tt>string</em></td><td><p>Previous command, then append <em class="emphasis">string</tt></em></p></td></tr><tr><td><tt class="literal">!</tt><em class="replaceable"><tt>N string</em></td><td>Command <em class="emphasis">N</em>, then append <em class="emphasis">string</tt></em></td></tr><tr><td><tt class="literal">!{</tt><em class="replaceable"><tt>s1</em><tt class="literal">}</tt><em class="replaceable">s2</em></td><td><p>Most recent command starting with string <em class="emphasis">s1</tt></em>,then append string <em class="emphasis">s2</em></p></td></tr><tr><td><tt class="literal">^</tt><em class="replaceable"><tt>old</em><tt class="literal">^</tt><em class="replaceable">new</em><tt class="literal">^</tt></td><td><p>Quick substitution; change string <em class="emphasis">old</tt></em> to<em class="emphasis">new</em> in previous command; execute modified command</p></td></tr></table><p></div><a name="unut-ch-5-sect-5.2" /><div class="sect2"><h3 class="sect2">5.5.2. Command Substitution Examples</h3><p>The following command is assumed:</p><blockquote><pre class="code">3% <tt class="userinput"><b>vi cprogs/01.c ch002 ch03</b></tt></pre></blockquote><table border="1" cellpadding="3"><tr><th><em class="emphasis">Event Number</em></th><th><em class="emphasis">Command Typed</em></th><th><em class="emphasis">Command Executed</em></th></tr><tr><td>4</td><td><tt class="literal">^00^0</tt></td><td><tt class="literal">vi cprogs/01.c ch02 ch03</tt></td></tr><tr><td>5</td><td><tt class="literal">nroff !*</tt></td><td><tt class="literal">nroff cprogs/01.c ch02 ch03</tt></td></tr><tr><td>6</td><td><tt class="literal">nroff !$</tt></td><td><tt class="literal">nroff ch03</tt></td></tr><tr><td>7</td><td><tt class="literal">!vi</tt></td><td><tt class="literal">vi cprogs/01.c ch02 ch03</tt></td></tr><tr><td>8</td><td><tt class="literal">!6</tt></td><td><tt class="literal">nroff ch03</tt></td></tr><tr><td>9</td><td><tt class="literal">!?01</tt></td><td><tt class="literal">vi cprogs/01.c ch02 ch03</tt></td></tr><tr><td>10</td><td><tt class="literal">!{nr}.new</tt></td><td><tt class="literal">nroff ch03.new</tt></td></tr><tr><td>11</td><td><tt class="literal">!!|lp</tt></td><td><tt class="literal">nroff ch03.new | lp</tt></td></tr><tr><td>12</td><td><tt class="literal">more !?pr?%</tt></td><td><tt class="literal">more cprogs/01.c</tt></td></tr></table><p></div><a name="unut-ch-5-sect-5.3" /><div class="sect2"><h3 class="sect2">5.5.3. Word Substitution</h3><p><a name="IXT-5-123018" /><a name="IXT-5-123019" />Word specifiers allow you to retrieve individual words fromprevious command lines.Colons may precede any word specifier. After an event number,colons are optional unless shown here.</p><table border="1" cellpadding="3"><tr><td><tt class="literal">:0</tt></td><td>Command name</td></tr><tr><td><tt class="literal">:</tt><em class="replaceable"><tt>n</em></td><td>Argument number <em class="emphasis">n</tt></em></td></tr><tr><td><tt class="literal">^</tt></td><td>First argument</td></tr><tr><td><tt class="literal">$</tt></td><td>Last argument</td></tr><tr><td><tt class="literal">:</tt><em class="replaceable"><tt>n</em><tt class="literal">-</tt><em class="replaceable">m</em></td><td>Arguments <em class="emphasis">n</em> through <em class="emphasis">m</tt></em></td></tr><tr><td><tt class="literal">-</tt><em class="replaceable"><tt>m</em></td><td><p>Words 0 through <em class="emphasis">m</tt></em>;same as <tt class="literal">:0-</tt><em class="emphasis">m</em></p></td></tr><tr><td><tt class="literal">:</tt><em class="replaceable"><tt>n</em><tt class="literal">-</tt></td><td>Arguments <em class="emphasis">n</tt></em> through next-to-last</td></tr><tr><td><tt class="literal">:</tt><em class="replaceable"><tt>n</em><tt class="literal">*</tt></td><td><p>Arguments <em class="emphasis">n</tt></em> through last;same as <em class="emphasis">n</em><tt class="literal">-$</tt></p></td></tr><tr><td><tt class="literal">*</tt></td><td>All arguments; same as <tt class="literal">^-$</tt> or <tt class="literal">1-$</tt></td></tr><tr><td><tt class="literal">#</tt></td><td>Current command line up to this point; fairly useless</td></tr></table><p></div><a name="unut-ch-5-sect-5.4" /><div class="sect2"><h3 class="sect2">5.5.4. Word Substitution Examples</h3><p>The following command is assumed:</p><blockquote><pre class="code">13% <tt class="userinput"><b>cat ch01 ch02 ch03 biblio back</b></tt></pre></blockquote><table border="1" cellpadding="3"><tr><th><em class="emphasis">Event Number</em></th><th><em class="emphasis">Command Typed</em></th><th><em class="emphasis">Command Executed</em></th></tr><tr><td>14</td><td><tt class="literal">ls !13^</tt></td><td><tt class="literal">ls ch01</tt></td></tr><tr><td>15</td><td><tt class="literal">sort !13:*</tt></td><td><tt class="literal">sort ch01 ch02 ch03 biblio back</tt></td></tr><tr><td>16</td><td><tt class="literal">lp !cat:3*</tt></td><td><tt class="literal">lp ch03 biblio back</tt></td></tr><tr><td>17</td><td><tt class="literal">!cat:0-3</tt></td><td><tt class="literal">cat ch01 ch02 ch03</tt></td></tr><tr><td>18</td><td><tt class="literal">vi !-5:4</tt></td><td><tt class="literal">vi biblio</tt></td></tr></table><p></div><a name="unut-ch-5-sect-5.5" /><div class="sect2"><h3 class="sect2">5.5.5. History Modifiers</h3><p><a name="IXT-5-123020" />Command and word substitutions can be modified by one or moreof these:</p><a name="unut-ch-5-sect-5.5.1" /><div class="sect3"><h3 class="sect3">5.5.5.1. Printing, Substitution, and Quoting</h3><table border="1" cellpadding="3"><tr><td><tt class="literal">:p</tt></td><td>Display command but don't execute.</td></tr><tr><td><tt class="literal">:s/</tt><em class="replaceable"><tt>old</em><tt class="literal">/</tt><em class="replaceable">new</em></td><td><p>Substitute string <em class="emphasis">new</em> for <em class="emphasis">old</tt></em>,first instance only.</p></td></tr><tr><td><tt class="literal">:gs/</tt><em class="replaceable"><tt>old</em><tt class="literal">/</tt><em class="replaceable">new</em></td><td>Substitute string <em class="emphasis">new</em> for <em class="emphasis">old</tt></em>, all instances.</td></tr><tr><td><tt class="literal">:&</tt></td><td><p>Repeat previous substitution(<tt class="literal">:s</tt> or <tt class="literal">^</tt> command),first instance only.</p></td></tr><tr><td><tt class="literal">:g&</tt></td><td>Repeat previous substitution, all instances.</td></tr><tr><td><tt class="literal">:q</tt></td><td>Quote a word list.</td></tr><tr><td><tt class="literal">:x</tt></td><td>Quote separate words.</td></tr></table><p></div><a name="unut-ch-5-sect-5.5.2" /><div class="sect3"><h3 class="sect3">5.5.5.2. Truncation</h3><table border="1" cellpadding="3"><tr><td><tt class="literal">:r</tt></td><td>Extract the first available pathname root.</td></tr><tr><td><tt class="literal">:gr</tt></td><td>Extract all pathname roots.</td></tr><tr><td><tt class="literal">:e</tt></td><td>Extract the first available pathname extension.</td></tr><tr><td><tt class="literal">:ge</tt></td><td>Extract all pathname extensions.</td></tr><tr><td><tt class="literal">:h</tt></td><td>Extract the first available pathname header.</td></tr><tr><td><tt class="literal">:gh</tt></td><td>Extract all pathname headers.</td></tr><tr><td><tt class="literal">:t</tt></td><td>Extract the first available pathname tail.</td></tr><tr><td><tt class="literal">:gt</tt></td><td>Extract all pathname tails.</td></tr></table><p></div></div><a name="unut-ch-5-sect-5.6" /><div class="sect2"><h3 class="sect2">5.5.6. History Modifier Examples</h3><p>From the table in <a href="ch05_05.htm#unut-ch-5-sect-5.4">Section 5.5.4</a>, command number 17 is:</p><blockquote><pre class="code">17% <tt class="userinput"><b>cat ch01 ch02 ch03</b></tt></pre></blockquote><table border="1" cellpadding="3"><tr><th><em class="emphasis">Event #</em></th><th><em class="emphasis">Command Typed</em></th><th><em class="emphasis">Command Executed</em></th></tr><tr><td>19</td><td><tt class="literal">!17:s/ch/CH/</tt></td><td><tt class="literal">cat CH01 ch02 ch03</tt></td></tr><tr><td>20</td><td><tt class="literal">!:g&</tt></td><td><tt class="literal">cat CH01 CH02 CH03</tt></td></tr><tr><td>21</td><td><tt class="literal">!more:p</tt></td><td><tt class="literal">more cprogs/01.c</tt> (displayed only)</td></tr><tr><td>22</td><td><tt class="literal">cd !$:h</tt></td><td><tt class="literal">cd cprogs</tt></td></tr><tr><td>23</td><td><tt class="literal">vi !mo:$:t</tt></td><td><tt class="literal">vi 01.c</tt></td></tr><tr><td>24</td><td><tt class="literal">grep stdio !$</tt></td><td><tt class="literal">grep stdio 01.c</tt></td></tr><tr><td>25</td><td><tt class="literal">^stdio^include stdio^:q</tt></td><td><tt class="literal">grep "include stdio" 01.c</tt></td></tr><tr><td>26</td><td><tt class="literal">nroff !21:t:p</tt></td><td><tt class="literal">nroff 01.c</tt> (is that want I wanted?)</td></tr><tr><td>27</td><td><tt class="literal">!!</tt></td><td><tt class="literal">nroff 01.c</tt> (execute it)</td></tr></table><p><a name="IXT-5-123021" /><a name="IXT-5-123022" /></div><hr width="684" align="left" /><div class="navbar"><table width="684" border="0"><tr><td align="left" valign="top" width="228"><a href="ch05_04.htm"><img src="../gifs/txtpreva.gif" alt="Previous" border="0" /></a></td><td align="center" valign="top" width="228"><a href="index.htm"><img src="../gifs/txthome.gif" alt="Home" border="0" /></a></td><td align="right" valign="top" width="228"><a href="ch05_06.htm"><img src="../gifs/txtnexta.gif" alt="Next" border="0" /></a></td></tr><tr><td align="left" valign="top" width="228">5.4. Expressions</td><td align="center" valign="top" width="228"><a href="index/index.htm"><img src="../gifs/index.gif" alt="Book Index" border="0" /></a></td><td align="right" valign="top" width="228">5.6. Job Control</td></tr></table></div><hr width="684" align="left" /><img src="../gifs/navbar.gif" usemap="#library-map" border="0" alt="Library Navigation Links" /><p><p><font size="-1"><a href="copyrght.htm">Copyright © 2003</a> O'Reilly & Associates. All rights reserved.</font></p><map name="library-map"><area shape="rect" coords="1,0,88,96" href="../index.htm"><area shape="rect" coords="90,0,165,96" href="../upt/index.htm"><area shape="rect" coords="168,1,253,107" href="../mac/index.htm"><area shape="rect" coords="255,0,335,97" href="../korn/index.htm"><area shape="rect" coords="337,0,415,109" href="../unixnut/index.htm"><area shape="rect" coords="417,0,512,122" href="../sedawk/index.htm"><area shape="rect" coords="514,0,605,105" href="../lunix/index.htm"><area shape="rect" coords="611,2,694,121" href="../vi/index.htm"></map></body></html>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -