📄 ch16_16.htm
字号:
<HTML><!--Distributed by F --><HEAD><TITLE>[Chapter 16] 16.16 Picking a Unique Filename Automatically </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:37:50Z"><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="ch16_01.htm"TITLE="16. Where Did I Put That?"><LINKREL="prev"HREF="ch16_15.htm"TITLE="16.15 Script with a :-) for UNIX Converts: dir, ..., ... "><LINKREL="next"HREF="ch16_17.htm"TITLE="16.17 Getting Directory Name from a File's Pathname "></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="ch16_15.htm"TITLE="16.15 Script with a :-) for UNIX Converts: dir, ..., ... "><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT="Previous: 16.15 Script with a :-) for UNIX Converts: dir, ..., ... "BORDER="0"></A></TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="171"><B><FONTFACE="ARIEL,HELVETICA,HELV,SANSERIF"SIZE="-1">Chapter 16<BR>Where Did I Put That?</FONT></B></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="172"><ACLASS="SECT1"HREF="ch16_17.htm"TITLE="16.17 Getting Directory Name from a File's Pathname "><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 16.17 Getting Directory Name from a File's Pathname "BORDER="0"></A></TD></TR></TABLE> <HRALIGN="LEFT"WIDTH="515"TITLE="footer"></DIV><DIVCLASS="SECT1"><H2CLASS="sect1"><ACLASS="title"NAME="UPT-ART-0007">16.16 Picking a Unique Filename Automatically </A></H2><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-17425"></A><ACLASS="indexterm"NAME="AUTOID-17428"></A><ACLASS="indexterm"NAME="AUTOID-17431"></A>Shell scripts, aliases, and other programs can need temporary filesto hold data used later.If the program will be run more than once, or if the temp file needsto stay around after the program is done, you need some way to make aunique filename.</P><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-17435"></A>One way is with the shell's<SPANCLASS="link">process ID number (<ACLASS="linkend"HREF="ch38_03.htm"TITLE="Managing Processes: Overall Concepts ">38.3</A>)</SPAN>,available in the<SPANCLASS="link"> <EMCLASS="emphasis">$$</EM> parameter and often used in the <EMCLASS="emphasis">/tmp</EM> directory . (<ACLASS="linkend"HREF="ch21_03.htm"TITLE="Unique Names for Temporary Files ">21.3</A>)</SPAN>You might name a file <EMCLASS="emphasis">/tmp/MYPROG$$</EM>; the shell will turn that into something like <EMCLASS="emphasis">/tmp/MYPROG1234</EM> or <EMCLASS="emphasis">/tmp/MYPROG28471</EM>.If your program needs more than one temporary file, add an extra unique character to the names:</P><PCLASS="para"> <BLOCKQUOTECLASS="screen"><PRECLASS="screen">errs=/tmp/MYPROGe$$ output=/tmp/MYPROGo$$</PRE></BLOCKQUOTE> </P><PCLASS="para">Remember the 14-character filename limit on some older UNIXes. <EMCLASS="emphasis">$$</EM> usually makes two to five characters.</P><PCLASS="para"> If your UNIX doesn't have a <ACLASS="indexterm"NAME="AUTOID-17449"></A> <EMCLASS="emphasis">date</EM> command that takes a <CODECLASS="literal">+</CODE> parameter to change its output format, you should<SPANCLASS="link">get one (<ACLASS="linkend"HREF="ch51_10.htm"TITLE="The date Command ">51.10</A>)</SPAN>. For example, to outputthe <EMCLASS="emphasis">m</EM>onth, <EMCLASS="emphasis">d</EM>ay, <EMCLASS="emphasis">H</EM>our, <EMCLASS="emphasis">M</EM>inute, and <EMCLASS="emphasis">S</EM>econd:</P><PCLASS="para"> <BLOCKQUOTECLASS="screen"><PRECLASS="screen">% <CODECLASS="userinput"><B>date</B></CODE> Thu May 30 07:21:13 EDT 1991% <CODECLASS="userinput"><B>date +'%m%d%H%M%S'</B></CODE> 0530072124</PRE></BLOCKQUOTE> </P><PCLASS="para">Use a <CODECLASS="literal">+</CODE> parameter and <SPANCLASS="link"> backquotes (<CODECLASS="literal">``</CODE>) (<ACLASS="linkend"HREF="ch09_16.htm"TITLE="Command Substitution ">9.16</A>)</SPAN>to get a temp file named for the current date and/or time.For instance, on May 31 the command below would store <EMCLASS="emphasis">foo.0531</EM> in the Bourne shell variable <EMCLASS="emphasis">temp</EM>.On December 7, it would store <EMCLASS="emphasis">foo.1207</EM>: </P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen"> temp=foo.`date +'%m%d'`</PRE></BLOCKQUOTE> </P><PCLASS="para">Article <ACLASS="xref"HREF="ch21_03.htm"TITLE="Unique Names for Temporary Files ">21.3</A>shows another system for temporary files. </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="ch16_15.htm"TITLE="16.15 Script with a :-) for UNIX Converts: dir, ..., ... "><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT="Previous: 16.15 Script with a :-) for UNIX Converts: dir, ..., ... "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="ch16_17.htm"TITLE="16.17 Getting Directory Name from a File's Pathname "><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 16.17 Getting Directory Name from a File's Pathname "BORDER="0"></A></TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="172">16.15 Script with a :-) for UNIX Converts: dir, ..., ... </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">16.17 Getting Directory Name from a File's Pathname </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 + -