📄 ch02_14.htm
字号:
<HTML><!--Distributed by F --><HEAD><TITLE>[Chapter 2] 2.14 motd.diff: Show New Lines in Login Messages</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:32:18Z"><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="ch02_01.htm"TITLE="2. Logging In"><LINKREL="prev"HREF="ch02_13.htm"TITLE="2.13 A .cshrc.$HOST File for Per Host Setup "><LINKREL="next"HREF="ch02_15.htm"TITLE="2.15 Unclutter Logins: Show Login Messages Just Once "></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="ch02_13.htm"TITLE="2.13 A .cshrc.$HOST File for Per Host Setup "><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT="Previous: 2.13 A .cshrc.$HOST File for Per Host Setup "BORDER="0"></A></TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="171"><B><FONTFACE="ARIEL,HELVETICA,HELV,SANSERIF"SIZE="-1">Chapter 2<BR>Logging In</FONT></B></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="172"><ACLASS="SECT1"HREF="ch02_15.htm"TITLE="2.15 Unclutter Logins: Show Login Messages Just Once "><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 2.15 Unclutter Logins: Show Login Messages Just Once "BORDER="0"></A></TD></TR></TABLE> <HRALIGN="LEFT"WIDTH="515"TITLE="footer"></DIV><DIVCLASS="SECT1"><H2CLASS="sect1"><ACLASS="title"NAME="UPT-ART-4400">2.14 motd.diff: Show New Lines in Login Messages</A></H2><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-3666"></A><ACLASS="indexterm"NAME="AUTOID-3668"></A><ACLASS="indexterm"NAME="AUTOID-3670"></A>One UNIX system I worked on had a really lonnnnnnnng login messagethat scrolled across my screen.It had a lot of old stuff that I'd seen for the last three weeks.For a while, I started ignoring it.But I knew that some day the system manager would put a shutdownnotice in there that I wouldn't see...</P><PCLASS="para">This script solved the problem.I run it from my <EMCLASS="emphasis">.login</EM> file.Each time I log in,the script compares the current <EMCLASS="emphasis">/etc/motd</EM> file to the one on my previouslogin.If lines were added, I see them; the script pauses to give me time to read:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">login: <CODECLASS="userinput"><B>jpeek</B></CODE>Password:Additions to system message-of-the-day:===== 9/5/91 =====The system will be down for maintenance from 9 to 11 tonight.Hit RETURN to continue:</PRE></BLOCKQUOTE></P><PCLASS="para">If there are no new lines, my login is nice and quiet.</P><TABLECLASS="para.programreference"BORDER="1"><TR><THVALIGN="TOP"><ACLASS="programreference"HREF="examples/index.htm"TITLE="motd.diff">motd.diff</A><BR></TH><TDVALIGN="TOP">This works best on systems that look for a file named <EMCLASS="emphasis">.hushlogin</EM> in your home directory and don't print login messages if the file exists.[2]Install the program from the CD-ROM,then add the command <EMCLASS="emphasis">motd.diff</EM>on a line in your <EMCLASS="emphasis">.login</EM> or <EMCLASS="emphasis">.profile</EM>.</TD></TR></TABLE><BLOCKQUOTECLASS="footnote"><PCLASS="para">[2] That also shuts off the message <CODECLASS="literal">You have mail</CODE>.But I <EMCLASS="emphasis">always</EM> have mail, so I don't need that. <CODECLASS="literal">:-)</CODE>If you do, and you use a command like Berkeley <EMCLASS="emphasis">mail</EM> or <EMCLASS="emphasis">mailx</EM>,add this line to your <EMCLASS="emphasis">.login</EM> file:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">if { mail -e } echo You have mail.</PRE></BLOCKQUOTE></P><PCLASS="para">Those <SPANCLASS="link">curly brace (<CODECLASS="literal">{}</CODE>) operators (<ACLASS="linkend"HREF="ch47_04.htm"TITLE="C Shell Variable Operators and Expressions ">47.4</A>)</SPAN>work with the<SPANCLASS="link"><EMCLASS="emphasis">if</EM> (<ACLASS="linkend"HREF="ch47_03.htm"TITLE="Conditional Statements with if ">47.3</A>)</SPAN>,to test the<SPANCLASS="link">exit status (<ACLASS="linkend"HREF="ch44_07.htm"TITLE="Exit Status of UNIX Processes ">44.7</A>)</SPAN>of<EMCLASS="emphasis">mail -e</EM>.If <EMCLASS="emphasis">mail -e</EM> returns zero ("success"),<SPANCLASS="link"><EMCLASS="emphasis">echo</EM> (<ACLASS="linkend"HREF="ch08_06.htm"TITLE="Output Command-Line Arguments ">8.6</A>)</SPAN>prints <CODECLASS="literal">You</CODE> <CODECLASS="literal">have</CODE> <CODECLASS="literal">mail.</CODE></P></BLOCKQUOTE><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-3710"></A><EMCLASS="emphasis">motd.diff</EM> uses<SPANCLASS="link"><EMCLASS="emphasis">diff</EM> (<ACLASS="linkend"HREF="ch28_01.htm#UPT-ART-2680"TITLE="Checking Differences with diff ">28.1</A>)</SPAN>to compare the system's current <EMCLASS="emphasis">motd</EM> to the <EMCLASS="emphasis">motd</EM> at your lastlogin on that host (stored in a file named <EMCLASS="emphasis">.last.motd.</EM><CODECLASS="userinput"><B>hostname</B></CODE>in your home directory).The script finds whether lines have been added by <EMCLASS="emphasis">grep</EM>ping for thecharacter <CODECLASS="literal">></CODE> at the start of each line of <EMCLASS="emphasis">diff</EM> output:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">diff $lastmotd /etc/motd > $temp ...if grep "^>" $temp >/dev/null # diff USES > TO MARK NEW LINESthen <ICLASS="lineannotation">...show lines...</I></PRE></BLOCKQUOTE></P><PCLASS="para">The<ACLASS="indexterm"NAME="AUTOID-3726"></A><SPANCLASS="link"><EMCLASS="emphasis">comm</EM> (<ACLASS="linkend"HREF="ch28_12.htm"TITLE="Comparing Two Files with comm ">28.12</A>)</SPAN>command also shows lines that have been added to a file. But<EMCLASS="emphasis">comm</EM> only handles sorted files; this trick works on unsortedfiles. The<SPANCLASS="link"><CODECLASS="literal">if</CODE> (<ACLASS="linkend"HREF="ch44_08.htm"TITLE="Test Exit Status with the if Statement ">44.8</A>)</SPAN>tests <EMCLASS="emphasis">grep</EM>'s<SPANCLASS="link">exit status (<ACLASS="linkend"HREF="ch44_07.htm"TITLE="Exit Status of UNIX Processes ">44.7</A>)</SPAN>(<EMCLASS="emphasis">grep</EM> returns a zero status when it finds matching lines).<EMCLASS="emphasis">grep</EM>'s output is "thrown away" into<SPANCLASS="link"><EMCLASS="emphasis">/dev/null</EM> (<ACLASS="linkend"HREF="ch13_14.htm"TITLE="What Can You Do with an Empty File? ">13.14</A>)</SPAN>-some versions of grep have a <EMCLASS="emphasis">-s</EM> ("silent") option to do the samething.</P><PCLASS="para">This script is designed to work on networked filesystems where my samehome directory is mounted on more than one computer.If your home directory isn't shared between computers, or if all systemshave the same system messages, you can edit the script to delete the<EMCLASS="emphasis">hostname</EM> variable and command.</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="ch02_13.htm"TITLE="2.13 A .cshrc.$HOST File for Per Host Setup "><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT="Previous: 2.13 A .cshrc.$HOST File for Per Host Setup "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="ch02_15.htm"TITLE="2.15 Unclutter Logins: Show Login Messages Just Once "><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 2.15 Unclutter Logins: Show Login Messages Just Once "BORDER="0"></A></TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="172">2.13 A .cshrc.$HOST File for Per Host Setup </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">2.15 Unclutter Logins: Show Login Messages Just Once </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 + -