📄 ch48_11.htm
字号:
<HTML><!--Distributed by F --><HEAD><TITLE>[Chapter 48] 48.11 The index Database Program </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-10-23T15:55:37Z"><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="ch48_01.htm"TITLE="48. Office Automation"><LINKREL="prev"HREF="ch48_10.htm"TITLE="48.10 Working with Names and Addresses "><LINKREL="next"HREF="ch48_12.htm"TITLE="48.12 Using index with a Filter "></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="ch48_10.htm"TITLE="48.10 Working with Names and Addresses "><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT="Previous: 48.10 Working with Names and Addresses "BORDER="0"></A></TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="171"><B><FONTFACE="ARIEL,HELVETICA,HELV,SANSERIF"SIZE="-1">Chapter 48<BR>Office Automation</FONT></B></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="172"><ACLASS="SECT1"HREF="ch48_12.htm"TITLE="48.12 Using index with a Filter "><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 48.12 Using index with a Filter "BORDER="0"></A></TD></TR></TABLE> <HRALIGN="LEFT"WIDTH="515"TITLE="footer"></DIV><DIVCLASS="SECT1"><H2CLASS="sect1"><ACLASS="title"NAME="UPT-ART-9022">48.11 The index Database Program </A></H2><PCLASS="para"><ACLASS="indexterm"NAME="UPT-ART-9022-IX-ADDRESS-DATABASES-INDEX-PROGRAM-FOR-CREATING"></A><ACLASS="indexterm"NAME="UPT-ART-9022-IX-DATABASES-INDEX-PROGRAM-FOR-CREATING"></A><ACLASS="indexterm"NAME="UPT-ART-9022-IX-INDEX-PROGRAM"></A>The <EMCLASS="emphasis">index</EM> program is a flexibledatabase management program.<EMCLASS="emphasis">index</EM> is pretty neat: it works by keeping two files for each database, a field description file and a file of sorted data.It's also fairly intuitive to use, once you get started.</P><PCLASS="para">To use index, you should first set up a database directory. By default,<EMCLASS="emphasis">index</EM> looks for the directory <EMCLASS="emphasis">$HOME/.index</EM>. </P><PCLASS="para"><TABLECLASS="screen.co"BORDER="1"><TR><THVALIGN="TOP"><PRECLASS="calloutlist"><ACLASS="co"HREF="ch14_11.htm"TITLE="14.11 Finding (Anyone's) Home Directory, Quickly ">~</A> </PRE></TH><TDVALIGN="TOP"><PRECLASS="screen">% <CODECLASS="userinput"><B>mkdir ~/.index</B></CODE></PRE></TD></TR></TABLE></P><TABLECLASS="para.programreference"BORDER="1"><TR><THVALIGN="TOP"><ACLASS="programreference"HREF="examples/index.htm"TITLE="index">index</A><BR></TH><TDVALIGN="TOP"> Then when you start up <EMCLASS="emphasis">index</EM> for the first time, you're asked toselect a name for the database you want to use. </TD></TR></TABLE><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">Select a database:</PRE></BLOCKQUOTE></P><PCLASS="para">If you specify thename of a database that doesn't exist yet, <EMCLASS="emphasis">index</EM> assumesthat you want to create it.<EMCLASS="emphasis">index</EM> puts you in the editor specified in your <SPANCLASS="link"><EMCLASS="emphasis">EDITOR</EM> (<ACLASS="linkend"HREF="ch06_03.htm"TITLE="Predefined Environment Variables ">6.3</A>)</SPAN>environment variableso you can list the titles for each field in the new database.Up to 16 fields can be supported. For example, you can create a database called <EMCLASS="emphasis">addresses</EM>, defined tohave the following fields:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">NAMETITLEORGANIZATIONSTREET ADDRESSCITYSTATEZIP CODEVOICE PHONE NUMBERFAX PHONE NUMBEREMAIL ADDRESS</PRE></BLOCKQUOTE></P><PCLASS="para">After exiting the editor, you are put into the main menu:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">Database: addresses (0 entries) a - Add new entry to database f - Find entry in database r - Read database entry by entry s - Save modifications, do not exit q - Save modifications, exit x - ExitCommand:</PRE></BLOCKQUOTE></P><PCLASS="para"> There are no entries in the new database. You can start adding entriesnow by pressing <CODECLASS="literal">a</CODE>. </P><PCLASS="para">When editing an entry in the database, you'reprompted by each of the fields that were set up when the databasewas defined.After completing a field, press RETURN to get to the nextfield. There are also a limited number of escape sequences supported for editing and movingaround - for example, CTRL-d to delete to the end of the line,or CTRL-p to move up a line.When you're done with the entire entry, press ESCAPE. </P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">NAME: <CODECLASS="userinput"><B>Stella Rosenzweig</B></CODE>TITLE: <CODECLASS="userinput"><B>Mom</B></CODE>ORGANIZATION:STREET ADDRESS: <CODECLASS="userinput"><B>2456 Bronx Park East</B></CODE>CITY: <CODECLASS="userinput"><B>Bronx</B></CODE>STATE: <CODECLASS="userinput"><B>NY</B></CODE>ZIP CODE: <CODECLASS="userinput"><B>10467</B></CODE>VOICE PHONE NUMBER: <CODECLASS="userinput"><B>718-231-2618</B></CODE>FAX PHONE NUMBER:EMAIL ADDRESS:</PRE></BLOCKQUOTE></P><PCLASS="para">Once you've saved the new entry, you'll be back to the main menu.You can now add more entries, look at existing entries, search for astring in one of the existing entries, or exit.</P><PCLASS="para"> To search for an existing entry, press <CODECLASS="literal">f</CODE> at the main menu. You'll be asked for the searchpattern:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">Pattern to search for: <CODECLASS="userinput"><B>Ben</B></CODE></PRE></BLOCKQUOTE></P><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-58356"></A>The <EMCLASS="emphasis">index</EM> program searches all fields matching the string.<SPANCLASS="link">Regular expressions (<ACLASS="linkend"HREF="ch26_04.htm"TITLE="Using Metacharacters in Regular Expressions ">26.4</A>)</SPAN>are also accepted in the search string.Each entry with the matching string is shown, one-by-one:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">NAME: Benjamin BraddockTITLE: Sales ManagerORGANIZATION: Acme Plastics, Inc.STREET ADDRESS: 103 Morris St., Suite ACITY: TucsonSTATE: AZZIP CODE: 85472VOICE PHONE NUMBER: 800-998-9938FAX PHONE NUMBER: 800-999-9999EMAIL ADDRESS: ben@acme.com <RET> = next entry "d" = delete this entry "-" = previous entry "e" = edit this entry "q" = return to main menuCommand:</PRE></BLOCKQUOTE></P><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-58364"></A>You can also search for strings on the <EMCLASS="emphasis">index</EM> command line.To do so, specify both the database name and the string. (Enclosethe search string in<SPANCLASS="link">single quotes (<ACLASS="linkend"HREF="ch08_14.htm"TITLE="Bourne Shell Quoting ">8.14</A>)</SPAN>if you want to use aregular expression.)</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">% <CODECLASS="userinput"><B>index addresses '[bB]en'</B></CODE></PRE></BLOCKQUOTE></P><PCLASS="para">All matching entries will be printed to standard output.</P><PCLASS="para">The most common use for a database like this is to maintaininformation about people. But youcan use <EMCLASS="emphasis">index</EM> to maintain all sorts of information.For example, you might keep one for information about local restaurants:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">NAME: Rooster BBQ & GrillSTREET ADDRESS: 1122 Rooster Ave.CITY: CambridgePHONE: 555-1212RESERVATIONS (y,n): nFOOD (1=poor, 10=excellent): 8DECOR (1=poor, 10=excellent): 2SERVICE (1=poor, 10=excellent): 6RECOMMENDED DISHES: Baby-back ribs, Elvis pizzaSTAY AWAY FROM: Pulled turkey plate, mango pieRECOMMENDED BY: Jerry, Boston Phoenix</PRE></BLOCKQUOTE></P><PCLASS="para">For even more flexibility, <EMCLASS="emphasis">index</EM> can run a<SPANCLASS="link">filter program (<ACLASS="linkend"HREF="ch48_12.htm"TITLE="Using index with a Filter ">48.12</A>)</SPAN>.<ACLASS="indexterm"NAME="AUTOID-58380"></A><ACLASS="indexterm"NAME="AUTOID-58381"></A><ACLASS="indexterm"NAME="AUTOID-58382"></A></P><DIVCLASS="sect1info"><PCLASS="SECT1INFO">- <SPANCLASS="authorinitials">LM</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="ch48_10.htm"TITLE="48.10 Working with Names and Addresses "><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT="Previous: 48.10 Working with Names and Addresses "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="ch48_12.htm"TITLE="48.12 Using index with a Filter "><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 48.12 Using index with a Filter "BORDER="0"></A></TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="172">48.10 Working with Names and Addresses </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">48.12 Using index with a Filter </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 + -