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

📄 ch20_15.htm

📁 the unix power tools
💻 HTM
字号:
<HTML><!--Distributed by F --><HEAD><TITLE>[Chapter 20] 20.15 List RCS Revision Numbers with rcsrevs </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-10-23T15:45:07Z"><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="ch20_01.htm"TITLE="20. Backing Up Files"><LINKREL="prev"HREF="ch20_14.htm"TITLE="20.14 RCS Basics "><LINKREL="next"HREF="ch21_01.htm"TITLE="21. More About Managing Files"></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="ch20_14.htm"TITLE="20.14 RCS Basics "><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT="Previous: 20.14 RCS Basics "BORDER="0"></A></TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="171"><B><FONTFACE="ARIEL,HELVETICA,HELV,SANSERIF"SIZE="-1">Chapter 20<BR>Backing Up Files</FONT></B></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="172"><ACLASS="CHAPTER"HREF="ch21_01.htm"TITLE="21. More About Managing Files"><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 21. More About Managing Files"BORDER="0"></A></TD></TR></TABLE>&nbsp;<HRALIGN="LEFT"WIDTH="515"TITLE="footer"></DIV><DIVCLASS="SECT1"><H2CLASS="sect1"><ACLASS="title"NAME="UPT-ART-9906">20.15 List RCS Revision Numbers with rcsrevs </A></H2><TABLECLASS="para.programreference"BORDER="1"><TR><THVALIGN="TOP"><ACLASS="programreference"HREF="examples/index.htm"TITLE="rcsrevs">rcsrevs</A><BR></TH><TDVALIGN="TOP"><ACLASS="indexterm"NAME="AUTOID-22859"></A>The <EMCLASS="emphasis">rcsrevs</EM> script tells you all the revision numbers that arestored in an<SPANCLASS="link">RCS (<ACLASS="linkend"HREF="ch20_14.htm"TITLE="RCS Basics ">20.14</A>)</SPAN>file.For instance:</TD></TR></TABLE><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">% <CODECLASS="userinput"><B>rcsrevs myprog</B></CODE>1.3 1.21.11.2.1.1</PRE></BLOCKQUOTE></P><PCLASS="para">What good is that?Here are two examples.</P><OLCLASS="orderedlist"><LICLASS="listitem"><PCLASS="para"><SPANCLASS="link"><EMCLASS="emphasis">rcsgrep&nbsp;-a</EM> (<ACLASS="linkend"HREF="ch27_10.htm"TITLE="Search RCS Files with rcsgrep ">27.10</A>)</SPAN>uses <EMCLASS="emphasis">rcsrevs</EM> when it's searching all revisions of an RCS file.If you want to print all revisions, run a program across all revisionsto do some kind of check, and so on, <EMCLASS="emphasis">rcsrevs</EM> can give you therevision numbers to use in a<SPANCLASS="link">loop (<ACLASS="linkend"HREF="ch09_12.htm"TITLE="The Bourne Shell for Loop ">9.12</A>, <ACLASS="linkend"HREF="ch09_11.htm"TITLE="Repeating a Command with a foreach Loop ">9.11</A>)</SPAN>.The shell loop below gets all the revision numbers and stores them inthe <EMCLASS="emphasis">revnum</EM> shell variable one by one; it runs<SPANCLASS="link"><EMCLASS="emphasis">co -p</EM> (<ACLASS="linkend"HREF="ch20_14.htm"TITLE="RCS Basics ">20.14</A>)</SPAN>to send each revision to the<SPANCLASS="link"><EMCLASS="emphasis">pr -h</EM> (<ACLASS="linkend"HREF="ch43_07.htm"TITLE="Quick-and-Dirty Formatting Before Printing ">43.7</A>)</SPAN>command for formatting with a custom header;the output of the commands in the loop goes to the printer.</P><PCLASS="para"><TABLECLASS="screen.co"BORDER="1"><TR><THVALIGN="TOP"><PRECLASS="calloutlist"><ACLASS="co"HREF="ch09_16.htm"TITLE="9.16 Command Substitution ">`...`</A> <ACLASS="co"HREF="ch09_13.htm"TITLE="9.13 Multiline Commands, Secondary Prompts ">&gt;</A> <ACLASS="co"HREF="ch45_23.htm"TITLE="45.23 The Ins and Outs of Redirected I/O Loops ">done|lpr</A> </PRE></TH><TDVALIGN="TOP"><PRECLASS="screen">$ <CODECLASS="userinput"><B>for revnum in `rcsrevs </B></CODE><CODECLASS="replaceable"><I>somefile</I></CODE><CODECLASS="userinput"><B>`</B></CODE>&gt; <CODECLASS="userinput"><B>do</B></CODE> &gt;   <CODECLASS="userinput"><B>co -p -r$revnum </B></CODE><CODECLASS="replaceable"><I>somefile</I></CODE><CODECLASS="userinput"><B> | pr -h &quot;</B></CODE><CODECLASS="replaceable"><I>somefile</I></CODE><CODECLASS="userinput"><B> revision #$revnum&quot;</B></CODE>&gt; <CODECLASS="userinput"><B>done | lpr</B></CODE></PRE></TD></TR></TABLE></P><PCLASS="para"></P></LI><LICLASS="listitem"><PCLASS="para">You'd like to compare the two most recent revisions of several RCS filesto see what the last change was.But the revision numbers in each file are different.(One file's latest revision might be 2.4, another file could be at 1.7,etc.)Use<SPANCLASS="link"><EMCLASS="emphasis">head</EM> (<ACLASS="linkend"HREF="ch25_20.htm"TITLE="Printing the Top of a File ">25.20</A>)</SPAN>to grab the two highest revision numbers from the <EMCLASS="emphasis">rcsrevs</EM> output,<SPANCLASS="link"><EMCLASS="emphasis">tail -r</EM> (<ACLASS="linkend"HREF="ch25_15.htm"TITLE="Finer Control on tail ">25.15</A>)</SPAN>to reverse the order (put the older revision number first),use <EMCLASS="emphasis">sed</EM> to make the revision numbers into a pair of <EMCLASS="emphasis">-r</EM> options(like <CODECLASS="literal">-r1.6 -r1.7</CODE>),then run <EMCLASS="emphasis">rcsdiff</EM> to do the comparisons and<SPANCLASS="link">email (<ACLASS="linkend"HREF="ch01_33.htm"TITLE="UNIX Networking and Communications ">1.33</A>)</SPAN>them to <EMCLASS="emphasis">bigboss</EM>:</P><PCLASS="para"><TABLECLASS="screen.co"BORDER="1"><TR><THVALIGN="TOP"><PRECLASS="calloutlist">&#13;<ACLASS="co"HREF="ch09_13.htm"TITLE="9.13 Multiline Commands, Secondary Prompts ">?</A> &#13;</PRE></TH><TDVALIGN="TOP"><PRECLASS="screen">% <CODECLASS="userinput"><B>foreach file (*.cc *.h Makefile)</B></CODE>? <CODECLASS="userinput"><B>set revs=`rcsrevs $f | head -2 | tail -r | sed 's/^/-r/'`</B></CODE>? <CODECLASS="userinput"><B>rcsdiff $revs $f | mail -s &quot;changes to $file&quot; bigboss</B></CODE>? <CODECLASS="userinput"><B>end</B></CODE></PRE></TD></TR></TABLE></P></LI></OL><PCLASS="para"><EMCLASS="emphasis">rcsrevs</EM> accepts <EMCLASS="emphasis">rlog</EM> options to control what revisions areshown.So <EMCLASS="emphasis">rcsrevs&nbsp;-r2 somefile</EM> would list only revisions 2.0 and above,<EMCLASS="emphasis">rcsrevs&nbsp;-sbeta</EM> would list the revisions in <EMCLASS="emphasis">beta</EM> state,and so on.<ACLASS="indexterm"NAME="AUTOID-22922"></A><ACLASS="indexterm"NAME="AUTOID-22923"></A><ACLASS="indexterm"NAME="AUTOID-22924"></A><ACLASS="indexterm"NAME="AUTOID-22925"></A></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="ch20_14.htm"TITLE="20.14 RCS Basics "><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT="Previous: 20.14 RCS Basics "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="CHAPTER"HREF="ch21_01.htm"TITLE="21. More About Managing Files"><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 21. More About Managing Files"BORDER="0"></A></TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="172">20.14 RCS Basics </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">21. More About Managing Files</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 &amp; 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 + -