📄 ch11_09.htm
字号:
<HTML><!--Distributed by F --><HEAD><TITLE>[Chapter 11] 11.9 Running a Series of Commands on a File </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:36:10Z"><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="ch11_01.htm"TITLE="11. The Lessons of History"><LINKREL="prev"HREF="ch11_08.htm"TITLE="11.8 Repeating a Cycle of Commands "><LINKREL="next"HREF="ch11_10.htm"TITLE="11.10 Check Your History First with :p "></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="ch11_08.htm"TITLE="11.8 Repeating a Cycle of Commands "><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT="Previous: 11.8 Repeating a Cycle of Commands "BORDER="0"></A></TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="171"><B><FONTFACE="ARIEL,HELVETICA,HELV,SANSERIF"SIZE="-1">Chapter 11<BR>The Lessons of History</FONT></B></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="172"><ACLASS="SECT1"HREF="ch11_10.htm"TITLE="11.10 Check Your History First with :p "><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 11.10 Check Your History First with :p "BORDER="0"></A></TD></TR></TABLE> <HRALIGN="LEFT"WIDTH="515"TITLE="footer"></DIV><DIVCLASS="SECT1"><H2CLASS="sect1"><ACLASS="title"NAME="UPT-ART-6280">11.9 Running a Series of Commands on a File </A></H2><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-12878"></A>[There are times when history is not the best wayto repeat commands.Here, Jerry gives an example where a fewwell-chosen aliases can make a sequence of commands, all run on thesame file, even easier to execute. -TOR]</P><PCLASS="para">While I was writing the articles for this book, I needed to look througha set of files, one by one, and run certain commands on some of those files.I couldn't know which files would need which commands, or in what order.So I typed a few temporary aliases on the C shell command line.(I could have used<SPANCLASS="link">shell functions (<ACLASS="linkend"HREF="ch10_09.htm"TITLE="Shell Functions ">10.9</A>)</SPAN>on <EMCLASS="emphasis">sh</EM>-like shells.)Most of these aliases run<SPANCLASS="link">RCS (<ACLASS="linkend"HREF="ch20_14.htm"TITLE="RCS Basics ">20.14</A>)</SPAN>commands, but they could run any UNIX command (compilers, debuggers,printers, and so on).</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">% <CODECLASS="userinput"><B>alias h 'set f="\!*";co -p -q "$f" | grep NOTE'</B></CODE>% <CODECLASS="userinput"><B>alias o 'co -l "$f"'</B></CODE>% <CODECLASS="userinput"><B>alias v 'vi "$f"'</B></CODE>% <CODECLASS="userinput"><B>alias i 'ci -m"Fixed title." "$f"'</B></CODE></PRE></BLOCKQUOTE></P><PCLASS="para">The <EMCLASS="emphasis">h</EM> alias stores the filename in a<SPANCLASS="link">shell variable (<ACLASS="linkend"HREF="ch06_08.htm"TITLE="Shell Variables ">6.8</A>)</SPAN>.Then it runs a command on that file.What's nice is that, after I use <EMCLASS="emphasis">h</EM> once, I don't need to type thefilename again.Other aliases get the filename from <CODECLASS="literal">$f</CODE>:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">% <CODECLASS="userinput"><B>h ch01_summary</B></CODE>NOTE: Shorten this paragraph:% <CODECLASS="userinput"><B>o</B></CODE>RCS/ch01_summary,v -> ch01_summaryrevision 1.3 (locked)done% <CODECLASS="userinput"><B>v</B></CODE>"ch01_summary" 23 lines, 1243 characters ...</PRE></BLOCKQUOTE></P><PCLASS="para">Typing a new <EMCLASS="emphasis">h</EM> command stores a new filename.</P><PCLASS="para">If you always want to do the same commands on a file, you can store allthe commands in one alias:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">% <CODECLASS="userinput"><B>alias d 'set f="\!*"; co -l "$f" && vi "$f" && ci "$f"'</B></CODE>% <CODECLASS="userinput"><B>d ch01_summary</B></CODE></PRE></BLOCKQUOTE></P><PCLASS="para">The<ACLASS="indexterm"NAME="AUTOID-12909"></A><SPANCLASS="link"><CODECLASS="literal">&&</CODE> (two ampersands) (<ACLASS="linkend"HREF="ch44_09.htm"TITLE="Testing Your Success ">44.9</A>)</SPAN>means that the following command won'trun unless the previous command returns a zero ("success") status.If you don't want that, use<SPANCLASS="link"><CODECLASS="literal">;</CODE> (semicolon) (<ACLASS="linkend"HREF="ch08_05.htm"TITLE="Command-Line Evaluation ">8.5</A>)</SPAN>instead of <CODECLASS="literal">&&</CODE>.</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="ch11_08.htm"TITLE="11.8 Repeating a Cycle of Commands "><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT="Previous: 11.8 Repeating a Cycle of Commands "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="ch11_10.htm"TITLE="11.10 Check Your History First with :p "><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 11.10 Check Your History First with :p "BORDER="0"></A></TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="172">11.8 Repeating a Cycle of Commands </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">11.10 Check Your History First with :p </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 + -