﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-&lt;font color="red"&gt;JRen&lt;/font&gt;&lt;font color="lightgreen"&gt;大鹏一曰同风起，扶摇直上九万里&lt;/font&gt;-随笔分类-Linux</title><link>http://www.blogjava.net/liaojiyong/category/19327.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 20 Nov 2007 18:35:51 GMT</lastBuildDate><pubDate>Tue, 20 Nov 2007 18:35:51 GMT</pubDate><ttl>60</ttl><item><title>linux配置sendmail的问题 </title><link>http://www.blogjava.net/liaojiyong/archive/2007/11/20/161924.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Tue, 20 Nov 2007 11:41:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2007/11/20/161924.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/161924.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2007/11/20/161924.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/161924.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/161924.html</trackback:ping><description><![CDATA[<table cellspacing="0" cellpadding="0" width="750" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img alt="ChinaUnix.net" src="http://www.chinaunix.net/bbs/myimages/logo.gif" border="0" /></div>
            </td>
        </tr>
        <tr>
            <td>
            <table cellspacing="0" cellpadding="0" width="100%" border="0">
                <tbody>
                    <tr>
                        <td width="100%" bgcolor="#49ade9" height="17"><font color="#ffffff">&nbsp;&gt;&gt; <a href="http://www.chinaunix.net/"><font color="#ffffff">ChinaUnix.net</font></a> &gt; <a href="http://www.chinaunix.net/cgi-bin/bbs/forums.cgi?forum=1"><font color="#ffffff">Linux</font></a> </font></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<table cellspacing="0" cellpadding="0" width="750" align="center" border="0">
    <tbody>
        <tr>
            <td><span style="font-size: 14px"><br />
            <center><strong>请问关于linux配置sendmail的问题 </strong></center><br />
            <div></div>
            </span></td>
        </tr>
        <tr>
            <td>
            <div align="center">作者：<a href="http://www.chinaunix.net/cgi-bin/bbs/profile.cgi?action=show&amp;member=最美的风景" target="_blank">最美的风景</a> &nbsp;&nbsp;&nbsp;&nbsp;发表时间：2002/09/24 09:02am</div>
            <br />
            </td>
        </tr>
        <tr>
            <td align="center">
            <table cellspacing="0" cellpadding="0" width="90%" border="0">
                <tbody>
                    <tr>
                        <td><span style="font-size: 14px">linux里面没有inetd.conf这个文件<br />
                        配置sendmail应该如何做<br />
                        谢谢 </span></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
    <table>
        <tbody>
        </tbody>
    </table>
    <table cellspacing="0" cellpadding="0" width="750" align="center" border="0">
        <tbody>
            <tr>
                <td>
                <hr size="1" />
                此文章相关评论: <br />
                </td>
            </tr>
            <tr>
                <td>该文章有<font color="#ff0000">20</font>个相关评论如下：(<a href="http://www.chinaunix.net/cgi-bin/bbs/topic.cgi?forum=1&amp;topic=5245" target="_blank"><font color="#ffa200">点这儿可以发表评论</font></a>)<br />
                </td>
            </tr>
            <tr>
                <td>
                <table cellspacing="0" cellpadding="0" width="90%" border="0">
                    <tbody>
                        <tr>
                            <td>
                            <table style="table-layout: fixed" cellspacing="1" cellpadding="8" width="100%" border="0">
                                <tbody>
                                    <tr>
                                        <td valign="top" width="20%" bgcolor="#ffffff" rowspan="2"><font color="#000000"><strong><a href="http://www.chinaunix.net/cgi-bin/bbs/profile.cgi?action=show&amp;member=wind521" target="_blank">wind521</a></strong></font></td>
                                        <td bgcolor="#ffffff"><font color="#000000"><strong>发表于： 2002/09/24 10:11am</strong><br />
                                        </font></td>
                                    </tr>
                                    <tr>
                                        <td style="left: 0px; width: 100%; word-wrap: break-word" bgcolor="#ffffff">有自己的一个进程:/etc/init.d/sendmail
                                        <p>配置文件在:/etc/sendmail.cf</p>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td align="right" bgcolor="#eeeeee" colspan="2">&nbsp;</td>
                                    </tr>
                                </tbody>
                            </table>
                            <table style="table-layout: fixed" cellspacing="1" cellpadding="8" width="100%" border="0">
                                <tbody>
                                    <tr>
                                        <td valign="top" width="20%" bgcolor="#ffffff" rowspan="2"><font color="#000000"><strong><a href="http://www.chinaunix.net/cgi-bin/bbs/profile.cgi?action=show&amp;member=aaron2002" target="_blank">aaron2002</a></strong></font></td>
                                        <td bgcolor="#ffffff"><font color="#000000"><strong>发表于： 2002/09/24 10:54am</strong><br />
                                        </font></td>
                                    </tr>
                                    <tr>
                                        <td style="left: 0px; width: 100%; word-wrap: break-word" bgcolor="#ffffff">原来/etc/inetd.conf里的东西都在/etc/xinetd.d/目录下面</td>
                                    </tr>
                                    <tr>
                                        <td align="right" bgcolor="#eeeeee" colspan="2">&nbsp;</td>
                                    </tr>
                                </tbody>
                            </table>
                            <table style="table-layout: fixed" cellspacing="1" cellpadding="8" width="100%" border="0">
                                <tbody>
                                    <tr>
                                        <td valign="top" width="20%" bgcolor="#ffffff" rowspan="2"><font color="#000000"><strong><a href="http://www.chinaunix.net/cgi-bin/bbs/profile.cgi?action=show&amp;member=yano" target="_blank">yano</a></strong></font></td>
                                        <td bgcolor="#ffffff"><font color="#000000"><strong>发表于： 2002/09/24 10:58am</strong><br />
                                        </font></td>
                                    </tr>
                                    <tr>
                                        <td style="left: 0px; width: 100%; word-wrap: break-word" bgcolor="#ffffff">sendmail的安装，您首先要保证域名提供商为你的主机做了MX记录的域名解析。我做的MX记录如下。
                                        <p>名　称：abc.com<br />
                                        类　型：mx(10)<br />
                                        主机名：mx1.abc.com
                                        <p>同时给主机做了mx1.abc.com的A记录。
                                        <p>测试MX记录是否生效，您可以用nslookup<br />
                                        #nslookup<br />
                                        &gt; set q=mx<br />
                                        &gt; abc.com<br />
                                        这时您就会从系统显示出的信息中看到您的MX记录是否生效。
                                        <p>REDHAT7.0安装完毕后，系统默认已经安装了sendmail-cf-8.11.0-8.i386.rpm软件包，请检查/etc/下是否有sendmail.cf文件，如果没有，请安装sendmail-cf-8.11.0-8.i386.rpm的软件包，在linux的光盘中有。<br />
                                        　　<br />
                                        配置：<br />
                                        /etc/sendmail.cf
                                        <p>Cwlocalhost　abc mx1.abc.com
                                        <p>/etc/mail/access
                                        <p>添加：<br />
                                        1.2.3.4RELAY（1.2.3.4是我的IP）
                                        <p>/etc/mail/local-host-names<br />
                                        　　<br />
                                        abc.com（添加一别名，为了收取user@abc.com格式的信件）
                                        <p>为了用户可以使用foxmail，outlook等软件进行收信。您需要安装imap。打开系统的pop3端口。<br />
                                        请查看/usr/sbin/下是否含有ipop2d、ipop3d文件，如没有，请安装imap-4.7c2-12.i386.rpm软件包。
                                        <p>配置：
                                        <p>/etc/xinetd.d/ipop2
                                        <p>默认：disable=yes　改为：disable=no
                                        <p>/etc/xinetd.d/ipop3
                                        <p>默认：disable=yes　改为：disable=no
                                        <p>/etc/xinetd.d/ipop3
                                        <p>默认：disable=yes　改为：disable=no
                                        <p>/etc/xinetd.d/pops
                                        <p>默认：disable=yes　改为：disable=no
                                        <p><br />
                                        最后：
                                        <p>/etc/rc.d/init.d/xinetd restart
                                        <p>邮件系统用户的添加与删除：
                                        <p>添加：<br />
                                        # /user/sbin/useradd username mail<br />
                                        #passwd username<br />
                                        #chsh username<br />
                                        /bin/true(更新用户的shells)
                                        <p>删除：
                                        <p>#/ /usr/sbin/userdel username
                                        <p>
                                        <p>这时，如果您的MX记录解析成功，工作正常，上述操作无误，您就可以在windows客户端通过foxmail，outlook进行收发邮件了，设置：邮箱地址：username@abc.com，账号：username，口令：网络管理员会告诉你，pop3：mx1.abc.com　smtp：mx1.abc.com<br />
                                        </p>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td align="right" bgcolor="#eeeeee" colspan="2">&nbsp;</td>
                                    </tr>
                                </tbody>
                            </table>
                            <table style="table-layout: fixed" cellspacing="1" cellpadding="8" width="100%" border="0">
                                <tbody>
                                    <tr>
                                        <td valign="top" width="20%" bgcolor="#ffffff" rowspan="2"><font color="#000000"><strong><a href="http://www.chinaunix.net/cgi-bin/bbs/profile.cgi?action=show&amp;member=最美的风景" target="_blank">最美的风景</a></strong></font></td>
                                        <td bgcolor="#ffffff"><font color="#000000"><strong>发表于： 2002/09/24 11:00am</strong><br />
                                        </font></td>
                                    </tr>
                                    <tr>
                                        <td style="left: 0px; width: 100%; word-wrap: break-word" bgcolor="#ffffff">非常感谢各位<br />
                                        这些我已经配好了<br />
                                        我配popper的时候,打不开110端口,不能用pop3<br />
                                        请问怎么打开?<br />
                                        在xinetd.conf里面么?</td>
                                    </tr>
                                    <tr>
                                        <td align="right" bgcolor="#eeeeee" colspan="2">&nbsp;</td>
                                    </tr>
                                </tbody>
                            </table>
                            <table style="table-layout: fixed" cellspacing="1" cellpadding="8" width="100%" border="0">
                                <tbody>
                                    <tr>
                                        <td valign="top" width="20%" bgcolor="#ffffff" rowspan="2"><font color="#000000"><strong><a href="http://www.chinaunix.net/cgi-bin/bbs/profile.cgi?action=show&amp;member=yano" target="_blank">yano</a></strong></font></td>
                                        <td bgcolor="#ffffff"><font color="#000000"><strong>发表于： 2002/09/24 11:06am</strong><br />
                                        </font></td>
                                    </tr>
                                    <tr>
                                        <td style="left: 0px; width: 100%; word-wrap: break-word" bgcolor="#ffffff">看上面我回复的帖子，上面有</td>
                                    </tr>
                                    <tr>
                                        <td align="right" bgcolor="#eeeeee" colspan="2">&nbsp;</td>
                                    </tr>
                                </tbody>
                            </table>
                            <table style="table-layout: fixed" cellspacing="1" cellpadding="8" width="100%" border="0">
                                <tbody>
                                    <tr>
                                        <td valign="top" width="20%" bgcolor="#ffffff" rowspan="2"><font color="#000000"><strong><a href="http://www.chinaunix.net/cgi-bin/bbs/profile.cgi?action=show&amp;member=aaron2002" target="_blank">aaron2002</a></strong></font></td>
                                        <td bgcolor="#ffffff"><font color="#000000"><strong>发表于： 2002/09/24 12:37pm</strong><br />
                                        </font></td>
                                    </tr>
                                    <tr>
                                        <td style="left: 0px; width: 100%; word-wrap: break-word" bgcolor="#ffffff">你要自己在/etc/xinetd.d/目录下创建一个pop3文件,至于这个文件的内容怎么写,你可以参照这个目录下其它文件的内容.</td>
                                    </tr>
                                    <tr>
                                        <td align="right" bgcolor="#eeeeee" colspan="2">&nbsp;</td>
                                    </tr>
                                </tbody>
                            </table>
                            <table style="table-layout: fixed" cellspacing="1" cellpadding="8" width="100%" border="0">
                                <tbody>
                                    <tr>
                                        <td valign="top" width="20%" bgcolor="#ffffff" rowspan="2"><font color="#000000"><strong><a href="http://www.chinaunix.net/cgi-bin/bbs/profile.cgi?action=show&amp;member=林晓风" target="_blank">林晓风</a></strong></font></td>
                                        <td bgcolor="#ffffff"><font color="#000000"><strong>发表于： 2002/11/01 04:05pm</strong><br />
                                        </font></td>
                                    </tr>
                                    <tr>
                                        <td style="left: 0px; width: 100%; word-wrap: break-word" bgcolor="#ffffff">请问<br />
                                        我在 redhat linux 7.1 上配置的 sendmail 邮箱在outlook里为什么不能发邮件? 收邮件正常<br />
                                        默认情况下,smtp 端口不是打开的么?<br />
                                        我发邮件时,出错如下: &nbsp; &nbsp; &nbsp; &nbsp;
                                        <p>无法连接到服务器。 帐户: '172.1.0.3', 服务器: '172.1.0.3', 协议: SMTP, 端口: 25, 安全(SSL): 否, 套接字错误: 10061, 错误号: 0x800CCC0E
                                        <p>我该怎么办呢?
                                        <p>&nbsp;</p>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td align="right" bgcolor="#eeeeee" colspan="2">&nbsp;</td>
                                    </tr>
                                </tbody>
                            </table>
                            <table style="table-layout: fixed" cellspacing="1" cellpadding="8" width="100%" border="0">
                                <tbody>
                                    <tr>
                                        <td valign="top" width="20%" bgcolor="#ffffff" rowspan="2"><font color="#000000"><strong><a href="http://www.chinaunix.net/cgi-bin/bbs/profile.cgi?action=show&amp;member=aaron2002" target="_blank">aaron2002</a></strong></font></td>
                                        <td bgcolor="#ffffff"><font color="#000000"><strong>发表于： 2002/11/01 04:18pm</strong><br />
                                        </font></td>
                                    </tr>
                                    <tr>
                                        <td style="left: 0px; width: 100%; word-wrap: break-word" bgcolor="#ffffff">"无法连接到服务器"???<br />
                                        请确认你的服务器是否正常运行,SMTP端口是否打开.<br />
                                        telnet x.x.x.x 25<br />
                                        </td>
                                    </tr>
                                    <tr>
                                        <td align="right" bgcolor="#eeeeee" colspan="2">&nbsp;</td>
                                    </tr>
                                </tbody>
                            </table>
                            <table style="table-layout: fixed" cellspacing="1" cellpadding="8" width="100%" border="0">
                                <tbody>
                                    <tr>
                                        <td valign="top" width="20%" bgcolor="#ffffff" rowspan="2"><font color="#000000"><strong><a href="http://www.chinaunix.net/cgi-bin/bbs/profile.cgi?action=show&amp;member=林晓风" target="_blank">林晓风</a></strong></font></td>
                                        <td bgcolor="#ffffff"><font color="#000000"><strong>发表于： 2002/11/01 04:27pm</strong><br />
                                        </font></td>
                                    </tr>
                                    <tr>
                                        <td style="left: 0px; width: 100%; word-wrap: break-word" bgcolor="#ffffff">我在 &nbsp;win98 &nbsp;的 outlook 里能正常收信啊,
                                        <p>在发信时报那种错
                                        <p>redhat linux 7.1中 smtp 不是默认打开的吗?
                                        <p># netstat -a | grep "smtp" <br />
                                        tcp &nbsp; 0 &nbsp; 0 &nbsp; &nbsp;localhost:smtp &nbsp; &nbsp;*:* &nbsp; &nbsp;listen
                                        <p>c:&gt;telnet linuxhost smtp<br />
                                        &nbsp;无法打开到主机的连接 在 smtp 端口:连接失败
                                        <p>&nbsp;</p>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td align="right" bgcolor="#eeeeee" colspan="2">&nbsp;</td>
                                    </tr>
                                </tbody>
                            </table>
                            <table style="table-layout: fixed" cellspacing="1" cellpadding="8" width="100%" border="0">
                                <tbody>
                                    <tr>
                                        <td valign="top" width="20%" bgcolor="#ffffff" rowspan="2"><font color="#000000"><strong><a href="http://www.chinaunix.net/cgi-bin/bbs/profile.cgi?action=show&amp;member=林晓风" target="_blank">林晓风</a></strong></font></td>
                                        <td bgcolor="#ffffff"><font color="#000000"><strong>发表于： 2002/11/01 04:52pm</strong><br />
                                        </font></td>
                                    </tr>
                                    <tr>
                                        <td style="left: 0px; width: 100%; word-wrap: break-word" bgcolor="#ffffff">&nbsp;aaron2002 &nbsp; ,救救我啊</td>
                                    </tr>
                                    <tr>
                                        <td align="right" bgcolor="#eeeeee" colspan="2">&nbsp;</td>
                                    </tr>
                                </tbody>
                            </table>
                            <table style="table-layout: fixed" cellspacing="1" cellpadding="8" width="100%" border="0">
                                <tbody>
                                    <tr>
                                        <td valign="top" width="20%" bgcolor="#ffffff" rowspan="2"><font color="#000000"><strong><a href="http://www.chinaunix.net/cgi-bin/bbs/profile.cgi?action=show&amp;member=林晓风" target="_blank">林晓风</a></strong></font></td>
                                        <td bgcolor="#ffffff"><font color="#000000"><strong>发表于： 2002/11/04 05:28pm</strong><br />
                                        </font></td>
                                    </tr>
                                    <tr>
                                        <td style="left: 0px; width: 100%; word-wrap: break-word" bgcolor="#ffffff">救救我啊 </td>
                                    </tr>
                                    <tr>
                                        <td align="right" bgcolor="#eeeeee" colspan="2">&nbsp;</td>
                                    </tr>
                                </tbody>
                            </table>
                            <table style="table-layout: fixed" cellspacing="1" cellpadding="8" width="100%" border="0">
                                <tbody>
                                    <tr>
                                        <td valign="top" width="20%" bgcolor="#ffffff" rowspan="2"><font color="#000000"><strong><a href="http://www.chinaunix.net/cgi-bin/bbs/profile.cgi?action=show&amp;member=deep-way" target="_blank">deep-way</a></strong></font></td>
                                        <td bgcolor="#ffffff"><font color="#000000"><strong>发表于： 2002/11/07 10:11am</strong><br />
                                        </font></td>
                                    </tr>
                                    <tr>
                                        <td style="left: 0px; width: 100%; word-wrap: break-word" bgcolor="#ffffff">我装了Red Hat linux 7.2，sendmail也是自带的，版本是V9<br />
                                        DNS都已经检查过，完全正常。<br />
                                        POP协议是装在/etc/xinetd.d下pop文件（自己建的），netstat 已经看到0.0.0.0:110<br />
                                        sendmail用ps -ef监测也是工作正常<br />
                                        sendmail.cf和access文件也已经设置过<br />
                                        问题是，我在outlook express里设置了账号，收邮件时报错<br />
                                        报错信息为：<br />
                                        POP3服务器已经60秒内没有响应。是否继续等待60秒以便服务器响应<br />
                                        账户：xxx.test.com<br />
                                        服务器：xxx.test.com
                                        <p>不知是何原因？请各位大侠指教</p>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td align="right" bgcolor="#eeeeee" colspan="2">&nbsp;</td>
                                    </tr>
                                </tbody>
                            </table>
                            <table style="table-layout: fixed" cellspacing="1" cellpadding="8" width="100%" border="0">
                                <tbody>
                                    <tr>
                                        <td valign="top" width="20%" bgcolor="#ffffff" rowspan="2"><font color="#000000"><strong><a href="http://www.chinaunix.net/cgi-bin/bbs/profile.cgi?action=show&amp;member=brucectl" target="_blank">brucectl</a></strong></font></td>
                                        <td bgcolor="#ffffff"><font color="#000000"><strong>发表于： 2002/11/13 06:25pm</strong><br />
                                        </font></td>
                                    </tr>
                                    <tr>
                                        <td style="left: 0px; width: 100%; word-wrap: break-word" bgcolor="#ffffff">你的DNS服务器有问题！<br />
                                        </td>
                                    </tr>
                                    <tr>
                                        <td align="right" bgcolor="#eeeeee" colspan="2">&nbsp;</td>
                                    </tr>
                                </tbody>
                            </table>
                            <table style="table-layout: fixed" cellspacing="1" cellpadding="8" width="100%" border="0">
                                <tbody>
                                    <tr>
                                        <td valign="top" width="20%" bgcolor="#ffffff" rowspan="2"><font color="#000000"><strong><a href="http://www.chinaunix.net/cgi-bin/bbs/profile.cgi?action=show&amp;member=李勇" target="_blank">李勇</a></strong></font></td>
                                        <td bgcolor="#ffffff"><font color="#000000"><strong>发表于： 2002/11/14 08:18pm</strong><br />
                                        </font></td>
                                    </tr>
                                    <tr>
                                        <td style="left: 0px; width: 100%; word-wrap: break-word" bgcolor="#ffffff">Red Hat linux 7.1，<br />
                                        sendmail,pop3都起来了<br />
                                        用foxmail可以发信成功（没有错误信息），可是foxmail收不到。<br />
                                        在linux下用mail发信，foxmail却可以收到。<br />
                                        不知是何原因？请各位大侠指教
                                        <p>&nbsp;</p>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td align="right" bgcolor="#eeeeee" colspan="2">&nbsp;</td>
                                    </tr>
                                </tbody>
                            </table>
                            <table style="table-layout: fixed" cellspacing="1" cellpadding="8" width="100%" border="0">
                                <tbody>
                                    <tr>
                                        <td valign="top" width="20%" bgcolor="#ffffff" rowspan="2"><font color="#000000"><strong><a href="http://www.chinaunix.net/cgi-bin/bbs/profile.cgi?action=show&amp;member=wildcamel" target="_blank">wildcamel</a></strong></font></td>
                                        <td bgcolor="#ffffff"><font color="#000000"><strong>发表于： 2002/11/15 09:36am</strong><br />
                                        </font></td>
                                    </tr>
                                    <tr>
                                        <td style="left: 0px; width: 100%; word-wrap: break-word" bgcolor="#ffffff">[这个贴子最后由wildcamel在 2002/11/15 09:45am 编辑]<br />
                                        <br />
                                        "我在 &nbsp;win98 &nbsp;的 outlook 里能正常收信啊,<br />
                                        在发信时报那种错
                                        <p>redhat linux 7.1中 smtp 不是默认打开的吗?
                                        <p># netstat -a | grep "smtp" <br />
                                        tcp &nbsp; 0 &nbsp; 0 &nbsp; &nbsp;localhost:smtp &nbsp; &nbsp;*:* &nbsp; &nbsp;listen
                                        <p>c:&gt;telnet linuxhost smtp<br />
                                        无法打开到主机的连接 在 smtp 端口:连接失败 """"<br />
                                        <br />
                                        sendmail.cf <br />
                                        # SMTP daemon options
                                        <p>O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA 改成
                                        <p>O DaemonPortOptions=Port=smtp,Addr=你的主机ip, Name=MTA</p>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td align="right" bgcolor="#eeeeee" colspan="2">&nbsp;</td>
                                    </tr>
                                </tbody>
                            </table>
                            <table style="table-layout: fixed" cellspacing="1" cellpadding="8" width="100%" border="0">
                                <tbody>
                                    <tr>
                                        <td valign="top" width="20%" bgcolor="#ffffff" rowspan="2"><font color="#000000"><strong><a href="http://www.chinaunix.net/cgi-bin/bbs/profile.cgi?action=show&amp;member=林晓风" target="_blank">林晓风</a></strong></font></td>
                                        <td bgcolor="#ffffff"><font color="#000000"><strong>发表于： 2002/11/15 09:50am</strong><br />
                                        </font></td>
                                    </tr>
                                    <tr>
                                        <td style="left: 0px; width: 100%; word-wrap: break-word" bgcolor="#ffffff">李勇,<br />
                                        你的问题跟我的一样啊
                                        <p>可就是没人回答
                                        <p>哎.... 世态炎凉啊</p>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td align="right" bgcolor="#eeeeee" colspan="2">&nbsp;</td>
                                    </tr>
                                </tbody>
                            </table>
                            <table style="table-layout: fixed" cellspacing="1" cellpadding="8" width="100%" border="0">
                                <tbody>
                                    <tr>
                                        <td valign="top" width="20%" bgcolor="#ffffff" rowspan="2"><font color="#000000"><strong><a href="http://www.chinaunix.net/cgi-bin/bbs/profile.cgi?action=show&amp;member=李勇" target="_blank">李勇</a></strong></font></td>
                                        <td bgcolor="#ffffff"><font color="#000000"><strong>发表于： 2002/11/15 09:51am</strong><br />
                                        </font></td>
                                    </tr>
                                    <tr>
                                        <td style="left: 0px; width: 100%; word-wrap: break-word" bgcolor="#ffffff">sendmail.cf 这个我已改了<br />
                                        另外在这个文件中 Cwlocalhost=主机ip<br />
                                        是不是应该这样。<br />
                                        我在两台机器7.1,7.2上都试过了，都是同样的毛病？？？？<br />
                                        大家救命啊<br />
                                        </td>
                                    </tr>
                                    <tr>
                                        <td align="right" bgcolor="#eeeeee" colspan="2">&nbsp;</td>
                                    </tr>
                                </tbody>
                            </table>
                            <table style="table-layout: fixed" cellspacing="1" cellpadding="8" width="100%" border="0">
                                <tbody>
                                    <tr>
                                        <td valign="top" width="20%" bgcolor="#ffffff" rowspan="2"><font color="#000000"><strong><a href="http://www.chinaunix.net/cgi-bin/bbs/profile.cgi?action=show&amp;member=lzyking" target="_blank">lzyking</a></strong></font></td>
                                        <td bgcolor="#ffffff"><font color="#000000"><strong>发表于： 2002/11/19 06:32am</strong><br />
                                        </font></td>
                                    </tr>
                                    <tr>
                                        <td style="left: 0px; width: 100%; word-wrap: break-word" bgcolor="#ffffff">Cwlocalhost 后面不要写 IP ,应该是这样 &nbsp; Cwlocalhost mail.domain.com domain.com<br />
                                        7.1的版本还应该<br />
                                        找到 O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA 改成<br />
                                        O DaemonPortOptions=Port=smtp,Addr=你的主机ip, Name=MTA <br />
                                        7.2往后的版本要在上面的这行前面加一个 # ,使他不起作用.<br />
                                        注意重新启动 sendmail,命令为 /etc/rc.d/init.d/sendmail restart
                                        <p>之后,打开telnet, telnet ip 25 看能否上去(上去后可能什么都不显示,打help看看),要是可以的话,说明 sendmail没有问题 &nbsp;
                                        <p>你是否安了imap呢(默认系统没有安装 pop3 服务,请安装第2张盘里的 imap),<br />
                                        在telnet ip 110, 如果出现 OK 就好了,还要注意 DNS 中设MX记录
                                        <p>good luck<br />
                                        </p>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td align="right" bgcolor="#eeeeee" colspan="2">&nbsp;</td>
                                    </tr>
                                </tbody>
                            </table>
                            <table style="table-layout: fixed" cellspacing="1" cellpadding="8" width="100%" border="0">
                                <tbody>
                                    <tr>
                                        <td valign="top" width="20%" bgcolor="#ffffff" rowspan="2"><font color="#000000"><strong><a href="http://www.chinaunix.net/cgi-bin/bbs/profile.cgi?action=show&amp;member=logitec" target="_blank">logitec</a></strong></font></td>
                                        <td bgcolor="#ffffff"><font color="#000000"><strong>发表于： 2003/01/03 05:21pm</strong><br />
                                        </font></td>
                                    </tr>
                                    <tr>
                                        <td style="left: 0px; width: 100%; word-wrap: break-word" bgcolor="#ffffff">[quote][b]下面引用由[u]李勇[/u]在 [i]2002/11/14 08:18pm[/i] 发表的内容：[/b]<br />
                                        Red Hat linux 7.1，<br />
                                        sendmail,pop3都起来了<br />
                                        用foxmail可以发信成功（没有错误信息），可是foxmail收不到。<br />
                                        在linux下用mail发信，foxmail却可以收到。<br />
                                        ...<br />
                                        [/quote]<br />
                                        哈哈，原来为此问题郁闷的不是我一个人阿。<br />
                                        OE也可以，WEBMAIL也可以，就是FOXMAIL不可以。我已经给FOXMAIL报告了，等等看有没有解决方案。</td>
                                    </tr>
                                    <tr>
                                        <td align="right" bgcolor="#eeeeee" colspan="2">&nbsp;</td>
                                    </tr>
                                </tbody>
                            </table>
                            <table style="table-layout: fixed" cellspacing="1" cellpadding="8" width="100%" border="0">
                                <tbody>
                                    <tr>
                                        <td valign="top" width="20%" bgcolor="#ffffff" rowspan="2"><font color="#000000"><strong><a href="http://www.chinaunix.net/cgi-bin/bbs/profile.cgi?action=show&amp;member=chenjbok" target="_blank">chenjbok</a></strong></font></td>
                                        <td bgcolor="#ffffff"><font color="#000000"><strong>发表于： 2003/01/03 09:13pm</strong><br />
                                        </font></td>
                                    </tr>
                                    <tr>
                                        <td style="left: 0px; width: 100%; word-wrap: break-word" bgcolor="#ffffff">所有设置完成，我应如何添加邮件新用户？</td>
                                    </tr>
                                </tbody>
                            </table>
                            </td>
                        </tr>
                    </tbody>
                </table>
                </td>
            </tr>
        </tbody>
    </table>
<img src ="http://www.blogjava.net/liaojiyong/aggbug/161924.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2007-11-20 19:41 <a href="http://www.blogjava.net/liaojiyong/archive/2007/11/20/161924.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VIM的几个简单常用的命令</title><link>http://www.blogjava.net/liaojiyong/archive/2007/11/16/161009.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Fri, 16 Nov 2007 06:17:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2007/11/16/161009.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/161009.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2007/11/16/161009.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/161009.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/161009.html</trackback:ping><description><![CDATA[<ol>
    <li>按Esc确保没在编辑状态
    <li>输入:q 退出
    <li>输入:w保存
    <li>输入:wq就是先保存再退出
    <li>拷贝是yy，拷贝多行是 数字+yy （比如15yy）:先输入 :4 转到第4行，然后按 7yy复制七行
    <li>删除是dd，删除多行是 数字+dd
    <li>粘贴是p
    <li>在当前行后面新加一行，按 o<br />
    查找某个独立的单词（比如说函数名），把光标移到字符串上（随便哪个字上），按 * 号<br />
    会自动查找 /\&lt;aaa\&gt; 这样子的<br />
    取消就是 :noh<br />
    按 n 查找下一个， Shift+n是上一个</li>
</ol>
<img src ="http://www.blogjava.net/liaojiyong/aggbug/161009.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2007-11-16 14:17 <a href="http://www.blogjava.net/liaojiyong/archive/2007/11/16/161009.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux 指令大全</title><link>http://www.blogjava.net/liaojiyong/archive/2007/10/11/152103.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Thu, 11 Oct 2007 09:08:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2007/10/11/152103.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/152103.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2007/10/11/152103.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/152103.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/152103.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;cat cd chmod chown cp cut 名称：cat 使用权限：所有使用者 使用方式：cat [-AbeEnstTuv] [--help] [--version] fileName 说明：把档案串连接后传到基本输出（萤幕或加 &gt; fileName 到另一个档案） 参数： -n 或 --number 由 1 开始对所有输出的行数编...&nbsp;&nbsp;<a href='http://www.blogjava.net/liaojiyong/archive/2007/10/11/152103.html'>阅读全文</a><img src ="http://www.blogjava.net/liaojiyong/aggbug/152103.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2007-10-11 17:08 <a href="http://www.blogjava.net/liaojiyong/archive/2007/10/11/152103.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux 常用命令</title><link>http://www.blogjava.net/liaojiyong/archive/2007/10/07/150916.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Sun, 07 Oct 2007 13:29:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2007/10/07/150916.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/150916.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2007/10/07/150916.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/150916.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/150916.html</trackback:ping><description><![CDATA[什么是Linux终端<br />
&nbsp;&nbsp;&nbsp; 键盘和现实器合称为终端，也称控制台，一台计算机的IO设备就是一个物理控制台；在一台机器上用软件方法实现多个乡互不干扰、独立工作的控制台界面，就是实现了多个虚拟控制台。Linux虚拟控制台有六个，如果直接方式选择X WINDOW，那么x window在第7个虚拟终端上。在 Linux 系统中的字符操作控制台界面，通过组合键 Alt + (F1 - F6) 可以切换到另外的控制台。在图像用户界面下通过组合键 Ctrl+Alt + (F1 - F6)可以切换到字符控制台， 每一个控制台是系统中一个完全独立的会话，不同的用户可以同时使用。虚拟控制台使Linux成为一个多用户操作系统。这一多控制台的特点与 Windows 中的多桌面不同。在 Linux 中，每一个控制台可以分别由完全不同的用户来控制。例如，您可能在控制台 1 中以 root身份登录，而在控制台 2 中以 yifan 身份登录。两个控制台在各自的用户空间中运行不同的程序。如果您是在图形模式下，那么您可以打开一个 终端 (terminal)以进入控制台窗口。通常在桌面的任务条上会有终端的按钮。您也可以从上下文菜单（在桌面上单击右键）打开终端 。<br />
什么是shell<br />
&nbsp;&nbsp; shell是系统用户界面，它提供用户与内核交互的接口。用户就能通过键盘输入指令来操作计算机了，它再将执行结果显示给用户。shell用户界面，也就是我们常说的字符操作界面。shell是一个命令解释器，拥有自己内建的 shell 命令集。此外，shell也能被系统中其他有效的Linux 实用程序和应用程序（utilities and application programs）所调用。 shell 是如何执行命令解释的，shell 首先检查命令是否是内部命令，不是的话再检查是否是一个应用程序，这里的应用程序可以是Linux本身的实用程序，比如ls 和 rm，也可以是购买的商业程序，比如 xv，或者是公用软件（public domain software），就象 ghostview。然后shell试着在搜索路径里寻找这些应用程序。搜索路径是一个能找到可执行程序的目录列表。如果你键入的命令不是一个内部命令并且在路径里没有找到这个可执行文件，（学过DOS的朋友，一定对内部，外部命令的含义很了解）将会显示一条错误信息。而如果命令被成功的找到的话，shell的内部命令或应用程序将被分解为系统调用并传给Linux内核。 <br />
shell的种类<br />
目前流行的Shell有 bash、ksh、csh<br />
　　bash是Linux系统默认使用的Shell，它由Brian Fox和Chet Ramey共同完成，是Bourne Again Shell的缩写，内部命令一共有40个。Linux使用它作为默认的Shell是因为它有以下的特色：<br />
　　（1）可以使用类似DOS下面的doskey的功能，用上下方向键查阅和快速输入并修改命令。<br />
　　（2）自动通过查找匹配的方式，给出以某字串开头的命令。<br />
　　（3）包含了自身的帮助功能，你只要在提示符下面键入help就可以得到相关的帮助。<br />
　　ksh是Korn Shell的缩写，由Eric Gisin编写，共有42条内部命令。该Shell最大的优点是几乎和商业发行版的ksh完全相容，这样就可以在不用花钱购买商业版本的情况下尝试商业版本的性能了。<br />
　　csh是Linux比较大的内核，它由以William Joy为代表的共计47位作者编成，共有52个内部命令。该Shell其实是指向/bin/tcsh这样的一个Shell，也就是说，csh其实就是tcsh。 <br />
一凡在此介绍Linux 常用命令，主要是介绍bash的命令<br />
bash 主要有支持三种通配符： <br />
* 匹配任何字符和任何数目的字符 <br />
? 匹配任何单字符 <br />
[...] 匹配任何包含在括号里的单字符 <br />
有的还支持-，它表示字符范围，如[a-h]表示从a到h的任意一个字符<br />
bash命令的一般格式如下：命令名【选项】【参数1】【参数2】...【选项】是对命令的特别定义，以减号(-)开始，多个选项可以用一个减号(-)连起来，如ls -l -a 与ls -la 相同。【参数】提供命令运行的信息，或者是命令执行过程中所使用的文件名。使用分号(;)可以将两个命令隔开，这样可以实现一行中输入多个命令。命令的执行顺序和输入的顺序相同。有的参数也以--开头。命令、选项和参数可以用空格或TAB隔开。<br />
bash命令补全<br />
在送入命令的任何时刻，可以按&lt;Tab&gt;键，当这样做时，系统将试图补全此时已输入的命令。如果已经输入的字符串不足以唯一地确定它应该使用的命令，系统将发出警告声。再次按&lt;Tab&gt;键，系统则会给出可用来用来补全的字符串清单。使用命令补全功能，可以提高使用长命令或操作较长名字的文件或文件夹的都是非常有意义的。<br />
历史命令<br />
系统会把过去输入过的命令记忆下来，只要按方向键中的上下箭头，就可以选择以前输入过的命令了。<br />
联机帮助<br />
可以通过man命令来查看任何命令的联机帮助信息。它将命令名作为参数，该命令的语法格式为： man 【命令名】 在任何命令之后给--help参数，也可以显示该命令的帮助信息。
<p>Linux的文件与文件类型，和DOS，WIN有点相似，在此不做介绍。注意LINUX文件名区分大小写。</p>
<p>目录和文件的基本操作<br />
1、文件查看和连接命令<br />
将文件连接到一起，用&#8220;&gt;&#8221;操作将几个文件组合成一个新的文件，或者是用&#8220;&gt;&gt;&#8221;把文件追加到已存文件的后面。 <br />
语法： <br />
cat　　[参数]filelist <br />
-n或--number:由1开始对所有输出的行数进行编号<br />
-b或--number-nonblank：和n相似，但对空行不编号<br />
-s：遇到两行空白，替换为一行空白 <br />
-v：显示不可打印的字符<br />
filelist：用于结合文件的可选列表。 <br />
2、分屏显示命令<br />
类似于cat，但它是每次显示一页，按空格显示下一页，按&lt;q&gt;键退出，按&lt;h〉键给出帮助信息。该命令还有搜索字符的功能。<br />
语法<br />
more&nbsp; [选项] &lt;file&gt;...<br />
-num:指定每屏显示的行数<br />
-d：在屏幕下面提示信息<br />
-l：more默认遇到送纸符^L会暂停，使用该选项可以取消该功能<br />
-f：计算实际行数<br />
-p：不是以卷动的方式显示每页，而是先清屏再显示<br />
-s：遇到两行空白，替换为一行空白 <br />
-u：不显示下划线<br />
+/&lt;string&gt;:在文件中搜索字符串string，并显示字符串所在页的内容<br />
+/&lt;num&gt;:从第num行开始显示<br />
file用于显示的文件</p>
<p>3、按页显示文件。类似于more，但允许在文件中前后移动。 <br />
语法： <br />
less　[参数]文件名 <br />
-i：查询时忽略大小写。<br />
-num:指定每页显示的行数<br />
-p&lt;string&gt;:在文件中搜索字符串string，并从第一个符合条件的地方开始显示<br />
-S：当某列的内容超过显示画面的宽度时，直接将超出的部分截断舍弃，默认情况下会把超出的部分折回来显示<br />
复制、删除和移动命令<br />
1、拷贝文件。 <br />
&nbsp;语法： <br />
&nbsp;cp[选项]&lt;source&gt;&lt;dest&gt;<br />
&nbsp;cp[选项]&lt;source&gt;....&lt;directory&gt;<br />
&nbsp;-r　　递归拷贝目录<br />
&nbsp;-f　　删除已存在的目标文件再复制<br />
&nbsp;-a　　在备份中尽可能的保留源文件的结构和属性。<br />
2、删除<br />
&nbsp;&nbsp; rm [选项] &lt;name&gt;....<br />
&nbsp;&nbsp; 该命令用于逐个删除指定的文件或目录。默认清苦下，&lt;name&gt;为文件名，rm命令不删除目录，只有指定-d选项时候，才能删除目录<br />
语法： <br />
-f　　强制删除，包括只读文件，并且不给用户任何提示<br />
-i　　在删除每个文件时提示用户<br />
-r　　递归删除目录下的内容 <br />
&nbsp;<br />
移动或更名文件和目录 <br />
语法： <br />
mv 　[参数]源文件目标文件 <br />
-f　　强制复盖已有文件。 <br />
-i　　在复盖已有文件前提示用户。 <br />
-u　　在目标文件的时间比原文件新时不复盖目标文件。 <br />
-v　　在移动文件时输出相关信息。 <br />
创建和删除目录命令<br />
1、创建目录命令<br />
mkdir　　[参数]目录名 <br />
-p　　如果父目录不存在，创建所有的父目录。<br />
2、删除空目录。 <br />
语法： <br />
rmdir　　[参数]目录列表 <br />
-p 表示删除指定目录后，如果该目录的父目录为空，则将一并删除<br />
切换工作目录和显示目录命令<br />
1、改变当前工作目录。 <br />
语法： <br />
cd 目录名 <br />
如果后面不加目录名，则返回用户的根目录，此外用户必须拥有进入该目录的权限。另外cd ~ 指切换到自己的主目录，cd ../.. 可以切换到单前目录的上上目录<br />
2、显示正在工作或当前的目录名。 <br />
pwd　[参数] <br />
3、列出目录中的内容。 <br />
语法： <br />
ls　[参数][目录] <br />
-A 　显示所有文件，包括隐藏文件（以&#8220;.&#8221;开头的文件，但不列出当前目录&#8220;.&#8221;和上级目录&#8220;..&#8221; <br />
-a 　显示所有文件，包括&#8220;.&#8221;和&#8220;..&#8221;目录。&nbsp; <br />
-d 　只列出目录名；不列出它的内容。 <br />
-l 　给出文件的长列表。包括权限、所有权、大小、文件名、最后修改时间等等。<br />
-t&nbsp;&nbsp; 按时间顺序显示<br />
-F&nbsp;&nbsp; 在列出的文件名后以符号表示文件类型，一般文件不加符号，可执行文件&#8220;*&#8221;，目录加&#8220;/&#8221;<br />
-R&nbsp;&nbsp; 若目录下有文件，则递归地列出目录下的文件<br />
查找与定位命令<br />
1、查找文件或目录命令<br />
格式<br />
find [path....] [expression]<br />
该命令在目录树层次中从path开始向下查找文件，将符合expression要求的文件列出来。输入命令中第一个以<br />
-、(、)、，、！开始的参数作为expression的部分，在这些符号之前的参数都被认为是要搜索的路径，在这<br />
些符号之后的才被认为是expression的部分，如果不给出path，则使用当前工作的目录，如果不给出expressi<br />
on,则使用-print作为预设expression<br />
expression的参数有二三十个之多，这里只提几个常用的<br />
-amin&lt;n&gt; 在过去n分钟内被访问过的文件<br />
-anewer&lt;file&gt; 比文件file更晚被访问过的文件<br />
-atime&lt;n&gt; 在过去n天被访问过的文件<br />
-cmin&lt;n&gt;&nbsp; 在过去n分钟内修改过的文件<br />
-cnewer&lt;file&gt; 比文件file更新的文件<br />
-ctime&lt;n&gt; 在过去n天内修改过的文件<br />
-empty 内容为空的文件<br />
-gid&lt;n&gt;或-group&lt;name&gt; gid是n或是group名是name的文件<br />
-ipath&lt;p&gt;,-path&lt;p&gt; 路径名称符合p的文件，ipath表示忽略大小写<br />
-name&lt;name&gt;,-iname&lt;name&gt; 文件名称符合name的文件，iname表示忽略大小写<br />
-size&lt;n单位&gt; 文件大小是n个单位<br />
-type&lt;文件类型〉文件类型的含义与名利ls的选型一样<br />
-pid&lt;n&gt; 进程id是n的文件<br />
exp1 exp2 或者exp1 -a exp2 或者exp1 -and exp2 含义相同，表示同时满足这两个条件<br />
!expr或者-not expr 表示expr的否定<br />
exp1 -o exp2 或者exp1 -or exp2 表示满足其中一个条件就可以<br />
2、文件定位命令<br />
locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案<br />
名称及路径的资料库，之后当寻找时就只需查询这个资料库，而不必实际深入档案系统之中了。在一般的 <br />
distribution 之中，资料库的建立都被放在 contab 中自动执行。一般使用者在使用时只要用 <br />
locate [选项] &lt;search string&gt;<br />
-u 建立资料库，-u 会由根目录开始<br />
-U 建立资料库，-U 则可以指定开始的位置。 <br />
-e 将排除在寻找的范围之外。 <br />
-l 如果 是 1．则启动安全模式。在安全模式下，使用者不会看到权限无法看到的档案。这会始速度减慢，因<br />
为 locate 必须至实际的档案系统中取得档案的权限资料。 <br />
-f 将特定的档案系统排除在外，例如我们没有到理要把 proc 档案系统中的档案放在资料库中。 <br />
-q 安静模式，不会显示任何错误讯息。 <br />
-n 至多显示 个输出。 <br />
-r 使用正规运算式 做寻找的条件。 <br />
-o 指定资料库存的名称。 <br />
-d 指定资料库的路径 <br />
-h 显示辅助讯息 <br />
-v 显示更多的讯息 <br />
-V 显示程式的版本讯息 <br />
连接命令<br />
ln [选项] &lt;source&gt; &lt;dest&gt;<br />
Linux/Unix 档案系统中，有所谓的连结(link)，我们可以将其视为档案的别名，而连结又可分为两种 : 硬连<br />
结(hard link)与软连结(symbolic link)，硬连结的意思是一个档案可以有多个名称，而软连结的方式则是产<br />
生一个特殊的档案，该档案的内容是指向另一个档案的位置。硬连结是存在同一个档案系统中，而软连结却可<br />
以跨越不同的档案系统。 ln source dist 是产生一个连结(dist)到 source，至于使用硬连结或软链结则由<br />
参数决定。 不论是硬连结或软链结都不会将原本的档案复制一份，只会占用非常少量的磁碟空间。 <br />
-f : 链结时先将与 dist 同档名的档案删除<br />
-d : 允许系统管理者硬链结自己的目录<br />
-i : 在删除与 dist 同档名的档案时先进行询问<br />
-n : 在进行软连结时，将 dist 视为一般的档案<br />
-s : 进行软链结(symbolic link)<br />
-v : 在连结之前显示其档名<br />
-b : 将在链结时会被覆写或删除的档案进行备份</p>
<p>改变文件或目录的时间命令<br />
touch [选项] &lt;file1&gt; [&lt;file2&gt;....]<br />
-a 改变档案的读取时间记录。 <br />
-m 改变档案的修改时间记录。 <br />
-c 假如目的档案不存在，不会建立新的档案。与 --no-create 的效果一样。 <br />
-f 不使用，是为了与其他 unix 系统的相容性而保留。 <br />
-r 使用参考档的时间记录，与 --file 的效果一样。 <br />
-d 设定时间与日期，可以使用各种不同的格式。 <br />
-t 设定档案的时间记录，格式与 date 指令相同。 <br />
--no-create 不会建立新档案。 </p>
<p>备份命令<br />
tar&nbsp; &lt;主选项&gt; [辅选项] &lt;文件或目录&gt;<br />
tar可以为文件和目录创建档案。利用tar，用户可以为某一特定文件创建档案（备份文件），也可以在档案中<br />
改变文件，或者向档案中加入新的文件。tar最初被用来在磁带上创建档案，现在，用户可以在任何设备上创<br />
建档案，如软盘。利用tar命令，可以把一大堆的文件和目录全部打包成一个文件，这对于备份文件或将几个<br />
文件组合成为一个文件以便于网络传输是非常有用的。Linux上的tar是GNU版本的。<br />
主选项：<br />
c 创建新的档案文件。如果用户想备份一个目录或是一些文件，就要选择这个选项。<br />
r 把要存档的文件追加到档案文件的未尾。例如用户已经作好备份文件，又发现还有一个目录或是一些文件忘<br />
记备份了，这时可以使用该选项，将忘记的目录或文件追加到备份文件中。<br />
t 列出档案文件的内容，查看已经备份了哪些文件。<br />
u 更新文件。就是说，用新增的文件取代原备份文件，如果在备份文件中找不到要更新的文件，则把它追加到<br />
备份文件的最后。<br />
x 从档案文件中释放文件。<br />
辅选项：<br />
b 该选项是为磁带机设定的。其后跟一数字，用来说明区块的大小，系统预设值为20（20*512 bytes）。<br />
f 使用档案文件或设备，这个选项通常是必选的。<br />
k 保存已经存在的文件。例如我们把某个文件还原，在还原的过程中，遇到相同的文件，不会进行覆盖。<br />
m 在还原文件时，把所有文件的修改时间设定为现在。<br />
M 创建多卷的档案文件，以便在几个磁盘中存放。<br />
v 详细报告tar处理的文件信息。如无此选项，tar不报告文件信息。<br />
w 每一步都要求确认。<br />
z 用gzip来压缩/解压缩文件，加上该选项后可以将档案文件进行压缩，但还原时也一定要使用该选项进行解<br />
压缩。 <br />
tar的最基本的用法举例<br />
　　tar -cf all.tar *.jpg<br />
　　这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包，-f指定包的文件名。<br />
　&nbsp; tar -rf all.tar *.gif<br />
　　这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。<br />
&nbsp;&nbsp;&nbsp; tar -uf all.tar logo.gif<br />
　　这条命令是更新原来tar包all.tar中logo.gif文件，-u是表示更新文件的意思。 <br />
　　tar -tf all.tar<br />
　　这条命令是列出all.tar包中所有文件，-t是列出文件的意思<br />
　　tar -tvf all.tar |more<br />
　　这条命令是列出all.tar包中所有文件，并以分屏方式<br />
压缩和解压命令</p>
<p>gzip命令是用来压缩文件的。它不仅可以用来压缩大的、较少使用的文件以节省磁盘空间，还可以和tar命令<br />
一起构成Linux操作系统中比较流行的压缩文件格式。据统计，gzip命令对文本文件有60%～70%的压缩率。 <br />
gzip [选项] [文件名]<br />
-c 输出并保留原文件<br />
-d 将压缩文件解压，默认情况下为压缩<br />
-l 显示压缩文件的压缩的提示信息<br />
-r 递归的压缩或解压<br />
-t，可以用来测试压缩文件的完整性。如果文件正常，gzip不会给出任何显示。如果想看到OK这两个字母，可<br />
以在测试某个文件时使用-tv参数。 <br />
-v 对每个操作的文件，显示文件名和压缩比例<br />
&nbsp;<br />
&nbsp;</p>
<p>unzip 命令位于/usr/bin目录中，它们和MS DOS下的pkzip、pkunzip及MS Windows中的Winzip软件功能一样，<br />
将文件压缩成.zip文件，以节省硬盘空间，当需要的时候再将压缩文件用unzip命令解开。该命令使用权限是<br />
所有用户。<br />
unzip [选项] [压缩文件名]<br />
-d&lt;目录&gt; 知道解压的某个目录下，默认为当前目录<br />
-n：解压缩时不要覆盖原有的文件。<br />
-o：不必先询问用户，unzip执行后覆盖原有文件<br />
-j：不处理压缩文件中原有的目录路径，把所有文件解压到同一目录<br />
-v：察看压缩文件的内容，但不解压<br />
-t：检查压缩文件是否正确，但不解压<br />
显示文字命令<br />
echo [-n] &lt;字符串〉<br />
在屏幕上显示字符串，-n表示不换行<br />
显示日立命令<br />
cal [选项] [[月]年]<br />
- j 显示出给定月中的每一天是一年中的第几天（从1月1日算起）。<br />
- y 显示出整年的日历。<br />
-1 显示当月的日历<br />
-3显示前一月，本月，下月的日历<br />
-s以星期天作为一周的第一天<br />
-m以星期一作为一周的第一天<br />
如cal 5 2006<br />
显示2006年5月份的日历</p>
<p>日期时间命令<br />
date [选项] [+FormatString] 显示日期时间<br />
date &lt;setstring&gt; 设置日期时间<br />
它的选项比较多，一凡在此就不一一列出来了<br />
清屏命令clear<br />
软件包管理<br />
RPM全称是 Red Hat Package Manager（Red Hat包管理器）。几乎所有的 Linux 发行版本都使用这种形式的<br />
软件包管理安装、更新和卸载软件。<br />
01、安装<br />
rpm -i ( or --install) options file1.rpm ... fileN.rpm<br />
-h (or --hash) 安装时输出hash记号 (``#'')<br />
--test 只对安装进行测试，并不实际安装。<br />
--percent 以百分比的形式输出安装的进度。<br />
--excludedocs 不安装软件包中的文档文件<br />
--includedocs 安装文档<br />
--replacepkgs 强制重新安装已经安装的软件包<br />
--replacefiles 替换属于其它软件包的文件<br />
--force 忽略软件包及文件的冲突<br />
--noscripts 不运行预安装和后安装脚本<br />
--prefix 将软件包安装到由 指定的路径下<br />
--ignorearch 不校验软件包的结构<br />
--ignoreos 不检查软件包运行的操作系统<br />
--nodeps 不检查依赖性关系<br />
--ftpproxy 用 作为 FTP代理<br />
--ftpport 指定FTP的端口号为 <br />
通用选项<br />
-v 显示附加信息<br />
-vv 显示调试信息<br />
--root 让RPM将指定的路径做为"根目录"，这样预安装程序和后安装程序都会安装到这个目录下<br />
--rcfile 设置rpmrc文件为 <br />
--dbpath 设置RPM 资料库存所在的路径为 <br />
02、删除<br />
命令格式：<br />
rpm -e ( or --erase) options pkg1 ... pkgN<br />
参数<br />
pkg1 ... pkgN ：要删除的软件包<br />
详细选项<br />
--test 只执行删除的测试<br />
--noscripts 不运行预安装和后安装脚本程序<br />
--nodeps 不检查依赖性</p>
<p>03、升级<br />
命令格式<br />
rpm -U ( or --upgrade) options file1.rpm ... fileN.rpm<br />
参数<br />
file1.rpm ... fileN.rpm 软件包的名字<br />
详细选项<br />
-h (or --hash) 安装时输出hash记号 (``#'')<br />
--oldpackage 允许"升级"到一个老版本<br />
--test 只进行升级测试<br />
--excludedocs 不安装软件包中的文档文件<br />
--includedocs 安装文档<br />
--replacepkgs 强制重新安装已经安装的软件包<br />
--replacefiles 替换属于其它软件包的文件<br />
--force 忽略软件包及文件的冲突<br />
--percent 以百分比的形式输出安装的进度。<br />
--noscripts 不运行预安装和后安装脚本<br />
--prefix 将软件包安装到由 指定的路径下<br />
--ignorearch 不校验软件包的结构<br />
--ignoreos 不检查软件包运行的操作系统<br />
--nodeps 不检查依赖性关系<br />
--ftpproxy 用 作为 FTP代理<br />
--ftpport 指定FTP的端口号为 <br />
04、查询<br />
命令格式：<br />
rpm -q ( or --query) options<br />
参数：<br />
pkg1 ... pkgN ：查询已安装的软件包<br />
详细选项<br />
-p (or ``-'') 查询软件包的文件<br />
-f 查询属于哪个软件包<br />
-a 查询所有安装的软件包<br />
--whatprovides 查询提供了 功能的软件包<br />
-g 查询属于 组的软件包<br />
--whatrequires 查询所有需要 功能的软件包<br />
信息选项<br />
示软件包的全部标识<br />
-i 显示软件包的概要信息<br />
-l 显示软件包中的文件列表<br />
-c 显示配置文件列表<br />
-d 显示文档文件列表<br />
-s 显示软件包中文件列表并显示每个文件的状态<br />
--scripts 显示安装、卸载、校验脚本<br />
--queryformat (or --qf) 以用户指定的方式显示查询信息<br />
--dump 显示每个文件的所有已校验信息<br />
--provides 显示软件包提供的功能<br />
--requires (or -R) 显示软件包所需的功能</p>
<p>05、校验已安装的软件包<br />
命令格式：<br />
rpm -V ( or --verify, or -y) options<br />
参数<br />
pkg1 ... pkgN 将要校验的软件包名<br />
软件包选项<br />
-p Verify against package file <br />
-f 校验所属的软件包<br />
-a Verify 校验所有的软件包<br />
-g 校验所有属于组 的软件包<br />
详细选项<br />
--noscripts 不运行校验脚本<br />
--nodeps 不校验依赖性<br />
--nofiles 不校验文件属性</p>
<p>06、校验软件包中的文件<br />
语法：<br />
rpm -K ( or --checksig) options file1.rpm ... fileN.rpm<br />
参数：<br />
file1.rpm ... fileN.rpm 软件包的文件名<br />
连接帮助命令<br />
man &lt;command&gt;<br />
info &lt;command&gt;&nbsp; 该功能比man强大，但目前只在Linux中有，其他的UNIX中没有该命令<br />
help &lt;command&gt;<br />
但linux编辑器，桌面，网络管理配置，该平台上简单的软件开发。。。。还有好多东西要整理的，希望怀宝宝这段空闲时间能整理。<br />
</p>
<img src ="http://www.blogjava.net/liaojiyong/aggbug/150916.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2007-10-07 21:29 <a href="http://www.blogjava.net/liaojiyong/archive/2007/10/07/150916.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux基础知识</title><link>http://www.blogjava.net/liaojiyong/archive/2007/10/07/150915.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Sun, 07 Oct 2007 13:28:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2007/10/07/150915.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/150915.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2007/10/07/150915.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/150915.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/150915.html</trackback:ping><description><![CDATA[Linux最早是由芬兰赫尔辛基大学一位叫Linus Torvalds的学生设计的.它是一套免费使用和自由传播的<br />
类NUIX系统,源代码开发,能在各类硬件平台(包括Intel x86系列和RISC处理器)上运行.<br />
&nbsp;<br />
Linux受广大计算机爱好者喜爱的原因:<br />
&nbsp;1.Linux在pc计算机上实现了全部的UNIX特性,具有多任务,多用户的能力,而且在很多方面相当稳定高效.<br />
&nbsp;2.Linux属于自由软件,用户不需要支付任何费用就可以获得它及其它的原代码,并可以对它进行须改,无偿使用它,无约束传播.<br />
&nbsp;<br />
Linux具有以下主要特性：<br />
&nbsp; 开放性<br />
&nbsp; 开放性是指系统遵循世界标准规范，特别是遵循开放系统互连（OSI）国际标准。凡遵循国际标准所开发的硬件和软件，都能彼此兼容，可方便地实现互连。 <br />
&nbsp; 多用户<br />
&nbsp; 多用户是指系统资源可以被不同用户各自拥有使用，即每个用户对自己的资源（例如：文件、设备）有特定的权限，互不影响。Linux和Unix都具有多用户的特性。 <br />
&nbsp; 多任务<br />
&nbsp; 多任务是现代计算机的最主要的一个特点。它是指计算机同时执行多个程序，而且各个程序的运行互相独立。Linux系统调度每一个进程平等地访问微处理器。由于CPU的处理速度非常快，其结果是，启动的应用程序看起来好像在并行运行。事实上，从处理器执行一个应用程序中的一组指令到Linux调度微处理器再次运行这个程序之间只有很短的时间延迟，用户是感觉不出来的。 <br />
&nbsp; 良好的用户界面<br />
&nbsp; Linux向用户提供了两种界面：'用户界面和系统调用。<br />
&nbsp; Linux的传统用户界面是基于文本的命令行界面，即shell，它既可以联机使用，又可存在文件上脱机使用。shell有很强的程序设计能力，用户可方便地用它编制程序，从而为用户扩充系统功能提供了更高级的手段。可编程Shell是指将多条命令组合在一起，形成一个Shell程序，这个程序可以单独运行，也可以与其他程序同时运行。 <br />
&nbsp; 系统调用给用户提供编程时使用的界面。用户可以在编程时直接使用系统提供的系统调用命令。系统通过这个界面为用户程序提供低级、高效率的服务。 <br />
Linux还为用户提供了图形用户界面。它利用鼠标、菜单、窗口、滚动条等设施，给用户呈现一个直观、易操作、交互性强的友好的图形化界面。 <br />
&nbsp; 设备独立性<br />
&nbsp; 设备独立性是指操作系统把所有外部设备统一当作成文件来看待，只要安装它们的驱动程序，任何用户都可以象使用文件一样，操纵、使用这些设备，而不必知道它们的具体存在形式。 <br />
具有设备独立性的操作系统，通过把每一个外围设备看作一个独立文件来简化增加新设备的工作。当需要增加新设备时、系统管理员就在内核中增加必要的连接。这种连接（也称作设备驱动程序）保证每次调用设备提供服务时，内核以相同的方式来处理它们。当新的及更好的外设被开发并交付给用户时，操作允许在这些设备连接到内核后，就能不受限制地立即访问它们。设备独立性的关键在于内核的适应能力。其他操作系统只允许一定数量或一定种类的外部设备连接。而设备独立性的操作系统能够容纳任意种类及任意数量的设备，因为每一个设备都是通过其与内核的专用连接独立进行访问。 <br />
Linux是具有设备独立性的操作系统，它的内核具有高度适应能力，随着更多的程序员加入Linux编程，会有更多硬件设备加入到各种Linux内核和发行版本中。另外，由于用户可以免费得到Linux的内核源代码，因此，用户可以修改内核源代码，以便适应新增加的外部设备。 <br />
&nbsp; 供了丰富的网络功能<br />
&nbsp; 完善的内置网络是Linux的一大特点。Linux在通信和网络功能方面优于其他操作系统。其他操作系统不包含如此紧密地和内核结合在一起的连接网络的能力，也没有内置这些联网特性的灵活性。而Linux为用户提供了完善的、强大的网络功能。 <br />
&nbsp; 支持Internet是其网络功能之一。Linux免费提供了大量支持Internet的软件，Internet是在Unix领域中建立并繁荣起来的，在这方面使用Linux是相当方便的，用户能用Linux与世界上的其他人通过Internet网络进行通信。 <br />
&nbsp; 文件传输是其网络功能之二。用户能通过一些Linux命令完成内部信息或文件的传输。 <br />
远程访问是其网络功能之三。Linux不仅允许进行文件和程序的传输，它还为系统管理员和技术人员提供了访问其他系统的窗口。通过这种远程访问的功能，一位技术人员能够有效地为多个系统服务，即使那些系统位于相距很远的地方。 <br />
&nbsp; 可靠的系统安全<br />
&nbsp; Linux采取了许多安全技术措施，包括 对读、写进行权限控制 带保护的子系统 审计跟踪 核心授权等，这为网络多用户环境中的用户提供了必要的安全保障。 <br />
&nbsp; 良好的可移植性<br />
&nbsp; 可移植性是指将操作系统从一个平台转移到另一个平台使它仍然能按其自身的方式运行的能力. <br />
Linux是一种可移植的操作系统，能够在从微型计算机到大型计算机的任何环境中和任何平台上运行。<br />
可移植性为运行Linux的不同计算机平台与其他任何机器进行准确而有效的通信提供了手段，不需要另外增加特殊的和昂贵的通信接口。 <br />
&nbsp;&nbsp; 在说Linux特点时,也顺别提一下它的缺点,Linux没有核心团队,来自世界各地的爱好者都可以发布自己的补丁(patch),缺点是源代码可能杂乱无章并且可能相互冲突.其实从另个方面说也是优点,爱好者都可以发布自己的补丁(patch),这使Linux充满着活力,不断更新进步.
<p>Linux与其他操作系统的区别<br />
&nbsp; Linux可以与MS-DOS、Windows等其他操作系统共存于同一台机器上。它们均为操作系统，具有一些共性，但是互相之间各有特色，有所区别。至于MS-DOS、Windows对我们一般计算机爱好来说是非常熟悉的操作系统了,在此只列出Linux与UNIX的区别.<br />
&nbsp; 某些PC机的Unix和Linux在实现方面相类似。几乎所有的商业Unix版本都基本支持同样的软件、程序设计环境和网络特性。然而，Linux和Unix的商业版本依然存在许多差别。Linux支持的硬件范围和商业Unix不一样。一般来说，商业Unix支持的硬件多一些，可是Linux支持的硬件也在不断扩大。突出的是，Linux至少和商用Unix一样稳定。对许多用户来说，最重要的因素是价格。Linux是免费软件，用户可以从Internet网上下载。如果上网不方便，可以很便宜地通过邮购得到Linux的磁盘或CD-ROM。当然也可以直接从朋友那里得到。商业Unix的价值不应被贬低。除了软件本身的价格外，用户还需支付文档、售后支持和质保费。对于较大的机构，这些都很重要，但是PC机用户也许从中得不到什么好处。许多商业公司和大学等单位已经发现，在实验室用廉价的PC机运行Linux比用工作站运行商业Unix还好。Linux可以在PC机上提供工作站的功能，而PC机的价格是工作站的几分之一。也有一些针对PC机的便宜的Unix，其中最有名的是386BSD。在许多方面，386BSD软件包和Linux兼容，但Linux更适合用户的需求。最显著的是，Linux的开发是开放的，任何志愿者都可以对开发过程做出贡献。相比之下，386BSD是由封闭的团队开发的。正是这样，这两种产品存在着严重的概念上和设计上的差别：Linux的目标是从头开始开发一个完整的Unix系统；386BSD的目标则是对现有的BSD做些修改，以适合80386系统。当然现在也有许多免费的在PC机上运行的UNIX,如NetBSD,FreeBSD,OpenBSD等,NetBSD,FreeBSD,OpenBSD在硬件支持方面不如Linux,在系统性能方面,具专家分析,FreeBSD在网络性能,软件移植和系统规范化上比Linux略强些.</p>
<p>Linux下的目录树<br />
&nbsp; / <br />
&nbsp; 这就是根目录。在Windows，DOS或者其他类似的操作系统里面，每个分区都会有一个相应的根目录。但是Linux和其他Unix系统把所有的文件都放在一个目录树里面，/ 就是唯一的根目录。一般来讲，根目录下面很少保存什么文件，或者只有一个内核映像在这里。 <br />
&nbsp; /boot <br />
&nbsp;很多Linux系统把内核映像和其他一些和启动有关的文件放在这里。 <br />
&nbsp; /tmp <br />
&nbsp; 一般只有启动的时候产生的临时文件才会放在这个地方。我们自己的那些临时文件都放在 /var/tmp。 <br />
&nbsp; /mnt <br />
&nbsp; 这个目录下面放着一些用来mount其他设备的子目录，比如说/mnt/cdrom或者/mnt/floppy。 <br />
&nbsp; /lib <br />
&nbsp; 启动的时候所需要用到的库文件都放在这个目录下。那些非启动用的库文件都会放在/usr/lib下。内核模块是被放在/lib/modules/（内核版本）下的。 <br />
&nbsp; /proc <br />
&nbsp; 这个目录在磁盘上其实是不存在的。里面的文件都是关于当前的系统状态的，包括正在运行的进程，硬件状态，内存使用的多少&#8230;&#8230; <br />
&nbsp; /dev <br />
&nbsp; 这个目录下保存着所有的设备文件。里面有一些Linux内核创建的用来控制硬件设备的特殊文件。注意，网卡设备文件（eth0，ppp0等）不在这儿。 <br />
&nbsp; /var <br />
&nbsp; 这里有一些被系统改变过的数据。比如说/var/tmp，就是用来储存临时文件的。还有很多其他的进程和模块把它们的记录文件也放在这个地方。下面将会列举一些重要的子目录： <br />
&nbsp; /var/log <br />
&nbsp; 这里放着绝大部分的记录文件。随着时间的增长，这个目录可能会变得很臃肿。所以需要定期来清理一下。 <br />
&nbsp; /var/run <br />
&nbsp; 包括了各种运行时的小信息。 <br />
&nbsp; /var/lib <br />
&nbsp; 包括了一些系统运行的时候需要的文件。如果你用笔记本上网，/var/lib/pcmcia/stab可能会对你有用。 <br />
&nbsp; /var/spool <br />
&nbsp; 邮件，新闻，打印序列的所在地。 <br />
&nbsp; /root <br />
&nbsp; Root用户的主目录。 <br />
&nbsp; /home <br />
&nbsp; 一般用户的主目录都会放在这个目录下。你可以通过$ cd ~ 来进入你自己的主目录。 <br />
&nbsp; /etc <br />
&nbsp; 如果你是Root用户的话，这个目录应该是你最常来的地方。这里保存着绝大部分的系统配置文件。相对来讲，单个用户的系统配置文件将会保存在这个用户自己的主目录里面。这里的文件会根据你所安装的软件而增减。下面将会列举一下重要的子目录： <br />
&nbsp; /etc/X11 <br />
&nbsp; 这里放着X系统所需要的配置文件。XF86Config就是把配置储存到这个地方的。/etc/X11/fonts里面放着一些服务器需要的字体。还有一些窗口管理器存放的配置文件也是放在这个地方的。 <br />
&nbsp; /etc/init.d <br />
&nbsp; 这个目录保存着启动描述文件，包括各种模块和服务的加载描述。所以如果不清楚的话，最好不要随便删这里的东西。这里的文件都是系统进行配置的，不是用户自己用来配置的。 <br />
&nbsp; /etc/rcS.d <br />
这里放着一些连接到/etc/init.d的连接文件，根据runlevel的不同而执行相应的描述。这里的文件名都是由S来开头的，然后是一个两位的数字——表示各种服务启动的顺序。比如，S24foo就是在S42bar前面执行的。接着就是相应的连接到/etc/init.d下面的文件的名字了。 <br />
&nbsp; /etc/rc0.d - /etc/rc6.d <br />
&nbsp; 这里面也是一些连接文件，和/etc/rcS.d差不多。不同的是，这些只会在指定的runlevel下运行相应的描述。0表示关机，6表示重启。所有以 K开头的文件表示关闭，所有以S开头的文件表示重启。目前来讲，文件的命名方式和/etc/rcS.d是一样的。注意，在Debian下，2表示启动。 <br />
&nbsp; /bin, /sbin <br />
这里分别放着启动的时候所需要的普通程序和系统程序。很多程序在启动以后也很有用，它们放在这个目录下是为它们会经常被其他程序所调用。 <br />
&nbsp; /usr <br />
&nbsp; 这是一个很庞大的目录，几乎所有的文件都放在这下面，除了上面所说的那些。下面将会列举一些重要的子目录： <br />
&nbsp; /usr/X11R6, /usr/X11, /usr/Xfree86 <br />
&nbsp; 这里面保存着X系统所需要的文件，它的目录结构和/usr是一样的。 <br />
&nbsp; /usr/bin <br />
&nbsp; v二进制可执行文件存放的目录，这里放着绝大部分的应用程序。 <br />
&nbsp; /usr/sbin <br />
&nbsp; 这里放着绝大部分的系统程序。 <br />
&nbsp; /usr/games <br />
&nbsp; 游戏程序和相应的数据会放在这里。 <br />
&nbsp; /usr/include <br />
&nbsp; 这个目录保存着C和C++的头文件。除非你是程序员，否则你可能不会感兴趣。 <br />
&nbsp; /usr/lib <br />
&nbsp; 启动时用不到的库文件都会被放在这里。 <br />
&nbsp; /usr/info <br />
&nbsp; 这里保存着GNU Info程序所需要的数据。 <br />
&nbsp; /usr/man <br />
&nbsp; 这里保存着man程序所需要的数据。 <br />
&nbsp; /usr/src <br />
&nbsp; 这里保存着源代码文件。Linux内核的源代码都放在/usr/src/linux下了。 <br />
&nbsp; /usr/doc <br />
&nbsp; 这里保存着各种文档文件。这些文件可以帮助你了解Linux，解决问题和提供一些技巧。或者你可以通过访问 <a href="http://www.linuxdoc.org/">http://www.linuxdoc.org</a> 来活得更多的知识。 <br />
&nbsp; /usr/local <br />
&nbsp; 这里面保存着本地计算机所需要的文件。在用户进行远程访问的时候特别有意义。这个目录在有些Linux系统下就是一个单独的分区，存放一些这台机子所属的那个用户的文件。里面的结构和/usr是一样的。 <br />
&nbsp; /usr/shared, /usr/share <br />
&nbsp; 这里保存着各种共享文件，比如说某个应用程序所需要的声音文件。 </p>
<img src ="http://www.blogjava.net/liaojiyong/aggbug/150915.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2007-10-07 21:28 <a href="http://www.blogjava.net/liaojiyong/archive/2007/10/07/150915.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux系统安装MySQL</title><link>http://www.blogjava.net/liaojiyong/archive/2007/09/10/143871.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Sun, 09 Sep 2007 23:57:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2007/09/10/143871.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/143871.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2007/09/10/143871.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/143871.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/143871.html</trackback:ping><description><![CDATA[红旗Linux系统默认安装后，没有自带数据库软件，这满足不了我们做Java EE开发的需求，因此我们需要自己安装数据库软件，首选的当然是MySQL。虽然在红旗的工具光盘中，提供有MySQL 4.0的RPM包，但是我仍然选择MySQL 5.0。到MySQL的官方网站可以下载该软件的最新版本，如下图：<br />
<img height="600" alt="01.PNG" src="http://www.blogjava.net/images/blogjava_net/youxia/LinuxAndJava5/01.PNG" width="800" border="0" /><br />
<br />
　　在下载页面可以看到，5.1是beta版，6.0是alpha版，因此我们没有必要追求最新的版本，就用5.0好了。从5.0版开始，MySQL分为社区版和企业版，当然，企业版是要钱的了，所以我们只能选择社区版。<br />
<br />
　　MySQL的打包方式也有很多种，可以直接下载源代码，自己编译，也可以下载针对特定Linux系统的RPM包。我选择的是non rpm的打包方式，下载下来后就是一个名为mysql-5.0.45-linux-i686.tar.gz的压缩文件，大小为77.5M。当然，你也可以选择For Red Hat Enterprise Linux 4的RPM包，因为红旗Linux系统发布的时候就宣称对红帽的RPM包兼容，而在红旗提供的工具光盘种，我看到有不少软件包是RHEL 4中的，因此可以确定，红旗Linux至少能够支持RHEL 4中的RPM包。<br />
<br />
　　如果使用的是RPM包，那么安装起来就很简单了，不爽的是Server和Client以及其它的库都单独打包，下载起来麻烦。而我下载的单一压缩文件就方便多了，不过解压后需要经过一些设置才可以使用。<br />
<br />
　　1、先将压缩包解压，放置到/usr/mysql目录<br />
　　2、建立mysql用户<br />
　　3、运行mysql_install_db初始化数据库<br />
<br />
　　整个过程如下图，在设置的过程中，我们还可以看到MySQL的数据将会存放在/usr/mysql/data目录，而且在初始化数据库之前，/usr/mysql/data/mysql目录中是空的，没有任何表文件。如下图：<br />
<img height="455" alt="02.PNG" src="http://www.blogjava.net/images/blogjava_net/youxia/LinuxAndJava5/02.PNG" width="679" border="0" /><br />
<br />
　　设置完成之后，就可以使用./bin/mysqld_safe来启动数据库服务器了，要注意到，无论是初始化数据库还是启动数据库服务器，我们都指定了--user=mysql参数，也就是让他们以mysql用户运行，这主要是从安全方面考虑的。启动服务器后，使用./bin/mysqladmin来设置root帐号的密码，最后使用./bin/mysql链接服务器，就可以使用各种数据库操作了。如下图：<br />
<img height="457" alt="03.PNG" src="http://www.blogjava.net/images/blogjava_net/youxia/LinuxAndJava5/03.PNG" width="680" border="0" />
<img src ="http://www.blogjava.net/liaojiyong/aggbug/143871.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2007-09-10 07:57 <a href="http://www.blogjava.net/liaojiyong/archive/2007/09/10/143871.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在linux下安装MySQL的步骤(转)</title><link>http://www.blogjava.net/liaojiyong/archive/2007/05/18/118304.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Fri, 18 May 2007 03:53:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2007/05/18/118304.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/118304.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2007/05/18/118304.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/118304.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/118304.html</trackback:ping><description><![CDATA[根据网上的资料整理.<br>MYSQL地址：http://dev.mysql.com/get/Downloads/MySQL-4.1/mysql-4.1.21.tar.gz/from/http://mirror.vmmatrix.net/mysql/<br><br>yi.安装mysql 4.1.21<br># groupadd mysql<br># useradd -g mysql mysql<br># tar -zxvf mysql-4.1.21.tar.gz<br># cd mysql-4.1.21<br># ./configure --prefix=/usr/local/mysql --with-charset=gbk<br># make<br># make install<br># cp support-files/my-medium.cnf /etc/my.cnf<br><br>设置自启动<br># cp support-files/mysql.server /etc/rc.d/init.d/mysqld<br># chmod 700 /etc/rc.d/init.d/mysqld<br># chkconfig --add mysqld<br><span style="COLOR: rgb(255,0,0)">(</span><br style="COLOR: rgb(255,0,0)"><span style="COLOR: rgb(255,0,0)">在/etc/init.d目录下，任意打开一个启动脚本，你会发现在其顶部的注释中，基本上都有以下一行： </span><br style="COLOR: rgb(255,0,0)"><br style="COLOR: rgb(255,0,0)"><span style="COLOR: rgb(255,0,0)">chkconfig 235 56 34(也可能是其他数字组合：）) </span><br style="COLOR: rgb(255,0,0)"><br style="COLOR: rgb(255,0,0)"><span style="COLOR: rgb(255,0,0)">就以chkconfig 235 56 34为例，235表示该启动脚本对应的服务将在系统启动级别2, 3, 5级启动。而56表示其启动优先级为56，所谓的优先级，就是在rc脚本中出现在各个符号链接名中的数字。那么34是什么相信大家已经猜到了，对了，他就 是终止优先级。 </span><br style="COLOR: rgb(255,0,0)"><span class=unnamed3>
<p style="COLOR: rgb(255,0,0)"><strong>Linux下利用CHKCONFIG管理系统服务</strong></p>
<br style="COLOR: rgb(255,0,0)"><br style="COLOR: rgb(255,0,0)">
<p style="COLOR: rgb(255,0,0)">NAME<br><br>chkconfig --更新并询问系统服务的运行级信息。<br><br><br><br>摘要(SYNOPSIS)<br><br>chkconfig --list [name]<br><br>chkconfig --add name<br><br>chkconfig --del name<br><br>chkconfig [--level levels] name &lt;on|off|reset&gt;<br><br>chkconfig [--level levels] name<br><br><br><br>描述(DESCRIPTION)<br><br>chkconfig提供了一个命令行工具，它可以让管理员通过操纵行号标实来维护/etc/rc[0-6].d目录层，以减轻管理员的工作强度。<br><br>chkconfig有五个不同的功能：增加新的系统服务，删除服务，列举当前已经启动的系统服务，改变服务启动状态，及检测个别服务的启动情况。<br><br>当chkconfig不带任何参数运行的时候，它显示简略的使用说明。如果仅提供一个服务名，它将检测当前系统是否在特定运行级运行此服务。如果服务正在 运行，chkconfig将显示true(是)，否则显示否。使用--level运行级参数，chkconfig将询问选择一个非当前运行级以外的一个运 行级运行服务。<br><br>如果将on，off，或reset标实在服务名的后面，chkconfig将改变此指定服务的运行状态。如on和off标实用来提示服务的启动与停止，分别在不同的运行级进行控制。reset参数将重置指定服务。<br><br>默认情况下，on和off参数只对2，3，4，5运行级发生作用，而reset参数可以对所有运行级发生作用。--level参数就是用来指定对哪个运行级进行作用的。<br><br><br><br>参数(OPTION)<br><br>--level levels<br><br>指定服务的运行级，有levels</p>
<p style="COLOR: rgb(255,0,0)">chkconfig 命令也可以用来激活和解除服务。chkconfig --list 命令显示系统服务列表，以及这些服务在运行级别0到6中已被启动（on）还是停止（off）。chkconfig 还能用来设置某一服务在某一指定的运行级别内被启动还是被停运。譬如，要在运行级别3、4、5中停运 nfs 服务，使用下面的命令：chkconfig --level 345 nfs off <br></p>
<p><span style="COLOR: rgb(255,0,0)">)</span><br></p>
</span><br><br><br>安装完以后要初始化数据库，要是升级安装的请跳过<br># cd /usr/local/mysql<br># /usr/local/mysql/bin/mysql_install_db --user=mysql<br># chown -R root .<br># chown -R mysql var<br># chgrp -R mysql .<br># /usr/local/mysql/bin/mysqld_safe --user=mysql &amp;<br><br>好了，至此mysql安装完毕，你可以这样起动你的mysql服务<br># /etc/rc.d/init.d/mysqld start<br><br># ln -s /usr/local/mysql/bin/mysql /sbin/mysql<br># ln -s /usr/local/mysql/bin/mysqladmin /sbin/mysqladmin<br><br>为了能让系统找到mysql，请运行如下命令<br># PATH=$PATH:/usr/local/mysql/bin<br># export PATH<br># echo "/usr/local/mysql/lib/mysql" &gt;&gt; /etc/ld.so.conf<br># ldconfig<br><br>日志管理<br>开启错误日志 （在[safe_mysqld]项下添加）<br># vi /etc/my.cnf<br>[safe_mysqld]<br>err-log=/var/log/mysqld/err.log<br><br>开启常规日志和更新日志 (在[mysqld]项下添加）<br># vi /etc/my.cnf<br>[mysqld]<br>log=/var/log/mysqld/log.log<br>log-update=/var/log/mysqld/update.log<br><br>创建日志文件并设置权限<br># mkdir /var/log/mysqld<br># touch /var/log/mysqld/err.log /var/log/mysqld/log.log /var/log/mysqld/update.log<br># chown -R mysql.mysql /var/log/mysqld<br><br># service mysqld restart<br><br>说明：<br>错误日志包含了服务器写入标准错误输出设备的所有消息，同时还包括了mysql服务的启动和关闭事件<br>常规日志用来记录有关mysql服务器运行的常规信息，包括用户的连接、查询及其他各种时间<br>更新日志用来记录修改数据库的查询信息，包括所有涉及数据库修改的SQl语句的查询记录<br>建议调试结束后关闭日志<br><br><span class=oblog_text>三、登录MySQL<br><br>　　登录MySQL的命令是mysql， mysql 的使用语法如下：<br>　　mysql [-u username] [-h host] [-p[password]] [dbname]<br>　　username 与 password 分别是 MySQL 的用户名与密码，mysql的初始管理帐号是root，没有密码，注意：这个root用户不是Linux的系统用户。MySQL默认用户是root，由于初始没有密码，第一次进时只需键入mysql即可。<br>　　[root@test1 local]# mysql<br>　　Welcome to the MySQL monitor.　Commands end with ; or \g.<br>　　Your MySQL connection id is 1 to server version: 4.0.16-standard<br>　　Type 'help;' or '\h' for help. Type '\c' to clear the buffer.<br>　　mysql&gt;<br>　　出现了&#8220;mysql&gt;&#8221;提示符，恭喜你，安装成功！<br>　　增加了密码后的登录格式如下：<br>　　mysql -u root -p<br>　　Enter password: (输入密码)<br>　　其中-u后跟的是用户名，-p要求输入密码，回车后在输入密码处输入密码。<br><br>　　注意：这个mysql文件在/usr/bin目录下，与后面讲的启动文件/etc/init.d/mysql不是一个文件。<br><br>　　四、MySQL的几个重要目录<br><br>　 　MySQL安装完成后不象SQL Server默认安装在一个目录，它的数据库文件、配置文件和命令文件分别在不同的目录，了解这些目录非常重要，尤其对于Linux的初学者，因为 Linux本身的目录结构就比较复杂，如果搞不清楚MySQL的安装目录那就无从谈起深入学习。<br><br>　　下面就介绍一下这几个目录。<br><br>　　1、数据库目录<br>　　/var/lib/mysql/&nbsp; 或者是<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /usr/local/mysql/var<br><br><br>　　2、配置文件<br>　　/usr/share/mysql（mysql.server命令及配置文件）<br><br>　　3、相关命令<br>　　/usr/bin(mysqladmin mysqldump等命令)<br><br>　　4、启动脚本<br>　　/etc/rc.d/init.d/（启动脚本文件mysql的目录）<br>　五、修改登录密码<br><br>　　MySQL默认没有密码，安装完毕增加密码的重要性是不言而喻的。<br><br>　　1、命令<br>　　usr/bin/mysqladmin -u root password 'new-password'<br>　　格式：mysqladmin -u用户名 -p旧密码 password 新密码<br><br>　　2、例子<br>　　例1：给root加个密码123456。<br>　　键入以下命令 ：<br>　　[root@test1 local]# /usr/bin/mysqladmin -u root password 123456<br>　　注：因为开始时root没有密码，所以-p旧密码一项就可以省略了。<br><br>　　3、测试是否修改成功<br>　　 1）不用密码登录<br>　　[root@test1 local]# mysql<br>　　ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)<br>　　显示错误，说明密码已经修改。<br>　　2）用修改后的密码登录<br>　　[root@test1 local]# mysql -u root -p<br>　　Enter password: (输入修改后的密码123456)<br>　　Welcome to the MySQL monitor.　Commands end with ; or \g.<br>　　Your MySQL connection id is 4 to server version: 4.0.16-standard<br>　　Type 'help;' or '\h' for help. Type '\c' to clear the buffer.<br>　　mysql&gt;<br>　　成功！<br>　　这是通过mysqladmin命令修改口令，也可通过修改库来更改口令。<br><br>　　六、启动与停止<br><br>　　1、启动<br>　　MySQL安装完成后启动文件mysql在/etc/init.d目录下，在需要启动时运行下面命令即可。<br>　　[root@test1 init.d]# /etc/init.d/mysql start<br><br>　　2、停止<br>　　/usr/bin/mysqladmin -u root -p shutdown<br><br>　　3、自动启动<br>　　1）察看mysql是否在自动启动列表中<br>　　[root@test1 local]#　/sbin/chkconfig ?list<br>　　2）把MySQL添加到你系统的启动服务组里面去<br>　　[root@test1 local]#　/sbin/chkconfig　? add　mysql<br>　　3）把MySQL从启动服务组里面删除。<br>　　[root@test1 local]#　/sbin/chkconfig　? del　mysql<br>七、更改MySQL目录<br><br>　　MySQL默认的数据文件存储目录为/var/lib/mysql。假如要把目录移到/home/data下需要进行下面几步：<br><br>　　1、home目录下建立data目录<br>　　cd /home<br>　　mkdir data<br><br>　　2、把MySQL服务进程停掉：<br>　　mysqladmin -u root -p shutdown<br><br>　　3、把/var/lib/mysql整个目录移到/home/data<br>　　mv /var/lib/mysql　/home/data/<br>　　这样就把MySQL的数据文件移动到了/home/data/mysql下<br><br>　　4、找到my.cnf配置文件<br>　　如果/etc/目录下没有my.cnf配置文件，请到/usr/share/mysql/下找到*.cnf文件，拷贝其中一个到/etc/并改名为my.cnf)中。命令如下：<br>　　 [root@test1 mysql]# cp /usr/share/mysql/my-medium.cnf　/etc/my.cnf<br><br>　　5、编辑MySQL的配置文件/etc/my.cnf<br>　　为保证MySQL能够正常工作，需要指明mysql.sock文件的产生位置。 修改socket=/var/lib/mysql/mysql.sock一行中等号右边的值为：/home/mysql/mysql.sock 。操作如下：<br>　　 vi　 my.cnf　　　 (用vi工具编辑my.cnf文件，找到下列数据修改之)<br>　　 # The MySQL server<br>　　　 [mysqld]<br>　　　 port　　　= 3306<br>　　　#socket　 = /var/lib/mysql/mysql.sock（原内容，为了更稳妥用&#8220;#&#8221;注释此行）<br>　　　 socket　 = /home/data/mysql/mysql.sock　　　（加上此行）<br><br>　　6、修改MySQL启动脚本/etc/rc.d/init.d/mysql<br>　　最后，需要修改MySQL启动脚本/etc/rc.d/init.d/mysql，把其中datadir=/var/lib/mysql一行中，等号右边的路径改成你现在的实际存放路径：home/data/mysql。<br>　　[root@test1 etc]# vi　/etc/rc.d/init.d/mysql<br>　　#datadir=/var/lib/mysql　　　　（注释此行）<br>　　datadir=/home/data/mysql　　 （加上此行）<br><br>　　7、重新启动MySQL服务<br>　　/etc/rc.d/init.d/mysql　start<br>　　或用reboot命令重启Linux<br>　　如果工作正常移动就成功了，否则对照前面的7步再检查一下。<br><br>　　八、MySQL的常用操作<br><br>　　注意：MySQL中每个命令后都要以分号；结尾。<br><br>　　1、显示数据库<br>　　mysql&gt; show databases;<br>　　+----------+<br>　　| Database |<br>　　+----------+<br>　　| mysql　　|<br>　　| test　　 |<br>　　+----------+<br>　　2 rows in set (0.04 sec)<br>　　Mysql刚安装完有两个数据库：mysql和test。mysql库非常重要，它里面有MySQL的系统信息，我们改密码和新增用户，实际上就是用这个库中的相关表进行操作。<br><br>　　2、显示数据库中的表<br>　　mysql&gt; use mysql; （打开库，对每个库进行操作就要打开此库，类似于foxpro ）<br>　　Database changed<br><br>　　mysql&gt; show tables;<br>　　+-----------------+<br>　　| Tables_in_mysql |<br>　　+-----------------+<br>　　| columns_priv　　|<br>　　| db　　　　　　　|<br>　　| func　　　　　　|<br>　　| host　　　　　　|<br>　　| tables_priv　　 |<br>　　| user　　　　　　|<br>　　+-----------------+<br>　　6 rows in set (0.01 sec)<br><br>　　3、显示数据表的结构：<br>　　describe 表名;<br><br>　　4、显示表中的记录：<br>　　select * from 表名;<br>　　例如：显示mysql库中user表中的纪录。所有能对MySQL用户操作的用户都在此表中。<br>　　Select * from user;<br><br>　　5、建库：<br>　　create database 库名;<br>　　例如：创建一个名字位aaa的库<br>　　mysql&gt; create databases aaa;<br>6、建表：<br>　　use 库名；<br>　　create table 表名 (字段设定列表)；<br>　　例如：在刚创建的aaa库中建立表name,表中有id(序号，自动增长)，xm（姓名）,xb（性别）,csny（出身年月）四个字段<br>　　use aaa;<br>　　mysql&gt; create table name (id int(3) auto_increment not null primary key, xm char(8),xb char(2),csny date);<br>　　可以用describe命令察看刚建立的表结构。<br>　　mysql&gt; describe name;<br><br>　　+-------+---------+------+-----+---------+----------------+<br>　　| Field | Type　　| Null | Key | Default | Extra　　　　　|<br>　　+-------+---------+------+-----+---------+----------------+<br>　　| id　　| int(3)　|　　　| PRI | NULL　　| auto_increment |<br>　　| xm　　| char(8) | YES　|　　 | NULL　　|　　　　　　　　|<br>　　| xb　　| char(2) | YES　|　　 | NULL　　|　　　　　　　　|<br>　　| csny　| date　　| YES　|　　 | NULL　　|　　　　　　　　|<br>　　+-------+---------+------+-----+---------+----------------+<br><br>　　7、增加记录<br>　　例如：增加几条相关纪录。<br>　　mysql&gt; insert into name values('','张三','男','1971-10-01');<br>　　mysql&gt; insert into name values('','白云','女','1972-05-20');<br>　　可用select命令来验证结果。<br>　　mysql&gt; select * from name;<br>　　+----+------+------+------------+<br>　　| id | xm　 | xb　 | csny　　　 |<br>　　+----+------+------+------------+<br>　　|　1 | 张三 | 男　 | 1971-10-01 |<br>　　|　2 | 白云 | 女　 | 1972-05-20 |<br>　　+----+------+------+------------+<br><br>　　8、修改纪录<br>　　例如：将张三的出生年月改为1971-01-10<br>　　mysql&gt; update name set csny='1971-01-10' where xm='张三';<br><br>　　9、删除纪录<br>　　例如：删除张三的纪录。<br>　　mysql&gt; delete from name where xm='张三';<br><br>　　10、删库和删表<br>　　drop database 库名;<br>　　drop table 表名；<br><br>　　九、增加MySQL用户<br><br>　　格式：grant select on 数据库.* to 用户名@登录主机 identified by "密码"<br>例1、增加一个用户user_1密码为123，让他可以在任何主机上登录，并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MySQL，然后键入以下命令：<br><br>　　mysql&gt; grant select,insert,update,delete on *.* to user_1@"%" Identified by "123";<br>例1增加的用户是十分危险的，如果知道了user_1的密码，那么他就可以在网上的任何一台电脑上登录你的MySQL数据库并对你的数据为所欲为了，解决办法见例2。<br><br>　 　例2、增加一个用户user_2密码为123,让此用户只可以在localhost上登录，并可以对数据库aaa进行查询、插入、修改、删除的操作 （localhost指本地主机，即MySQL数据库所在的那台主机），这样用户即使用知道user_2的密码，他也无法从网上直接访问数据库，只能通过 MYSQL主机来操作aaa库。<br><br>　　mysql&gt;grant select,insert,update,delete on aaa.* to user_2@localhost identified by "123";<br><br>　　用新增的用户如果登录不了MySQL，在登录时用如下命令：<br><br>　　mysql -u user_1 -p　-h 192.168.113.50　（-h后跟的是要登录主机的ip地址）<br><br>　　十、备份与恢复<br><br>　　1、备份<br><br>　　例如：将上例创建的aaa库备份到文件back_aaa中<br><br>　　[root@test1 root]# cd　/home/data/mysql　(进入到库目录，本例库已由val/lib/mysql转到/home/data/mysql，见上述第七部分内容)<br>　　[root@test1 mysql]# mysqldump -u root -p --opt aaa &gt; back_aaa<br><br>　　2、恢复<br><br>　　[root@test mysql]# mysql -u root -p ccc &lt; back_aaa</span><br><br>
<img src ="http://www.blogjava.net/liaojiyong/aggbug/118304.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2007-05-18 11:53 <a href="http://www.blogjava.net/liaojiyong/archive/2007/05/18/118304.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>RPM命令手册（转）</title><link>http://www.blogjava.net/liaojiyong/archive/2007/04/28/114376.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Sat, 28 Apr 2007 08:19:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2007/04/28/114376.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/114376.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2007/04/28/114376.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/114376.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/114376.html</trackback:ping><description><![CDATA[RPM 软件包是非常常见的Linux软件包格式，包括Redhat，Mandrake以及几乎全部的国产Linux在内的很多发行版本都用来作为默认的发行软件包格式。对于RPM格式的基本操作是一个Linuxer应该熟习和掌握的。<br><br>一、安装 <br><br>命令格式： <br><br>rpm -i ( or --install) options file1.rpm ... fileN.rpm <br><br>参数： <br><br>file1.rpm ... fileN.rpm 将要安装的RPM包的文件名 <br><br>详细选项： <br><br>-h (or --hash) 安装时输出hash记号 (``#'') <br>--test 只对安装进行测试，并不实际安装。 <br>--percent 以百分比的形式输出安装的进度。 <br>--excludedocs 不安装软件包中的文档文件 <br>--includedocs 安装文档 <br>--replacepkgs 强制重新安装已经安装的软件包 <br>--replacefiles 替换属于其它软件包的文件 <br>--force 忽略软件包及文件的冲突 <br>--noscripts 不运行预安装和后安装脚本 <br>--prefix
<path>将软件包安装到由
<path>指定的路径下 <br>--ignorearch 不校验软件包的结构 <br>--ignoreos 不检查软件包运行的操作系统 <br>--nodeps 不检查依赖性关系 <br>--ftpproxy <host>用 <host>作为 FTP代理 <br>--ftpport
<port>指定FTP的端口号为
<port><br><br>通用选项 <br><br>-v 显示附加信息 <br>-vv 显示调试信息 <br>--root
<path>让RPM将
<path>指定的路径做为"根目录"，这样预安装程序和后安 <br>装程序都会安装到这个目录下 <br>--rcfile <rcfile>设置rpmrc文件为 <rcfile><br>--dbpath
<path>设置RPM 资料库存所在的路径为
<path><br><br>二、删除 <br><br>命令格式： <br><br>rpm -e ( or --erase) options pkg1 ... pkgN <br><br>参数 <br><br>pkg1 ... pkgN ：要删除的软件包 <br><br>详细选项 <br><br>--test 只执行删除的测试 <br>--noscripts 不运行预安装和后安装脚本程序 <br>--nodeps 不检查依赖性 <br><br>通用选项 <br><br>-vv 显示调试信息 <br>--root
<path>让RPM将
<path>指定的路径做为"根目录"，这样预安装程序和后安装 <br>程序都会安装到这个目录下 <br>--rcfile <rcfile>设置rpmrc文件为 <rcfile><br>--dbpath
<path>设置RPM 资料库存所在的路径为
<path><br><br>三、升级 <br><br>命令格式 <br><br>rpm -U ( or --upgrade) options file1.rpm ... fileN.rpm <br><br>参数 <br><br>file1.rpm ... fileN.rpm 软件包的名字 <br><br>详细选项 <br><br>-h (or --hash) 安装时输出hash记号 (``#'') <br>--oldpackage 允许"升级"到一个老版本 <br>--test 只进行升级测试 <br>--excludedocs 不安装软件包中的文档文件 <br>--includedocs 安装文档 <br>--replacepkgs 强制重新安装已经安装的软件包 <br>--replacefiles 替换属于其它软件包的文件 <br>--force 忽略软件包及文件的冲突 <br>--percent 以百分比的形式输出安装的进度。 <br>--noscripts 不运行预安装和后安装脚本 <br>--prefix
<path>将软件包安装到由
<path>指定的路径下 <br>--ignorearch 不校验软件包的结构 <br>--ignoreos 不检查软件包运行的操作系统 <br>--nodeps 不检查依赖性关系 <br>--ftpproxy <host>用 <host>作为 FTP代理 <br>--ftpport
<port>指定FTP的端口号为
<port><br><br>通用选项 <br><br>-v 显示附加信息 <br>-vv 显示调试信息 <br>--root
<path>让RPM将
<path>指定的路径做为"根目录"，这样预安装程序和后安装程序都会安装到这个目录下 <br>--rcfile <rcfile>设置rpmrc文件为 <rcfile><br>--dbpath
<path>设置RPM 资料库存所在的路径为
<path><br><br>四、查询 <br><br>命令格式： <br><br>rpm -q ( or --query) options <br><br>参数： <br><br>pkg1 ... pkgN ：查询已安装的软件包 <br><br>详细选项 <br><br>-p <file>(or ``-'') 查询软件包的文件 <br>-f <file>查询<file>属于哪个软件包 <br>-a 查询所有安装的软件包 <br>--whatprovides <x>查询提供了 <x>功能的软件包 <br>-g <group>查询属于<group> 组的软件包 <br>--whatrequires <x>查询所有需要 <x>功能的软件包 <br><br>信息选项 <br><br><null>显示软件包的全部标识 <br>-i 显示软件包的概要信息 <br>-l 显示软件包中的文件列表 <br>-c 显示配置文件列表 <br>-d 显示文档文件列表 <br>-s 显示软件包中文件列表并显示每个文件的状态 <br>--scripts 显示安装、卸载、校验脚本 <br>--queryformat (or --qf) 以用户指定的方式显示查询信息 <br>--dump 显示每个文件的所有已校验信息 <br>--provides 显示软件包提供的功能 <br>--requires (or -R) 显示软件包所需的功能 <br><br>通用选项 <br><br>-v 显示附加信息 <br>-vv 显示调试信息 <br>--root
<path>让RPM将
<path>指定的路径做为"根目录"，这样预安装程序和后安装程序都会安装到这个目录下 <br>--rcfile <rcfile>设置rpmrc文件为 <rcfile><br>--dbpath
<path>设置RPM 资料库存所在的路径为
<path><br><br>五、校验已安装的软件包 <br><br>命令格式： <br><br>rpm -V ( or --verify, or -y) options <br><br>参数 <br><br>pkg1 ... pkgN 将要校验的软件包名 <br><br>软件包选项 <br><br>-p <file>Verify against package file <file><br>-f <file>校验<file>所属的软件包 <br>-a Verify 校验所有的软件包 <br>-g <group>校验所有属于组 <group>的软件包 <br><br>详细选项 <br><br>--noscripts 不运行校验脚本 <br>--nodeps 不校验依赖性 <br>--nofiles 不校验文件属性 <br><br>通用选项 <br><br>-v 显示附加信息 <br>-vv 显示调试信息 <br>--root
<path>让RPM将
<path>指定的路径做为"根目录"，这样预安装程序和后安装程序都会安装到这个目录下 <br>--rcfile <rcfile>设置rpmrc文件为 <rcfile><br>--dbpath
<path>设置RPM 资料库存所在的路径为
<path><br><br>六、校验软件包中的文件 <br><br>语法： <br><br>rpm -K ( or --checksig) options file1.rpm ... fileN.rpm <br><br>参数： <br><br>file1.rpm ... fileN.rpm 软件包的文件名 <br><br>Checksig--详细选项 <br><br>--nopgp 不校验PGP签名 <br><br>通用选项 <br><br>-v 显示附加信息 <br>-vv 显示调试信息 <br>--rcfile <rcfile>设置rpmrc文件为 <rcfile><br><br><br>七、其它RPM选项 <br><br>--rebuilddb 重建RPM资料库 <br>--initdb 创建一个新的RPM资料库 <br>--quiet 尽可能的减少输出 <br>--help 显示帮助文件 <br>--version 显示RPM的当前版本 <br>
<img src ="http://www.blogjava.net/liaojiyong/aggbug/114376.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2007-04-28 16:19 <a href="http://www.blogjava.net/liaojiyong/archive/2007/04/28/114376.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FTP使用精萃--FTP的内部命令（转）</title><link>http://www.blogjava.net/liaojiyong/archive/2007/04/28/114375.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Sat, 28 Apr 2007 08:18:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2007/04/28/114375.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/114375.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2007/04/28/114375.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/114375.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/114375.html</trackback:ping><description><![CDATA[<a href="http://www.linuxfans.org/nuke/modules.php?name=News&amp;new_topic=18"><img alt=网络技术 hspace=10 src="http://www.linuxfans.org/nuke/images/topics/network.gif" align=right vspace=10 border=0></a> FTP命令是Internet用户使用最频繁的命令之一，不论是在DOS还是UNIX操作系统 <br>下使用FTP，都会遇到大量的FTP内部命令。 熟悉并灵活应用FTP的内部命令，可 <br>以大大方便使用者，并收到事半功倍之效...........<br><br>FTP命令是Internet用户使用最频繁的命令之一，不论是在DOS还是UNIX操作系统 <br>下使用FTP，都会遇到大量的FTP内部命令。 熟悉并灵活应用FTP的内部命令，可 <br>以大大方便使用者，并收到事半功倍之效。 <br>FTP的命令行格式为： ftp -v -d -i -n -g [主机名] ，其中 <br><br>-v 显示远程服务器的所有响应信息； <br><br>-n 限制ftp的自动登录，即不使用； <br><br>.n etrc文件； <br><br>-d 使用调试方式； <br><br>-g 取消全局文件名。 <br><br>ftp使用的内部命令如下(中括号表示可选项): <br><br>1.![cmd[args]]：在本地机中执行交互shell，exit回到ftp环境，如：!ls* <br>.zip. <br><br>2.$ macro-ame[args]：执行宏定义macro-name. <br><br>3.account[password]：提供登录远程系统成功后访问系统资源所需的补充口 <br>令。 <br><br>4.append local-file[remote-file]：将本地文件追加到远程系统主机，若 <br>未指定远程系统文件名，则使用本地文件名。 <br><br>5.ascii：使用ascii类型传输方式。 <br><br>6.bell：每个命令执行完毕后计算机响铃一次。 <br><br>7.bin：使用二进制文件传输方式。 <br><br>8.bye：退出ftp会话过程。 <br><br>9.case：在使用mget时，将远程主机文件名中的大写转为小写字母。 <br><br>10.cd remote-dir：进入远程主机目录。 <br><br>11.cdup：进入远程主机目录的父目录。 <br><br>12.chmod mode file-name：将远程主机文件file-name的存取方式设置为mo <br>de，如： chmod 777 a.out 。 <br><br>13.close：中断与远程服务器的ftp会话(与open对应)。 <br><br>14.cr：使用asscii方式传输文件时，将回车换行转换为回行。 <br><br>15.delete remote-file：删除远程主机文件。 <br><br>16.debug[debug-value]：设置调试方式， 显示发送至远程主机的每条命令 <br>，如： deb up 3，若设为0，表示取消debug。 <br><br>17.dir[remote-dir][local-file]：显示远程主机目录，并将结果存入本地 <br>文件local-file。 <br><br>18.disconnection：同close。 <br><br>19.form format：将文件传输方式设置为format，缺省为file方式。 <br><br>20.get remote-file[local-file]： 将远程主机的文件remote-file传至本 <br>地硬盘的local-file。 <br><br>21.glob：设置mdelete，mget，mput的文件名扩展，缺省时不扩展文件名， <br>同命令行的-g参数。 <br><br>22.hash：每传输1024字节，显示一个hash符号(#)。 <br><br>23.help[cmd]：显示ftp内部命令cmd的帮助信息，如：help get。 <br><br>24.idle[seconds]：将远程服务器的休眠计时器设为[seconds]秒。 <br><br>25.image：设置二进制传输方式(同binary)。 <br><br>26.lcd[dir]：将本地工作目录切换至dir。 <br><br>27.ls[remote-dir][local-file]：显示远程目录remote-dir， 并存入本地 <br>文件local-file。 <br><br>28.macdef macro-name：定义一个宏，遇到macdef下的空行时，宏定义结束 <br>。 <br><br>29.mdelete[remote-file]：删除远程主机文件。 <br><br>30.mdir remote-files local-file：与dir类似，但可指定多个远程文件， <br>如： mdir *.o.*.zipoutfile 。 <br><br>31.mget remote-files：传输多个远程文件。 <br><br>32.mkdir dir-name：在远程主机中建一目录。 <br><br>33.mls remote-file local-file：同nlist，但可指定多个文件名。 <br><br>34.mode[modename]：将文件传输方式设置为modename， 缺省为stream方式 <br>。 <br><br>35.modtime file-name：显示远程主机文件的最后修改时间。 <br><br>36.mput local-file：将多个文件传输至远程主机。 <br><br>37.newer file-name： 如果远程机中file-name的修改时间比本地硬盘同名 <br>文件的时间更近，则重传该文件。 <br><br>38.nlist[remote-dir][local-file]：显示远程主机目录的文件清单，并存 <br>入本地硬盘的local-file。 <br><br>39.nmap[inpattern outpattern]：设置文件名映射机制， 使得文件传输时 <br>，文件中的某些字符相互转换，如：nmap $1.$2.$3[$1，$2].[$2，$3]，则传输 <br>文件a1.a2.a3时，文件名变为a1，a2。该命令特别适用于远程主机为非UNIX机的 <br>情况。 <br><br>40.ntrans[inchars[outchars]]：设置文件名字符的翻译机制，如ntrans　 <br>1R，则文件名LLL将变为RRR。 <br><br>41.open host[port]：建立指定ftp服务器连接，可指定连接端口。 <br><br>42.passive：进入被动传输方式。 <br><br>43.prompt：设置多个文件传输时的交互提示。 <br><br>44.proxy ftp-cmd：在次要控制连接中，执行一条ftp命令， 该命令允许连 <br>接两个ftp服务器，以在两个服务器间传输文件。第一条ftp命令必须为open，以 <br>首先建立两个服务器间的连接。 <br><br>45.put local-file[remote-file]：将本地文件local-file传送至远程主机 <br>。 <br><br>46.pwd：显示远程主机的当前工作目录。 <br><br>47.quit：同bye，退出ftp会话。 <br><br>48.quote arg1，arg2...：将参数逐字发至远程ftp服务器，如：quote sys <br>t. <br><br>49.recv remote-file[local-file]：同get。 <br><br>50.reget remote-file[local-file]：类似于get，但若local-file存在，则 <br>从上次传输中断处续传。 <br><br>51.rhelp[cmd-name]：请求获得远程主机的帮助。 <br><br>52.rstatus[file-name]：若未指定文件名，则显示远程主机的状态，否则显 <br>示文件状态。 <br><br>53.rename[from][to]：更改远程主机文件名。 <br><br>54.reset：清除回答队列。 <br><br>55.restart marker：从指定的标志marker处，重新开始get或put，如：res <br>tart 130。 <br><br>56.rmdir dir-name：删除远程主机目录。 <br><br>57.runique：设置文件名唯一性存储，若文件存在，则在原文件后加后缀.. <br>1，.2等。 <br><br>58.send local-file[remote-file]：同put。 <br><br>59.sendport：设置PORT命令的使用。 <br><br>60.site arg1，arg2...：将参数作为SITE命令逐字发送至远程ftp主机。 <br><br>61.size file-name：显示远程主机文件大小，如：site idle 7200。 <br><br>62.status：显示当前ftp状态。 <br><br>63.struct[struct-name]：将文件传输结构设置为struct-name， 缺省时使 <br>用stream结构。 <br><br>64.sunique：将远程主机文件名存储设置为唯一(与runique对应)。 <br><br>65.system：显示远程主机的操作系统类型。 <br><br>66.tenex：将文件传输类型设置为TENEX机的所需的类型。 <br><br>67.tick：设置传输时的字节计数器。 <br><br>68.trace：设置包跟踪。 <br><br>69.type[type-name]：设置文件传输类型为type-name，缺省为ascii，如： <br>type binary，设置二进制传输方式。 <br><br>70.umask[newmask]：将远程服务器的缺省umask设置为newmask，如：umask <br>3。 <br><br>71.user user-name[password][account]：向远程主机表明自己的身份，需 <br>要口令时，必须输入口令，如：user anonymous my@email。 <br><br>72.verbose：同命令行的-v参数，即设置详尽报告方式，ftp服务器的所有响 <br>应都将显示给用户，缺省为on. <br><br>73.?[cmd]：同help. <br>
<img src ="http://www.blogjava.net/liaojiyong/aggbug/114375.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2007-04-28 16:18 <a href="http://www.blogjava.net/liaojiyong/archive/2007/04/28/114375.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Unix基本命令(按字母排列)(转)</title><link>http://www.blogjava.net/liaojiyong/archive/2007/04/28/114371.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Sat, 28 Apr 2007 08:14:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2007/04/28/114371.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/114371.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2007/04/28/114371.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/114371.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/114371.html</trackback:ping><description><![CDATA[A <br><br>at : execute commands at a specified time/date. <br>awk: a scripting language, especially useful for manipulating text and automation. <br><br>B <br>bash : invokes the Bourne Again Shell (standard on most boxes). <br>batch: execute comands when load permits. <br>bc : interactive C-like calcultor (integers only). <br><br>C <br>cal : displays a calender, also lets you choose month/year using parameters. <br>calender : invoke a reminder service. <br>cancel : cancel request to calender. <br>cat : concatenate files (displays a file without scrolling ability. Simply dumps <br>it to the standard output. Can be useful when chaining multiple <br>applications to do complicated jobs, so one application can use another's <br>output as input). <br><br>cd : change the current working directory. <br>chgrp : change group ownership of a file. <br>chmod : change access patterns (permissions) to files. <br>chown : change user ownership of files. <br>clear : clear the screen. <br>cmp : compare two files. <br>cp : copy files. <br>cpio : archive and extract files. <br>cron : clock deamon (executes "batch" and "at" commands). <br>crontab : schedules commands at regular intervals. <br>crypt : encrypt , decrypt files using altered DES, standard to Unix passwords <br>(restricted distribution). <br>csh : invoke the C shell. <br>csplit : split file into several other files. <br>cu : call up another unix terminal. <br>cut : cut selected fields from each line of file. <br><br>D <br>date : displays the time and date (can also change it if you're root). <br>dd : convert and copy a file. <br>df : reports space (free, total etc') on all mounted file systems. <br>diff : copare two files. <br>diff3 : compare 3 or more files. <br>dircmp : compare two directories. <br>du : report disk usage. <br><br>E <br>echo : echo argument to standart output. <br>ed : line oriented editor. <br>egrep : extended version of grep (searches for extended regular expressions). <br>expr : evaluate boolean and arithmetic expression. <br><br>F <br>fgrep : same as grep, only it interprets patterns as a list of fixed strings. <br>false : return nonzero (false) exit status. <br>file : report type of file. <br>find : find matching files and run specified programs on them (optional). <br>finger : report user information (operates remotely only if a finger server is running <br>on the remote host). <br>ftp : (file transfer protocol) a client for FTP servers. <br><br>G <br>grep : search files for regular expression matches. <br><br>H <br>haltsys : gracefully shutdown sytem (can only be run by root. halt in Linux). <br>head : display first 10 lines of a file. <br><br>J <br>join : display the combination (lines with command field) of two fields. <br><br>K <br>kill : send a signal to terminate a process. <br>ksh : invoke the korn shell. <br><br>L <br>line : read a specific line out of a file (shell script usage). <br>ln : create a link to a file/directory. <br>logname : gets your login name. <br>lpr : sends a request to printer. <br>lprint : prints on local printer. <br>lpstat : reports printer status. <br>lpq : same as above. <br>ls : lists the contents of directory. <br><br>M <br>mail : send and recieve mail. <br>man : displays manual pages. <br>mesg : grant or deny permissions to recieve messages from other users using the <br>write command. <br>mkdir : create a new directory . <br>mknod : build a special file. <br>more : display file one page at a time. <br>mount : mount a storage device. <br>mv : move or rename a file. <br><br>N <br>news : display news item from NNTP servers. <br>nice : change priorities of processes. <br>nohup : run a command after logout (ignores hangup signals). <br>nroff : format files for printing. <br>nslookup : retrieve information from DNS servers. <br><br>O <br>od : displays a file in 8-based octals. <br><br>P <br>passwd : create or change login password. <br>paste : merge lines of files. <br>pr : format and print file. <br>ps : reports status of active processes. <br>pstat : report system status. <br>pwcheck : check /etc/passwd (default) file. <br>pwd : display current working directory. <br><br>R <br>rm : remove (erase) files or directories (unrecoverable). <br>rmdir : remove an empty directory. <br>rsh : invoke Restricted Bourne Shell. <br><br>S <br>sed : the stream editor. <br>set : assign value to variable. <br>setenv : assign value to enviroment variable. <br>sh : invoke Bourne shell. <br>sleep : suspend execution of a command for a given period. <br>sort : sort and merge files. <br>spell : find spelling errors. <br>split : split file to smaller files. <br>stty : set options for a terminal. <br>su : spawns a subshell with a different uname, requires other user's <br>password,unless you're root. <br>sum : compute checksums and number of blocks for files. <br><br>T <br>tabs : set tabs on a terminal. <br>tail : display last 10 lines of file. <br>tar : a simple compression tool that merges multiple files into a single one, <br>originally made to make backing up materials on backup tapes easier. <br>tee : create a tee in a pipe. <br>telnet : access remote systems using the telnet protocol. <br>test : test various expressions and files. <br>time : display elapsed time (execution, process, and system times) for a <br>command. <br>touch : change time/date stamps of files. <br>tr : substitutes sets of charecters. <br>translate : translates files to different format. <br>troff : format files to phototypester. <br>true : return zero (true) exit status. <br>tset : set terminal mode. <br>tty : report a name of a terminal. <br><br>U <br>umask : set file-creation mode (permissions) mask. <br>umount : unmount a device. <br>uname : display the name of the current system. <br>uniq : report any duplicate line in a file. <br>units : convert numbers from one unit to another. <br>unzip : extract files from zip archieve. <br>uptime : report system activety. <br>uucp : copy files between two unix systems (oldie but still beautiful). <br>uulog : report uucp status. <br>uuname : list uucp sites known to this site. <br>uudecode : decode to binary after "uuencode" transmission. <br>uencode : encode binary file for email transmission. <br>uustat : report status of uucp or cancel a job. <br>uupick : receive public files sent bu uuto. <br>uuto : send files to another public Unix system. <br>uux : execute command to remote Unix system. <br><br>V <br>vi : a screen oriented (visual) editor (cool ,but Vim is better). <br><br>W <br>wall : sends message to all users (root only). <br>wait : await completion of background process. <br>wc : count lines, words, bytes etc' in one or more files. <br>who : report active users. <br>whois : search for user information. <br>write : send a message for another user (see mesg). <br>whoami : which user you are logged in as at the moment. If you, for example, <br>switch to a different user, logname will show the original uname you <br>logged in as, and whoami will show the current user. <br><br><br>Z <br>zip : archieve file or files in zip format.' 
<img src ="http://www.blogjava.net/liaojiyong/aggbug/114371.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2007-04-28 16:14 <a href="http://www.blogjava.net/liaojiyong/archive/2007/04/28/114371.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux 入门常用命令（转）</title><link>http://www.blogjava.net/liaojiyong/archive/2007/04/28/114368.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Sat, 28 Apr 2007 08:11:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2007/04/28/114368.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/114368.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2007/04/28/114368.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/114368.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/114368.html</trackback:ping><description><![CDATA[<span><strong>1.Linux进入与退出系统 <br></strong><span><strong>进入</strong></span><strong><span>Linux</span>系统</strong>：<br>必须要输入用户的账号，<span>在系统安装过程中可以创建以下两种帐号：<br></span><span>　　</span><span>1</span><span>．</span><span>root--</span><span>超级用户帐号（系统管理员），使用这个帐号可以在系统中做任何事情。<br></span><span>　　</span><span>2</span><span>．普通用户</span><span>--</span><span>这个帐号供普通用户使用，可以进行有限的操作。<br></span><span>　　一般的</span><span>Linux</span><span>使用者均为普通用户，而系统管理员一般使用超级用户帐号完成一些系统管理的工作。如果只需要完成一些由普通帐号就能完成的任务，建议不要使用超级用户帐号，以免无意中破坏系统。影响系统的正常运行。<br><span>　　</span>用户登录分两步：第一步，输入用户的登录名，系统根据该登录名识别用户；第二步，输入用户的口令，该口令是用户自己设置的一个字符串，对其他用户是保密的，是在登录时系统用来辨别真假用户的关键字。<br><span>　　</span></span><span>当用户正确地输入用户名和口令后，就能合法地进入系统。屏幕显示：</span>
<p><span>[<strong>root@loclhost /root] # </strong></span></p>
<p><span>这时就可以对系统做各种操作了。注意超级用户的提示符是&#8220;</span><span>#</span><span>&#8221;，其他用户的提示符是&#8220;</span><span>$</span><span>&#8221;。</span><span><br><br><strong>修改口令<br></strong><span>　　</span></span><span>为了更好的保护用户帐号的安全，</span><span>Linux</span><span>允许用户随时修改自己的口令，修改口令的命令是</span><span>passwd</span><span>，它将提示用户输入旧口令和新口令，之后还要求用户再次确认新口令，以避免用户无意中按错键。如果用户忘记了口令，可以向系统管理员申请为自己重新设置一个。<br><br></span><span><strong>虚拟控制台<br></strong><span>　　</span></span><span>Linux</span><span>是一个真正的多用户操作系统，它可以同时接受多个用户登录。</span><span>Linux</span><span>还允许一个用户进行多次登录，这是因为</span><span>Linux</span><span>和</span><span>UNIX</span><span>一样，提供了虚拟控制台的访问方式，允许用户在同一时间从控制台进行多次登录。虚拟控制台的选择可以通过按下</span><span>Alt</span><span>键和一个功能键来实现，通常使用</span><span>F1-F6</span><span>例如，用户登录后，按一下</span><span>Alt-F2</span><span>键，用户又可以看到</span><span>"login:"</span><span>提示符，说明用户看到了第二个虚拟控制台。然后只需按</span><span>Alt-F1</span><span>键，就可以回到第一个虚拟控制台。</span> <span>一个新安装的</span><span>Linux</span><span>系统默认允许用户使用</span><span>Alt-F1</span><span>到</span><span>Alt-F6</span><span>键来访问前六个虚拟控制台。虚拟控制台可使用户同时在多个控制台上工作，真正体现</span><span>Linux</span><span>系统多用户的特性。用户可以在某一虚拟控制台上进行的工作尚未结束时，切换到另一虚拟控制台开始另一项工作。<br><br></span><span><strong>退出系统<br></strong></span><span><span>　　</span>不论是超级用户，还是普通用户，需要退出系统时，在</span><span>shell</span><span>提示符下，键入</span><span>exit</span><span>命令即可。</span></p>
<br>
<h4><span>Linux</span><span>文件的复制、删除和移动命令</span><span>? <br><br></span><span><strong>cp</strong></span><strong><span>命令</span></strong><span> </span></h4>
<p><span>该命令的功能是将给出的文件或目录拷贝到另一文件或目录中，同</span><span>MSDOS</span><span>下的</span><span>copy</span><span>命令一样，功能十分强大。</span><span> </span></p>
<p><span>语法：</span><span> cp [</span><span>选项</span><span>] </span><span>源文件或目录</span> <span>目标文件或目录</span><span> </span></p>
<p><span>说明：该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中。</span></p>
<p><span>该命令的各选项含义如下：</span></p>
<p><span>- a </span><span>该选项通常在拷贝目录时使用。它保留链接、文件属性，并递归地拷贝目录，其作用等于</span><span>dpR</span><span>选项的组合。</span></p>
<p><span>- d </span><span>拷贝时保留链接。</span></p>
<p><span>- f </span><span>删除已经存在的目标文件而不提示。</span></p>
<p><span>- i </span><span>和</span><span>f</span><span>选项相反，在覆盖目标文件之前将给出提示要求用户确认。回答</span><span>y</span><span>时目标文件将被覆盖，是交互式拷贝。</span><span> </span></p>
<p><span>- p </span><span>此时</span><span>cp</span><span>除复制源文件的内容外，还将把其修改时间和访问权限也复制到新文件中。</span><span> </span></p>
<p><span>- r </span><span>若给出的源文件是一目录文件，此时</span><span>cp</span><span>将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。</span></p>
<p><span>- l </span><span>不作拷贝，只是链接文件。</span><span> </span></p>
<p><span>　　需要说明的是，为防止用户在不经意的情况下用</span><span>cp</span><span>命令破坏另一个文件，如用户指定的目标文件名已存在，用</span><span>cp</span><span>命令拷贝文件后，这个文件就会被新源文件覆盖，因此，建议用户在使用</span><span>cp</span><span>命令拷贝文件时，最好使用</span><span>i</span><span>选项。</span></p>
P class=MsoNormal&gt;<span><strong>mv</strong></span><strong><span>命令</span></strong>
<p>&#160;</p>
<p><span>用户可以使用</span><span>mv</span><span>命令来为文件或目录改名或将文件由一个目录移入另一个目录中。该命令如同</span><span>MSDOS</span><span>下的</span><span>ren</span><span>和</span><span>move</span><span>的组合。</span></p>
<p><span>语法：</span><span>mv [</span><span>选项</span><span>] </span><span>源文件或目录</span> <span>目标文件或目录</span><span> </span></p>
<p><span>说明：视</span><span>mv</span><span>命令中第二个参数类型的不同（是目标文件还是目标目录），</span><span>mv</span><span>命令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时，</span><span>mv</span><span>命令完成文件重命名，此时，源文件只能有一个（也可以是源目录名），它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时，源文件或目录参数可以有多个，</span><span>mv</span><span>命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时，</span><span>mv</span><span>先拷贝，再将原有文件删除，而链至该文件的链接也将丢失。</span></p>
<p><span>命令中各选项的含义为：</span></p>
<p><span>- I </span><span>交互方式操作。如果</span><span>mv</span><span>操作将导致对已存在的目标文件的覆盖，此时系统询问是否重写，要求用户回答</span><span>y</span><span>或</span><span>n</span><span>，这样可以避免误覆盖文件。</span></p>
<p><span>- f </span><span>禁止交互操作。在</span><span>mv</span><span>操作要覆盖某已有的目标文件时不给任何指示，指定此选项后，</span><span>i</span><span>选项将不再起作用。</span></p>
<p><span>如果所给目标文件（不是目录）已存在，此时该文件的内容将被新文件覆盖。为防止用户用</span><span>mv</span><span>命令破坏另一个文件，使用</span><span>mv</span><span>命令移动文件时，最好使用</span><span>i</span><span>选项。</span><span> </span></p>
<p>?</p>
<p><span><strong>rm</strong></span><strong><span>命令</span></strong></p>
<p><span>用户可以用</span><span>rm</span><span>命令删除不需要的文件。该命令的功能为删除一个目录中的一个或多个文件或目录，它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件，只是断开了链接，原文件保持不变。</span></p>
<p><span>rm</span><span>命令的一般形式为：</span></p>
<p><span>rm [</span><span>选项</span><span>] </span><span>文件&#8230;</span><span> </span></p>
<p><span>如果没有使用</span><span>- r</span><span>选项，则</span><span>rm</span><span>不会删除目录。</span><span> </span></p>
<p><span>该命令的各选项含义如下：</span></p>
<p><span>- f </span><span>忽略不存在的文件，从不给出提示。</span><span> </span></p>
<p><span>- r </span><span>指示</span><span>rm</span><span>将参数中列出的全部目录和子目录均递归地删除。</span></p>
<p><span>- i </span><span>进行交互式删除。</span><span> </span></p>
<p><span>使用</span><span>rm</span><span>命令要小心。因为一旦文件被删除，它是不能被恢复的。了防止这种情况的发生，可以使用</span><span>i</span><span>选项来逐个确认要删除的文件。如果用户输入</span><span>y</span><span>，文件将被删除。如果输入任何其他东西，文件则不会删除。</span></p>
<p><span><strong>mv</strong></span><strong><span>命令</span></strong></p>
<p><span>用户可以使用</span><span>mv</span><span>命令来为文件或目录改名或将文件由一个目录移入另一个目录中。该命令如同</span><span>MSDOS</span><span>下的</span><span>ren</span><span>和</span><span>move</span><span>的组合。</span></p>
<p><span>语法：</span><span>mv [</span><span>选项</span><span>] </span><span>源文件或目录</span> <span>目标文件或目录</span><span> </span></p>
<p><span>说明：视</span><span>mv</span><span>命令中第二个参数类型的不同（是目标文件还是目标目录），</span><span>mv</span><span>命令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时，</span><span>mv</span><span>命令完成文件重命名，此时，源文件只能有一个（也可以是源目录名），它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时，源文件或目录参数可以有多个，</span><span>mv</span><span>命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时，</span><span>mv</span><span>先拷贝，再将原有文件删除，而链至该文件的链接也将丢失。</span></p>
<p><span>命令中各选项的含义为：</span></p>
<p><span>- I </span><span>交互方式操作。如果</span><span>mv</span><span>操作将导致对已存在的目标文件的覆盖，此时系统询问是否重写，要求用户回答</span><span>y</span><span>或</span><span>n</span><span>，这样可以避免误覆盖文件。</span></p>
<p><span>- f </span><span>禁止交互操作。在</span><span>mv</span><span>操作要覆盖某已有的目标文件时不给任何指示，指定此选项后，</span><span>i</span><span>选项将不再起作用。</span></p>
<p><span>如果所给目标文件（不是目录）已存在，此时该文件的内容将被新文件覆盖。为防止用户用</span><span>mv</span><span>命令破坏另一个文件，使用</span><span>mv</span><span>命令移动文件时，最好使用</span><span>i</span><span>选项。</span><span> </span></p>
<p>?</p>
<p><span><strong>rm</strong></span><strong><span>命令</span></strong></p>
<p><span>用户可以用</span><span>rm</span><span>命令删除不需要的文件。该命令的功能为删除一个目录中的一个或多个文件或目录，它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件，只是断开了链接，原文件保持不变。</span></p>
<p><span>rm</span><span>命令的一般形式为：</span></p>
<p><span>rm [</span><span>选项</span><span>] </span><span>文件&#8230;</span><span> </span></p>
<p><span>如果没有使用</span><span>- r</span><span>选项，则</span><span>rm</span><span>不会删除目录。</span><span> </span></p>
<p><span>该命令的各选项含义如下：</span></p>
<p><span>- f </span><span>忽略不存在的文件，从不给出提示。</span><span> </span></p>
<p><span>- r </span><span>指示</span><span>rm</span><span>将参数中列出的全部目录和子目录均递归地删除。</span></p>
<p><span>- i </span><span>进行交互式删除。</span><span> </span></p>
<p><span>使用</span><span>rm</span><span>命令要小心。因为一旦文件被删除，它是不能被恢复的。了防止这种情况的发生，可以使用</span><span>i</span><span>选项来逐个确认要删除的文件。如果用户输入</span><span>y</span><span>，文件将被删除。如果输入任何其他东西，文件则不会删除。</span></p>
<h4><span><strong>Linux</strong></span><strong><span>目录的创建与删除命令</span></strong><span>? </span></h4>
<p><span><strong>mkdir</strong></span><strong><span>命令</span></strong></p>
<p><span>功能：创建一个目录（类似</span><span>MSDOS</span><span>下的</span><span>md</span><span>命令）。</span></p>
<p><span>语法：</span><span>mkdir [</span><span>选项</span><span>] dir-name </span></p>
<p><span>说明：该命令创建由</span><span>dir-name</span><span>命名的目录。要求创建目录的用户在当前目录中（</span><span>dir-name</span><span>的父目录中）具有写权限，并且</span><span>dirname</span><span>不能是当前目录中已有的目录或</span> <span>文件名称。</span></p>
<p><span>命令中各选项的含义为：</span></p>
<p><span>- m </span><span>对新建目录设置存取权限。也可以用</span><span>chmod</span><span>命令设置。</span></p>
<p><span>- p </span><span>可以是一个路径名称。此时若路径中的某些目录尚不存在，</span> <span>加上此选项后，</span> <span>系统将自动建立好那些尚不存在的目录，即一次可以建立多个目录。</span></p>
<p>?</p>
<p><span><strong>rmdir </strong></span><strong><span>命令</span></strong></p>
<p><span>功能：删除空目录。</span></p>
<p><span>语法：</span><span>rmdir [</span><span>选项</span><span>] dir-name </span></p>
<p><span>说明：</span><span>dir-name</span><span>表示目录名。该命令从一个目录中删除一个或多个子目录项。需要</span> <span>特别注意的是，一个目录被删除之前必须是空的。</span><span>rm - r dir</span><span>命令可代替</span><span> rmdir</span><span>，但是有危险性。删除某目录时也必须具有对父目录的写权限。</span></p>
<p><span>命令中各选项的含义为：</span></p>
<p><span>- p </span><span>递归删除目录</span><span>dirname</span><span>，当子目录删除后其父目录为空时，也一同被删除。如果整个路径被删除或者由于某种原因保留部分路径，则系统在标准输出上显示相应</span> <span>的信息。</span></p>
<p>?</p>
<p><span><strong>cd </strong></span><strong><span>命令</span><span> </span></strong></p>
<p><span>功能：改变工作目录。</span></p>
<p><span>语法：</span><span>cd [directory]</span></p>
<p><span>说明：该命令将当前目录改变至</span><span>directory</span><span>所指定的目录。若没有指定</span><span>directory</span><span>，</span> <span>则回到用户的主目录。为了改变到指定目录，用户必须拥有对指定目录的执行和读</span> <span>权限。</span><span> </span></p>
<p><span>该命令可以使用通配符（通配符含义请参见第十章）。</span><span> </span></p>
<p><span><strong><br>pwd </strong></span><strong><span>命令</span></strong></p>
<p><span>在</span><span>Linux</span><span>层次目录结构中，用户可以在被授权的任意目录下利用</span><span>mkdir</span><span>命令创建新目录，也可以利用</span><span>cd</span><span>命令从一个目录转换到另一个目录。然而，没有提示符来告知用</span> <span>户目前处于哪一个目录中。要想知道当前所处的目录，可以使用</span><span>pwd</span><span>命令，该命令显示整个路径名。</span></p>
<p><span>语法：</span><span>pwd </span></p>
<p><span>说明：此命令显示出当前工作目录的绝对路径。</span></p>
<p>?</p>
<p><span><strong>ls </strong></span><strong><span>命令</span></strong></p>
<p><span>ls</span><span>是英文单词</span><span>list</span><span>的简写，其功能为列出目录的内容。这是用户最常用的一个命令之一，因为用户需要不时地查看某个目录的内容。该命令类似于</span><span>DOS</span><span>下的</span><span>dir</span><span>命令。</span></p>
<p><span>语法：</span><span>ls [</span><span>选项</span><span>] [</span><span>目录或是文件</span><span>] </span></p>
<p><span>对于每个目录，该命令将列出其中的所有子目录与文件。对于每个文件，</span><span>ls</span><span>将输出</span> <span>其文件名以及所要求的其他信息。默认情况下，输出条目按字母顺序排序。当未给出目录名或是文件名时，就显示当前目录的信息。</span></p>
<p><span>命令中各选项的含义如下：</span></p>
<p><span>- a </span><span>显示指定目录下所有子目录与文件，包括隐藏文件。</span><span> </span></p>
<p><span>- A </span><span>显示指定目录下所有子目录与文件，包括隐藏文件。但不列出&#8220;</span><span>.</span><span>&#8221;和</span> <span>&#8220;</span><span>..</span><span>&#8221;。</span></p>
<p><span>- b </span><span>对文件名中的不可显示字符用八进制逃逸字符显示。</span></p>
<p><span>- c </span><span>按文件的修改时间排序。</span><span> </span></p>
<p><span>- C </span><span>分成多列显示各项。</span></p>
<p><span>- d </span><span>如果参数是目录，只显示其名称而不显示其下的各文件。往往与</span><span>l</span><span>选项一起使</span> <span>用，以得到目录的详细信息。</span></p>
<p><span>- f </span><span>不排序。该选项将使</span><span>lts</span><span>选项失效，并使</span><span>aU</span><span>选项有效。</span></p>
<p><span>- F </span><span>在目录名后面标记&#8220;</span><span>/</span><span>&#8221;，可执行文件后面标记&#8220;</span><span>*</span><span>&#8221;，符号链接后面标记</span> <span>&#8220;</span><span>@</span><span>&#8221;，管道（或</span><span>FIFO</span><span>）后面标记&#8220;</span><span>|</span><span>&#8221;，</span><span>socket</span><span>文件后面标记&#8220;</span><span>=</span><span>&#8221;。</span><span> </span></p>
<p><span>- i </span><span>在输出的第一列显示文件的</span><span>i</span><span>节点号。</span><span> </span></p>
<p><span>- l </span><span>以长格式来显示文件的详细信息。这个选项最常用。</span></p>
<p><span>每行列出的信息依次是：</span> <span>文件类型与权限</span> <span>链接数</span> <span>文件属主</span> <span>文件属组</span> <span>文件大小</span> <span>建立或最近修改的时间</span> <span>名字</span><span> </span></p>
<p><span>对于符号链接文件，显示的文件名之后有&#8220;—〉&#8221;和引用文件路径名。</span><span> </span></p>
<p><span>对于设备文件，其&#8220;文件大小&#8221;字段显示主、次设备号，而不是文件大小。</span></p>
<p><span>目录中的总块数显示在长格式列表的开头，其中包含间接块。</span><span> </span></p>
<p><span>- L </span><span>若指定的名称为一个符号链接文件，则显示链接所指向的文件。</span></p>
<p><span>- m </span><span>输出按字符流格式，文件跨页显示，以逗号分开。</span><span> </span></p>
<p><span>- n </span><span>输出格式与</span><span>l</span><span>选项相同，只不过在输出中文件属主和属组是用相应的</span><span>UID</span><span>号和</span><span> GID</span><span>号来表示，而不是实际的名称。</span></p>
<p><span>- o </span><span>与</span><span>l</span><span>选项相同，只是不显示拥有者信息。</span></p>
<p><span>- p </span><span>在目录后面加一个&#8220;</span><span>/</span><span>&#8221;。</span></p>
<p><span>- q </span><span>将文件名中的不可显示字符用&#8220;</span><span>?</span><span>&#8221;代替。</span><span> </span></p>
<p><span>- r </span><span>按字母逆序或最早优先的顺序显示输出峁?/SPAN&gt;<span> </span></p>
<p><span>- R </span><span>递归式地显示指定目录的各个子目录中的文件。</span><span> </span></p>
<p><span>- s </span><span>给出每个目录项所用的块数，包括间接块。</span><span> </span></p>
<p><span>- t </span><span>显示时按修改时间（最近优先）而不是按名字排序。若文件修改时间相同，则</span> <span>按字典顺序。修改时间取决于是否使用了</span><span>c</span><span>或</span><span>u</span><span>选顶。缺省的时间标记是最后一次修</span> <span>改时间。</span></p>
<p><span>- u </span><span>显示时按文件上次存取的时间（最近优先）而不是按名字排序。即将</span><span>-t</span><span>的时间</span> <span>标记修改为最后一次访问的时间。</span></p>
<p><span>- x </span><span>按行显示出各排序项的信息。</span></p>
<p><span>用</span><span>ls - l</span><span>命令显示的信息中，开头是由</span><span>10</span><span>个字符构成的字符串，其中第一个字符表示文件类型，它可以是下述类型之一：</span></p>
<p><span>- </span><span>普通文件</span></p>
<p><span>d </span><span>目录</span><span> </span></p>
<p><span>l </span><span>符号链接</span></p>
<p><span>b </span><span>块设备文件</span></p>
<p><span>c </span><span>字符设备文件</span></p>
<p><span>后面的</span><span>9</span><span>个字符表示文件的访问权限，分为</span><span>3</span><span>组，每组</span><span>3</span><span>位。</span></p>
<p><span>第一组表示文件属主的权限，第二组表示同组用户的权限，第三组表示其他用户的权限。每一组的三个字</span> <span>符分别表示对文件的读、写和执行权限。</span><span> </span></p>
<p><span>各权限如下所示：</span></p>
<p><span>r </span><span>读</span><span> </span></p>
<p><span>w </span><span>写</span><span> </span></p>
<p><span>x </span><span>执行。对于目录，表示进入权限。</span></p>
<p><span>s </span><span>当文件被执行时，把该文件的</span><span>UID</span><span>或</span><span>GID</span><span>赋予执行进程的</span><span>UID</span><span>（用户</span><span>ID</span><span>）或</span><span>GID</span><span>（组</span><span> ID</span><span>）。</span></p>
<p><span>t </span><span>设置标志位（留在内存，不被换出）。如果该文件是目录，在该目录中的文件只能被超级用户、目录拥有者或文件属主删除。如果它是可执行文件，在该文件执行</span> <span>后，指向其正文段的指针仍留在内存。这样再次执行它时，系统就能更快地装入该文件。</span><span> </span></p>
<h4><span>Linux</span><span>文本处理命令</span><span>? </span></h4>
<p><span><strong>sort</strong></span><strong><span>命令</span><span> </span></strong></p>
<p><span>sort</span><span>命令的功能是对文件中的各行进行排序。</span><span>sort</span><span>命令有许多非常实用的选项，这些选项最初是用来对数据库格式的文件内容进行各种排序操作的。实际上，</span><span>sort</span><span>命令可以被认为是一个非常强大的数据管理工具，用来管理内容类似数据库记录的文件。</span></p>
<p><span>Sort</span><span>命令将逐行对文件中的内容进行排序，如果两行的首字符相同，该命令将继续比较这两行的下一字符，如果还相同，将继续进行比较。</span></p>
<p><span>语法：</span><span> </span></p>
<p><span>sort [</span><span>选项</span><span>] </span><span>文件</span></p>
<p><span>说明：</span><span>sort</span><span>命令对指定文件中所有的行进行排序，并将结果显示在标准输出上。如不指定输入文件或使用&#8220;</span><span>- </span><span>&#8221;，则表示排序内容来自标准输入。</span></p>
<p><span>sort</span><span>排序是根据从输入行抽取的一个或多个关键字进行比较来完成的。排序关键字定义了用来排序的最小的字符序列。缺省情况下以整行为关键字按</span><span>ASCII</span><span>字符顺序进行排序。</span></p>
<p><span>改变缺省设置的选项主要有：</span></p>
<p><span>- m </span><span>若给定文件已排好序，合并文件。</span></p>
<p><span>- c </span><span>检查给定文件是否已排好序，如果它们没有都排好序，则打印一个出错信息，并以状态值</span><span>1</span><span>退出。</span></p>
<p><span>- u </span><span>对排序后认为相同的行只留其中一行。</span><span> </span></p>
<p><span>- o </span><span>输出文件</span> <span>将排序输出写到输出文件中而不是标准输出，如果输出文件是输入文件之一，</span><span>sort</span><span>先将该文件的内容写入一个临时文件，然后再排序和写输出结果。</span></p>
<p><span>改变缺省排序规则的选项主要有：</span></p>
<p><span>- d </span><span>按字典顺序排序，比较时仅字母、数字、空格和制表符有意义。</span></p>
<p><span>- f </span><span>将小写字母与大写字母同等对待。</span></p>
<p><span>- I </span><span>忽略非打印字符。</span><span> </span></p>
<p><span>- M </span><span>作为月份比较：&#8220;</span><span>JAN</span><span>&#8221;</span><span>&lt;</span><span>&#8220;</span><span>FEB</span><span>&#8221;</span><span> </span></p>
<p><span>- r </span><span>按逆序输出排序结果。</span><span> </span></p>
<p><span>＋</span><span>posl - pos2 </span><span>指定一个或几个字段作为排序关键字，字段位置从</span><span>posl</span><span>开始，到</span><span>pos2</span><span>为止（包括</span><span>posl</span><span>，不包括</span><span>pos2</span><span>）。如不指定</span><span>pos2</span><span>，则关键字为从</span><span>posl</span><span>到行尾。字段和字符的位置从</span><span>0</span><span>开始。</span></p>
<p><span>- b </span><span>在每行中寻找排序关键字时忽略前导的空白（空格和制表符）。</span></p>
<p><span>- t separator </span><span>指定字符</span><span>separator</span><span>作为字段分隔符。</span></p>
<p>?</p>
<p><span><strong>uniq</strong></span><strong><span>命令</span></strong></p>
<p><span>文件经过处理后在它的输出文件中可能会出现重复的行。例如，使用</span><span>cat</span><span>命令将两个文件合并后，再使用</span><span>sort</span><span>命令进行排序，就可能出现重复行。这时可以使用</span><span>uniq</span><span>命令将这些重复行从输出文件中删除，只留下每条记录的唯一样本。</span></p>
<p><span>语法：</span></p>
<p><span>uniq [</span><span>选项</span><span>] </span><span>文件</span><span> </span></p>
<p><span>说明：这个命令读取输入文件，并比较相邻的行。在正常情况下，第二个及以后更多个重复行将被删去，行比较是根据所用字符集的排序序列进行的。该命令加工后的结果写到输出文件中。输入文件和输出文件必须不同。如果输入文件用&#8220;</span><span>- </span><span>&#8221;表示，则从标准输入读取。</span></p>
<p><span>该命令各选项含义如下：</span></p>
<p><span>- c </span><span>显示输出中，在每行行首加上本行在文件中出现的次数。它可取代</span><span>- u</span><span>和</span><span>- d</span><span>选项。</span></p>
<p><span>- d </span><span>只显示重复行。</span></p>
<p><span>- u </span><span>只显示文件中不重复的各行。</span></p>
<p><span>- n </span><span>前</span><span>n</span><span>个字段与每个字段前的空白一起被忽略。一个字段是一个非空格、非制表符的字符串，彼此由制表符和空格隔开（字段从</span><span>0</span><span>开始编号）。</span></p>
<p><span>+n </span><span>前</span><span>n</span><span>个字符被忽略，之前的字符被跳过（字符从</span><span>0</span><span>开始编号）。</span></p>
<p><span>- f n </span><span>与</span><span>- n</span><span>相同，这里</span><span>n</span><span>是字段数。</span></p>
<p><span>- s n </span><span>与＋</span><span>n</span><span>相同，这里</span><span>n</span><span>是字符数。</span></p>
<h4><span><strong>Linux</strong></span><strong><span>备份与压缩命令</span><span>? </span></strong></h4>
<p><span>?? </span></p>
<p><span><strong>tar</strong></span><strong><span>命令</span></strong></p>
<p><span>tar</span><span>可以为文件和目录创建档案。利用</span><span>tar</span><span>，用户可以为某一特定文件创建档案（备份文件），也可以在档案中改变文件，或者向档案中加入新的文件。</span><span>tar</span><span>最初被用来在磁带上创建档案，现在，用户可以在任何设备上创建档案，如软盘。利用</span><span>tar</span><span>命令，可以把一大堆的文件和目录全部打包成一个文件，这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。</span><span>Linux</span><span>上的</span><span>tar</span><span>是</span><span>GNU</span><span>版本的。</span></p>
<p><span>语法：</span><span>tar [</span><span>主选项</span><span>+</span><span>辅选项</span><span>] </span><span>文件或者目录</span></p>
<p><span>使用该命令时，主选项是必须要有的，它告诉</span><span>tar</span><span>要做什么事情，辅选项是辅助使用的，可以选用。</span></p>
<p><span>主选项：</span></p>
<p><span>c </span><span>创建新的档案文件。如果用户想备份一个目录或是一些文件，就要选择这个选项。</span></p>
<p><span>r </span><span>把要存档的文件追加到档案文件的未尾。例如用户已经作好备份文件，又发现还有一个目录或是一些文件忘记备份了，这时可以使用该选项，将忘记的目录或文件追加到备份文件中。</span></p>
<p><span>t </span><span>列出档案文件的内容，查看已经备份了哪些文件。</span></p>
<p><span>u </span><span>更新文件。就是说，用新增的文件取代原备份文件，如果在备份文件中找不到要更新的文件，则把它追加到备份文件的最后。</span></p>
<p><span>x </span><span>从档案文件中释放文件。</span></p>
<p><span>辅助选项：</span></p>
<p><span>b </span><span>该选项是为磁带机设定的。其后跟一数字，用来说明区块的大小，系统预设值为</span><span>20</span><span>（</span><span>20*512 bytes</span><span>）。</span></p>
<p><span>f </span><span>使用档案文件或设备，这个选项通常是必选的。</span></p>
<p><span>k </span><span>保存已经存在的文件。例如我们把某个文件还原，在还原的过程中，遇到相同的文件，不会进行覆盖。</span></p>
<p><span>m </span><span>在还原文件时，把所有文件的修改时间设定为现在。</span></p>
<p><span>M </span><span>创建多卷的档案文件，以便在几个磁盘中存放。</span></p>
<p><span>v </span><span>详细报告</span><span>tar</span><span>处理的文件信息。如无此选项，</span><span>tar</span><span>不报告文件信息。</span></p>
<p><span>w </span><span>每一步都要求确认。</span></p>
<p><span>z </span><span>用</span><span>gzip</span><span>来压缩</span><span>/</span><span>解压缩文件，加上该选项后可以将档案文件进行压缩，但还原时也一定要使用该选项进行解压缩。</span><span> </span></p>
<p>?</p>
<p><span><strong>gzip</strong></span><strong><span>命令</span></strong></p>
<p><span>减少文件大小有两个明显的好处，一是可以减少存储空间，二是通过网络传输文件时，可以减少传输的时间。</span><span>gzip</span><span>是在</span><span>Linux</span><span>系统中经常使用的一个对文件进行压缩和解压缩的命令，既方便又好用。</span></p>
<p><span>语法：</span><span>gzip [</span><span>选项</span><span>] </span><span>压缩（解压缩）的文件名</span></p>
<p><span>各选项的含义：</span></p>
<p><span>-c </span><span>将输出写到标准输出上，并保留原有文件。</span></p>
<p><span>-d </span><span>将压缩文件解压。</span></p>
<p><span>-l </span><span>对每个压缩文件，显示下列字段：</span></p>
<p><span>压缩文件的大小</span></p>
<p><span>未压缩文件的大小</span></p>
<p><span>压缩比</span></p>
<p><span>未压缩文件的名字</span></p>
<p><span>-r </span><span>递归式地查找指定目录并压缩其中的所有文件或者是解压缩。</span></p>
<p><span>-t </span><span>测试，检查压缩文件是否完整。</span></p>
<p><span>-v </span><span>对每一个压缩和解压的文件，显示文件名和压缩比。</span></p>
<p><span>-num </span><span>用指定的数字</span><span>num</span><span>调整压缩的速度，</span><span>-1</span><span>或</span><span>--fast</span><span>表示最快压缩方法（低压缩比），</span><span>-9</span><span>或</span><span>--best</span><span>表示最慢压缩方法（高压缩比）。系统缺省值为</span><span>6</span><span>。</span></p>
<p>?</p>
<p><span><strong>unzip</strong></span><strong><span>命令</span></strong></p>
<p><span>用</span><span>MS Windows</span><span>下的压缩软件</span><span>winzip</span><span>压缩的文件如何在</span><span>Linux</span><span>系统下展开呢？可以用</span><span>unzip</span><span>命令，该命令用于解扩展名为</span><span>.zip</span><span>的压缩文件。</span></p>
<p><span>语法：</span><span>unzip [</span><span>选项</span><span>] </span><span>压缩文件名</span><span>.zip</span></p>
<p><span>各选项的含义分别为：</span></p>
<p><span>-x </span><span>文件列表</span> <span>解压缩文件，但不包括指定的</span><span>file</span><span>文件。</span></p>
<p><span>-v </span><span>查看压缩文件目录，但不解压。</span></p>
<p><span>-t </span><span>测试文件有无损坏，但不解压。</span></p>
<p><span>-d </span><span>目录</span> <span>把压缩文件解到指定目录下。</span></p>
<p><span>-z </span><span>只显示压缩文件的注解。</span></p>
<p><span>-n </span><span>不覆盖已经存在的文件。</span></p>
<p><span>-o </span><span>覆盖已存在的文件且不要求用户确认。</span></p>
<p><span>-j </span><span>不重建文档的目录结构，把所有文件解压到同一目录下。</span></p>
<h4><span>在</span><span>Linux</span><span>环境下运行</span><span>DOS</span><span>命令　</span> <span>　</span><span> </span></h4>
<p>?</p>
<p><span>Linux</span><span>系统提供了一组称为</span><span>mtools</span><span>的可移植工具，可以让用户轻松地从标准的</span><span>DOS</span><span>软盘上读、写文件和目录。它们对</span><span>DOS</span><span>和</span><span>Linux</span><span>环境之间交换文件非常有用。它们是不具备共同的文件系统格式的系统之间交换文件的有力手段。对于一个</span><span>MSDOS</span><span>的软盘，只要把软盘放在软驱中，就可以利用</span><span>mtools</span><span>提供的命令来访问软盘上的文件。</span></p>
<p><span>mtools</span><span>的主要命令如下：</span></p>
<p><span>mcd </span><span>目录名</span> <span>改变</span><span>MSDOS</span><span>目录；</span></p>
<p><span>mcopy </span><span>源文件</span> <span>目标文件</span> <span>在</span><span>MSDOS</span><span>和</span><span>Unix</span><span>之间复制文件；</span></p>
<p><span>mdel </span><span>文件名</span> <span>删除</span><span>MSDOS</span><span>文件；</span></p>
<p><span>mdir </span><span>目录名</span> <span>显示</span><span>MSDOS</span><span>目录；</span></p>
<p><span>mformat </span><span>驱动器号</span> <span>在低级格式化的软盘上创建</span><span>MSDOS</span><span>文件系统；</span></p>
<p><span>rnlabel </span><span>驱动器号</span> <span>产生</span><span>MSDOS</span><span>卷标；</span></p>
<p><span>mmd </span><span>目录名</span> <span>建立</span><span>MSDOS</span><span>目录；</span></p>
<p><span>mrd </span><span>目录名</span> <span>删除</span><span>MSDOS</span><span>目录；</span></p>
<p><span>mren </span><span>源文件</span> <span>目标文件</span> <span>重新命名已存在的</span><span>MSDOS</span><span>文件；</span></p>
<p><span>mtype </span><span>文件名</span> <span>显示</span><span>MSDOS</span><span>文件的内容。</span></p>
<p><span>提示：这些命令和对应的</span><span>MSDOS</span><span>命令非常相似。</span></p>
<p><span>　　</span><span>Linux</span><span>系统中的每个文件和目录都有访问许可权限，用它来确定谁可以通过何种方式对文件和目录进行访问和操作。</span><span> </span></p>
<p><span>　　文件或目录的访问权限分为只读，只写和可执行三种。以文件为例，只读权限表示只允许读其内容，而禁止对其做任何的更改操作。可执行权限表示允许将该文件作为一个程序执行。文件被创建时，文件所有者自动拥有对该文件的读、写和可执行权限，以便于对文件的阅读和修改。用户也可根据需要把访问权限设置为需要的任何组合。</span></p>
<p><span>　　有三种不同类型的用户可对文件或目录进行访问：文件所有者，同组用户、其他用户。所有者一般是文件的创建者。所有者可以允许同组用户有权访问文件，还可以将文件的访问权限赋予系统中的其他用户。在这种情况下，系统中每一位用户都能访问该用户拥有的文件或目录。</span></p>
<p><span>　　每一文件或目录的访问权限都有三组，每组用三位表示，分别为文件属主的读、写和执行权限；与属主同组的用户的读、写和执行权限；系统中其他用户的读、写和执行权限。当用</span><span>ls -l</span><span>命令显示文件或目录的详细信息时，最左边的一列为文件的访问权限。例如：</span></p>
<p><span>　　</span><span>$ ls -l sobsrc. tgz</span></p>
<p><span>　　</span><span>-rw-r--r-- 1 root root 483997 Ju1 l5 17:3l sobsrc. tgz</span></p>
<p><span>　　横线代表空许可。</span><span>r</span><span>代表只读，</span><span>w</span><span>代表写，</span><span>x</span><span>代表可执行。注意这里共有</span><span>10</span><span>个位置。第一个字符指定了文件类型。在通常意义上，一个目录也是一个文件。如果第一个字符是横线，表示是一个非目录的文件。如果是</span><span>d</span><span>，表示是一个目录。</span></p>
<p><span>　　例如：</span></p>
<p><span>　　</span><span>- rw- r-- r-- </span></p>
<p><span>　　普通文件</span> <span>文件主</span> <span>组用户</span> <span>其他用户</span><span> </span></p>
<p><span>　　是文件</span><span>sobsrc.tgz </span><span>的访问权限，表示</span><span>sobsrc.tgz</span><span>是一个普通文件；</span><span>sobsrc.tgz</span><span>的属主有读写权限；与</span><span>sobsrc.tgz</span><span>属主同组的用户只有读权限；其他用户也只有读权限。</span></p>
<p><span>　　确定了一个文件的访问权限后，用户可以利用</span><span>Linux</span><span>系统提供的</span><span>chmod</span><span>命令来重新设定不同的访问权限。也可以利用</span><span>chown</span><span>命令来更改某个文件或目录的所有者。利用</span><span>chgrp</span><span>命令来更改某个文件或目录的用户组。</span></p>
<p><span>　　下面分别对这些命令加以介绍。</span></p>
<p><span>　　</span><span>chmod </span><span>命令</span></p>
<p><span>　　</span><span>chmod</span><span>命令是非常重要的，用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。</span></p>
<p><span>　　该命令有两种用法。一种是包含字母和操作符表达式的文字设定法；另一种是包含数字的数字设定法。</span></p>
<p><span>　　</span><span>1. </span><span>文字设定法</span></p>
<p><span>　　</span><span>chmod [who] [+ | - | =] [mode] </span><span>文件名</span><span>? </span></p>
<p><span>　　命令中各选项的含义为：</span></p>
<p><span>　　操作对象</span><span>who</span><span>可是下述字母中的任一个或者它们的组合：</span></p>
<p><span>　　</span><span>u </span><span>表示&#8220;用户（</span><span>user</span><span>）&#8221;，即文件或目录的所有者。</span></p>
<p><span>　　</span><span>g </span><span>表示&#8220;同组（</span><span>group</span><span>）用户&#8221;，即与文件属主有相同组</span><span>ID</span><span>的所有用户。</span></p>
<p><span>　　</span><span>o </span><span>表示&#8220;其他（</span><span>others</span><span>）用户&#8221;。</span></p>
<p><span>　　</span><span>a </span><span>表示&#8220;所有（</span><span>all</span><span>）用户&#8221;。它是系统默认值。</span></p>
<p><span>　　操作符号可以是：</span></p>
<p><span>　　</span><span>+ </span><span>添加某个权限。</span></p>
<p><span>　　</span><span>- </span><span>取消某个权限。</span></p>
<p><span>　　</span><span>= </span><span>赋予给定权限并取消其他所有权限（如果有的话）。</span></p>
<p><span>　　设置</span><span>mode</span><span>所表示的权限可用下述字母的任意组合：</span></p>
<p><span>　　</span><span>r </span><span>可读。</span></p>
<p><span>　　</span><span>w </span><span>可写。</span></p>
<p><span>　　</span><span>x </span><span>可执行。</span></p>
<p><span>　　</span><span>X </span><span>只有目标文件对某些用户是可执行的或该目标文件是目录时才追加</span><span>x </span><span>属性。</span></p>
<p><span>　　</span><span>s </span><span>在文件执行时把进程的属主或组</span><span>ID</span><span>置为该文件的文件属主。方式&#8220;</span><span>u</span><span>＋</span><span>s</span><span>&#8221;设置文件的用户</span><span>ID</span><span>位，&#8220;</span><span>g</span><span>＋</span><span>s</span><span>&#8221;设置组</span><span>ID</span><span>位。</span></p>
<p><span>　　</span><span>t </span><span>保存程序的文本到交换设备上。</span></p>
<p><span>　</span><span>u </span><span>与文件属主拥有一样的权限。</span></p>
<p><span>　　</span><span>g </span><span>与和文件属主同组的用户拥有一样的权限。</span></p>
<p><span>　　</span><span>o </span><span>与其他用户拥有一样的权限。</span></p>
<p><span>　　文件名：以空格分开的要改变权限的文件列表，支持通配符。</span></p>
<p><span>　　在一个命令行中可给出多个权限方式，其间用逗号隔开。例如：</span><span>chmod g+r</span><span>，</span><span>o+r example</span></p>
<p><span>　　使同组和其他用户对文件</span><span>example </span><span>有读权限。</span></p>
<p><span>　　</span><span>2. </span><span>数字设定法</span></p>
<p><span>　　我们必须首先了解用数字表示的属性的含义：</span><span>0</span><span>表示没有权限，</span><span>1</span><span>表示可执行权限，</span><span>2</span><span>表示可写权限，</span><span>4</span><span>表示可读权限，然后将其相加。所以数字属性的格式应为</span><span>3</span><span>个从</span><span>0</span><span>到</span><span>7</span><span>的八进制数，其顺序是（</span><span>u</span><span>）（</span><span>g</span><span>）（</span><span>o</span><span>）。</span></p>
<p><span>　　例如，如果想让某个文件的属主有&#8220;读</span><span>/</span><span>写&#8221;二种权限，需要把</span><span>4</span><span>（可读）</span><span>+2</span><span>（可写）＝</span><span>6</span><span>（读</span><span>/</span><span>写）。</span></p>
<p><span>　　数字设定法的一般形式为：</span></p>
<p><span>　　</span><span>chmod [mode] </span><span>文件名</span><span>? </span></p>
<p>&#160;</p>
<p><span>　　</span><span><strong>chgrp</strong></span><strong><span>命令</span></strong></p>
<p><span>　功能：改变文件或目录所属的组。</span></p>
<p><span>　　语法：</span><span>chgrp [</span><span>选项</span><span>] group filename? </span></p>
<p><span>　　该命令改变指定指定文件所属的用户组。其中</span><span>group</span><span>可以是用户组</span><span>ID</span><span>，也可以是</span><span>/etc/group</span><span>文件中用户组的组名。文件名是以空格分开的要改变属组的文件列表，支持通配符。如果用户不是该文件的属主或超级用户，则不能改变该文件的组。</span></p>
<p><span>　　该命令的各选项含义为：</span></p>
<p><span>　　</span><span>- R </span><span>递归式地改变指定目录及其下的所有子目录和文件的属组。</span></p>
<p><span>　　</span><span>chown </span><span>命令</span></p>
<p><span>　　功能：更改某个文件或目录的属主和属组。这个命令也很常用。例如</span><span>root</span><span>用户把自己的一个文件拷贝给用户</span><span>xu</span><span>，为了让用户</span><span>xu</span><span>能够存取这个文件，</span><span>root</span><span>用户应该把这个文件的属主设为</span><span>xu</span><span>，否则，用户</span><span>xu</span><span>无法存取这个文件。</span></p>
<p><span>　　语法：</span><span>chown [</span><span>选项</span><span>] </span><span modules.php?name='Your_Account" href_cetemp=" modules.php?name=' Your_Account??>注册</span></span></span></p>
<img src ="http://www.blogjava.net/liaojiyong/aggbug/114368.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2007-04-28 16:11 <a href="http://www.blogjava.net/liaojiyong/archive/2007/04/28/114368.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>UNIX 高手的 10 个习惯(转)</title><link>http://www.blogjava.net/liaojiyong/archive/2007/02/14/99805.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Wed, 14 Feb 2007 05:37:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2007/02/14/99805.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/99805.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2007/02/14/99805.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/99805.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/99805.html</trackback:ping><description><![CDATA[
		<blockquote>采用 10 个能够提高您的 UNIX® 命令行效率的好习惯——并在此过程中摆脱不良的使用模式。本文循序渐进地指导您学习几项用于命令行操作的技术，这些技术非常好，但是通常被忽略。了解常见错误和克服它们的方法，以便您能够确切了解为何值得采用这些 UNIX 习惯。 </blockquote>
		<!--START RESERVED FOR FUTURE USE INCLUDE FILES-->
		<!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters -->
		<!--END RESERVED FOR FUTURE USE INCLUDE FILES-->
		<p>
				<a name="intro">
						<span class="atitle">引言</span>
				</a>
		</p>
		<p>当您经常使用某个系统时，往往会陷入某种固定的使用模式。有时，您没有养成以尽可能最好的方式做事的习惯。有时，您的不良习惯甚至会导致出现混乱。纠正此类缺点的最佳方法之一，就是有意识地采用抵制这些坏习惯的好习惯。本文提出了 10 个值得采用的 UNIX 命令行习惯——帮助您克服许多常见使用怪癖，并在该过程中提高命令行工作效率的好习惯。下面列出了这 10 个好习惯，之后对进行了更详细的描述。</p>
		<p>
				<a name="list">
						<span class="atitle">采用 10 个好习惯</span>
				</a>
		</p>
		<p>要采用的十个好习惯为： </p>
		<ol>
				<li>
						<a href="/liaojiyong/archive/2007/02/14/99805.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#one">
								<font color="#5c81a7">在单个命令中创建目录树</font>
						</a>。 
</li>
				<li>
						<a href="/liaojiyong/archive/2007/02/14/99805.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#two">
								<font color="#5c81a7">更改路径；不要移动存档</font>
						</a>。 
</li>
				<li>
						<a href="/liaojiyong/archive/2007/02/14/99805.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#three">
								<font color="#5c81a7">将命令与控制操作符组合使用</font>
						</a>。 
</li>
				<li>
						<a href="/liaojiyong/archive/2007/02/14/99805.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#four">
								<font color="#5c81a7">谨慎引用变量</font>
						</a>。 
</li>
				<li>
						<a href="/liaojiyong/archive/2007/02/14/99805.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#five">
								<font color="#5c81a7">使用转义序列来管理较长的输入</font>
						</a>。 
</li>
				<li>
						<a href="/liaojiyong/archive/2007/02/14/99805.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#six">
								<font color="#5c81a7">在列表中对命令分组</font>
						</a>。 
</li>
				<li>
						<a href="/liaojiyong/archive/2007/02/14/99805.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#seven">
								<font color="#5c81a7">在 <code>find</code> 之外使用 <code>xargs</code></font>
						</a>。 
</li>
				<li>
						<a href="/liaojiyong/archive/2007/02/14/99805.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#eight">
								<font color="#5c81a7">了解何时 <code>grep</code> 应该执行计数——何时应该绕过</font>
						</a>。 
</li>
				<li>
						<a href="/liaojiyong/archive/2007/02/14/99805.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#nine">
								<font color="#5c81a7">匹配输出中的某些字段，而不只是对行进行匹配</font>
						</a>。 
</li>
				<li>
						<a href="/liaojiyong/archive/2007/02/14/99805.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#ten">
								<font color="#5c81a7">停止对 <code>cat</code> 使用管道</font>
						</a>。 </li>
		</ol>
		<p>
				<a name="one">
						<span class="atitle">在单个命令中创建目录树</span>
				</a>
		</p>
		<p>清单 1 演示了最常见的 UNIX 坏习惯之一：一次定义一个目录树。</p>
		<br />
		<a name="listing1">
				<b>清单 1. 坏习惯 1 的示例：单独定义每个目录树</b>
		</a>
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">	
~ $ <span class="boldcode"><strong>mkdir tmp</strong></span>
~ $ <span class="boldcode"><strong>cd tmp</strong></span>
~/tmp $ <span class="boldcode"><strong>mkdir a</strong></span>
~/tmp $ <span class="boldcode"><strong>cd a</strong></span>
~/tmp/a $ <span class="boldcode"><strong>mkdir b</strong></span>
~/tmp/a $ <span class="boldcode"><strong>cd b</strong></span>
~/tmp/a/b/ $ <span class="boldcode"><strong>mkdir c</strong></span>
~/tmp/a/b/ $ <span class="boldcode"><strong>cd c</strong></span>
~/tmp/a/b/c $
</pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>使用 <code>mkdir</code> 的 <code>-p</code> 选项并在单个命令中创建所有父目录及其子目录要容易得多。但是即使对于知道此选项的管理员，他们在命令行上创建子目录时也仍然束缚于逐步创建每级子目录。花时间有意识地养成这个好习惯是值得的：</p>
		<br />
		<a name="listing2">
				<b>清单 2. 好习惯 1 的示例：使用一个命令来定义目录树</b>
		</a>
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">~ $ <span class="boldcode"><strong>mkdir -p tmp/a/b/c</strong></span></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>您可以使用此选项来创建整个复杂的目录树（在脚本中使用是非常理想的），而不只是创建简单的层次结构。例如：</p>
		<br />
		<a name="listing3">
				<b>清单 3. 好习惯 1 的另一个示例：使用一个命令来定义复杂的目录树</b>
		</a>
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">~ $ <span class="boldcode"><strong>mkdir -p project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}</strong></span></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>过去，单独定义目录的唯一借口是您的 <code>mkdir</code> 实现不支持此选项，但是在大多数系统上不再是这样了。IBM、AIX®、<code>mkdir</code>、GNU <code>mkdir</code> 和其他遵守单一 UNIX 规范 (Single UNIX Specification) 的系统现在都具有此选项。</p>
		<p>对于仍然缺乏该功能的少数系统，您可以使用 <code>mkdirhier</code> 脚本（请参见<a href="http://www.ibm.com/developerworks/cn/aix/library/au-badunixhabits.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#resources"><font color="#5c81a7">参考资料</font></a>），此脚本是执行相同功能的 <code>mkdir</code> 的包装：</p>
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">~ $ <span class="boldcode"><strong>mkdirhier project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}</strong></span></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>
				<a name="two">
						<span class="atitle">更改路径；不要移动存档</span>
				</a>
		</p>
		<p>另一个不良的使用模式是将 .tar 存档文件移动到某个目录，因为该目录恰好是您希望在其中提取 .tar 文件的目录。其实您根本不需要这样做。您可以随心所欲地将任何 .tar 存档文件解压缩到任何目录——这就是 <code>-C</code> 选项的用途。在解压缩某个存档文件时，使用 <code>-C</code> 选项来指定要在其中解压缩该文件的目录：</p>
		<br />
		<a name="listing4">
				<b>清单 4. 好习惯 2 的示例：使用选项 -C 来解压缩 .tar 存档文件</b>
		</a>
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">~ $ <span class="boldcode"><strong>tar xvf -C tmp/a/b/c newarc.tar.gz</strong></span></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>相对于将存档文件移动到您希望在其中解压缩它的位置，切换到该目录，然后才解压缩它，养成使用 <code>-C</code> 的习惯则更加可取——当存档文件位于其他某个位置时尤其如此。</p>
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td>
										<img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" />
										<br />
										<img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="no-print" cellspacing="0" cellpadding="0" align="right">
				<tbody>
						<tr align="right">
								<td>
										<img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" />
										<br />
										<table cellspacing="0" cellpadding="0" border="0">
												<tbody>
														<tr>
																<td valign="center">
																		<img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" />
																		<br />
																</td>
																<td valign="top" align="right">
																		<a class="fbox" href="http://www.ibm.com/developerworks/cn/aix/library/au-badunixhabits.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#main">
																				<b>
																						<font color="#5c81a7">回页首</font>
																				</b>
																		</a>
																</td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<br />
		<p>
				<a name="three">
						<span class="atitle">将命令与控制操作符组合使用</span>
				</a>
		</p>
		<p>您可能已经知道，在大多数 Shell 中，您可以在单个命令行上通过在命令之间放置一个分号 (;) 来组合命令。该分号是 Shell <i>控制操作符</i>，虽然它对于在单个命令行上将离散的命令串联起来很有用，但它并不适用于所有情况。例如，假设您使用分号来组合两个命令，其中第二个命令的正确执行完全依赖于第一个命令的成功完成。如果第一个命令未按您预期的那样退出，第二个命令仍然会运行——结果会导致失败。相反，应该使用更适当的控制操作符（本文将描述其中的部分操作符）。只要您的 Shell 支持它们，就值得养成使用它们的习惯。</p>
		<p>
				<a name="threea">
						<span class="smalltitle">
								<strong>
										<font face="Arial">仅当另一个命令返回零退出状态时才运行某个命令</font>
								</strong>
						</span>
				</a>
		</p>
		<p>使用 <code>&amp;&amp;</code> 控制操作符来组合两个命令，以便<i>仅当</i> 第一个命令返回零退出状态时才运行第二个命令。换句话说，如果第一个命令运行成功，则第二个命令将运行。如果第一个命令失败，则第二个命令根本就不运行。例如：</p>
		<br />
		<a name="listing5">
				<b>清单 5. 好习惯 3 的示例：将命令与控制操作符组合使用</b>
		</a>
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">~ $ <span class="boldcode"><strong>cd tmp/a/b/c &amp;&amp; tar xvf ~/archive.tar</strong></span></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>在此例中，存档的内容将提取到 ~/tmp/a/b/c 目录中，除非该目录不存在。如果该目录不存在，则 <code>tar</code> 命令不会运行，因此不会提取任何内容。</p>
		<p>
				<a name="threeb">
						<span class="smalltitle">
								<strong>
										<font face="Arial">仅当另一个命令返回非零退出状态时才运行某个命令</font>
								</strong>
						</span>
				</a>
		</p>
		<p>类似地，<code>||</code> 控制操作符分隔两个命令，并且仅当第一个命令返回非零退出状态时才运行第二个命令。换句话说，如果第一个命令<i>成功</i>，则第二个命令不会运行。如果第一个命令失败，则第二个命令<i>才会</i> 运行。在测试某个给定目录是否存在时，通常使用此操作符，如果该目录不存在，则创建它：</p>
		<br />
		<a name="listing6">
				<b>清单 6. 好习惯 3 的另一个示例：将命令与控制操作符组合使用</b>
		</a>
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">~ $ <span class="boldcode"><strong>cd tmp/a/b/c || mkdir -p tmp/a/b/c</strong></span></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>您还可以组合使用本部分中描述的控制操作符。每个操作符都影响最后的命令运行：</p>
		<br />
		<a name="listing7">
				<b>清单 7. 好习惯 3 的组合示例：将命令与控制操作符组合使用</b>
		</a>
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">~ $ <span class="boldcode"><strong>cd tmp/a/b/c || mkdir -p tmp/a/b/c &amp;&amp; tar xvf -C tmp/a/b/c ~/archive.tar</strong></span></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td>
										<img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" />
										<br />
										<img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="no-print" cellspacing="0" cellpadding="0" align="right">
				<tbody>
						<tr align="right">
								<td>
										<img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" />
										<br />
										<table cellspacing="0" cellpadding="0" border="0">
												<tbody>
														<tr>
																<td valign="center">
																		<img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" />
																		<br />
																</td>
																<td valign="top" align="right">
																		<a class="fbox" href="http://www.ibm.com/developerworks/cn/aix/library/au-badunixhabits.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#main">
																				<b>
																						<font color="#5c81a7">回页首</font>
																				</b>
																		</a>
																</td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<br />
		<p>
				<a name="four">
						<span class="atitle">谨慎引用变量</span>
				</a>
		</p>
		<p>始终要谨慎使用 Shell 扩展和变量名称。一般最好将变量调用包括在双引号中，除非您有不这样做的足够理由。类似地，如果您直接在字母数字文本后面使用变量名称，则还要确保将该变量名称包括在方括号 ([]) 中，以使其与周围的文本区分开来。否则，Shell 将把尾随文本解释为变量名称的一部分——并且很可能返回一个空值。清单 8 提供了变量的各种引用和非引用及其影响的示例。</p>
		<br />
		<a name="listing8">
				<b>清单 8. 好习惯 4 的示例：引用（和非引用）变量</b>
		</a>
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">~ $ <span class="boldcode"><strong>ls tmp/</strong></span>
a b
~ $ <span class="boldcode"><strong>VAR="tmp/*"</strong></span>
~ $ <span class="boldcode"><strong>echo $VAR</strong></span>
tmp/a tmp/b
~ $ <span class="boldcode"><strong>echo "$VAR"</strong></span>
tmp/*
~ $ <span class="boldcode"><strong>echo $VARa</strong></span>

~ $ <span class="boldcode"><strong>echo "$VARa"</strong></span>

~ $ <span class="boldcode"><strong>echo "${VAR}a"</strong></span>
tmp/*a
~ $ <span class="boldcode"><strong>echo ${VAR}a</strong></span>
tmp/a
~ $
</pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td>
										<img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" />
										<br />
										<img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="no-print" cellspacing="0" cellpadding="0" align="right">
				<tbody>
						<tr align="right">
								<td>
										<img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" />
										<br />
										<table cellspacing="0" cellpadding="0" border="0">
												<tbody>
														<tr>
																<td valign="center">
																		<img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" />
																		<br />
																</td>
																<td valign="top" align="right">
																		<a class="fbox" href="http://www.ibm.com/developerworks/cn/aix/library/au-badunixhabits.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#main">
																				<b>
																						<font color="#5c81a7">回页首</font>
																				</b>
																		</a>
																</td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<br />
		<p>
				<a name="five">
						<span class="atitle">使用转义序列来管理较长的输入</span>
				</a>
		</p>
		<p>您或许看到过使用反斜杠 (\) 来将较长的行延续到下一行的代码示例，并且您知道大多数 Shell 都将您通过反斜杠联接的后续行上键入的内容视为单个长行。然而，您可能没有在命令行中像通常那样利用此功能。如果您的终端无法正确处理多行回绕，或者您的命令行比通常小（例如在提示符下有长路经的时候），反斜杠就特别有用。反斜杠对于了解键入的长输入行的含义也非常有用，如以下示例所示：</p>
		<br />
		<a name="listing9">
				<b>清单 9. 好习惯 5 的示例：将反斜杠用于长输入</b>
		</a>
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">~ $ <span class="boldcode"><strong>cd tmp/a/b/c || \</strong></span>
&gt; <span class="boldcode"><strong>mkdir -p tmp/a/b/c &amp;&amp; \</strong></span>
&gt; <span class="boldcode"><strong>tar xvf -C tmp/a/b/c ~/archive.tar</strong></span></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>或者，也可以使用以下配置：</p>
		<br />
		<a name="listing10">
				<b>清单 10. 好习惯 5 的替代示例：将反斜杠用于长输入</b>
		</a>
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">~ $ <span class="boldcode"><strong>cd tmp/a/b/c \</strong></span>
&gt; <span class="boldcode"><strong>                || \</strong></span>
&gt; <span class="boldcode"><strong>mkdir -p tmp/a/b/c \</strong></span>
&gt; <span class="boldcode"><strong>                   &amp;&amp; \</strong></span>
&gt; <span class="boldcode"><strong>tar xvf -C tmp/a/b/c ~/archive.tar</strong></span></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>然而，当您将输入行划分到多行上时，Shell 始终将其视为单个连续的行，因为它总是删除所有反斜杠和额外的空格。</p>
		<p>
				<b>注意：</b>在大多数 Shell 中，当您按向上箭头键时，整个多行输入将重绘到单个长输入行上。</p>
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td>
										<img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" />
										<br />
										<img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="no-print" cellspacing="0" cellpadding="0" align="right">
				<tbody>
						<tr align="right">
								<td>
										<img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" />
										<br />
										<table cellspacing="0" cellpadding="0" border="0">
												<tbody>
														<tr>
																<td valign="center">
																		<img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" />
																		<br />
																</td>
																<td valign="top" align="right">
																		<a class="fbox" href="http://www.ibm.com/developerworks/cn/aix/library/au-badunixhabits.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#main">
																				<b>
																						<font color="#5c81a7">回页首</font>
																				</b>
																		</a>
																</td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<br />
		<p>
				<a name="six">
						<span class="atitle">在列表中对命令分组</span>
				</a>
		</p>
		<p>大多数 Shell 都具有在列表中对命令分组的方法，以便您能将它们的合计输出向下传递到某个管道，或者将其任何部分或全部流重定向到相同的地方。您一般可以通过在某个 Subshell 中运行一个命令列表或通过在当前 Shell 中运行一个命令列表来实现此目的。</p>
		<p>
				<a name="N10222">
						<span class="smalltitle">
								<strong>
										<font face="Arial">在 Subshell 中运行命令列表</font>
								</strong>
						</span>
				</a>
		</p>
		<p>使用括号将命令列表包括在单个组中。这样做将在一个新的 Subshell 中运行命令，并允许您重定向或收集整组命令的输出，如以下示例所示：</p>
		<br />
		<a name="listing11">
				<b>清单 11. 好习惯 6 的示例：在 Subshell 中运行命令列表</b>
		</a>
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">~ $ <span class="boldcode"><strong>( cd tmp/a/b/c/ || mkdir -p tmp/a/b/c &amp;&amp; \</strong></span>
&gt; <span class="boldcode"><strong>VAR=$PWD; cd ~; tar xvf -C $VAR archive.tar ) \</strong></span>
&gt; <span class="boldcode"><strong>| mailx admin -S "Archive contents"</strong></span></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>在此示例中，该存档的内容将提取到 tmp/a/b/c/ 目录中，同时将分组命令的输出（包括所提取文件的列表）通过邮件发送到地址 <code>admin</code>。</p>
		<p>当您在命令列表中重新定义环境变量，并且您不希望将那些定义应用于当前 Shell 时，使用 Subshell 更可取。</p>
		<p>
				<a name="N10247">
						<span class="smalltitle">
								<strong>
										<font face="Arial">在当前 Shell 中运行命令列表</font>
								</strong>
						</span>
				</a>
		</p>
		<p>将命令列表用大括号 ({}) 括起来，以在<i>当前</i> Shell 中运行。确保在括号与实际命令之间包括空格，否则 Shell 可能无法正确解释括号。此外，还要确保列表中的最后一个命令以分号结尾，如以下示例所示：</p>
		<br />
		<a name="listing12">
				<b>清单 12. 好习惯 6 的另一个示例：在当前 Shell 中运行命令列表</b>
		</a>
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">~ $ <span class="boldcode"><strong>{ cp ${VAR}a . &amp;&amp; chown -R guest.guest a &amp;&amp; \</strong></span>
&gt; <span class="boldcode"><strong>tar cvf newarchive.tar a; } | mailx admin -S "New archive"</strong></span></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td>
										<img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" />
										<br />
										<img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="no-print" cellspacing="0" cellpadding="0" align="right">
				<tbody>
						<tr align="right">
								<td>
										<img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" />
										<br />
										<table cellspacing="0" cellpadding="0" border="0">
												<tbody>
														<tr>
																<td valign="center">
																		<img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" />
																		<br />
																</td>
																<td valign="top" align="right">
																		<a class="fbox" href="http://www.ibm.com/developerworks/cn/aix/library/au-badunixhabits.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#main">
																				<b>
																						<font color="#5c81a7">回页首</font>
																				</b>
																		</a>
																</td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<br />
		<p>
				<a name="seven">
						<span class="atitle">在 find 之外使用 xargs</span>
				</a>
		</p>
		<p>使用 <code>xargs</code> 工具作为筛选器，以充分利用从 <code>find</code> 命令挑选的输出。<code>find</code> 运行通常提供与某些条件匹配的文件列表。此列表被传递到 <code>xargs</code> 上，后者然后使用该文件列表作为参数来运行其他某些有用的命令，如以下示例所示：</p>
		<br />
		<a name="listing13">
				<b>清单 13. xargs 工具的经典用法示例</b>
		</a>
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">~ $ <span class="boldcode"><strong>find <i>some-file-criteria some-file-path</i> | \</strong></span>
&gt; <span class="boldcode"><strong>xargs <i>some-great-command-that-needs-filename-arguments</i></strong></span></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>然而，不要将 <code>xargs</code> 仅看作是 <code>find</code> 的辅助工具；它是一个未得到充分利用的工具之一，当您养成使用它的习惯时，将会希望进行所有试验，包括以下用法。</p>
		<p>
				<a name="N1029F">
						<span class="smalltitle">
								<strong>
										<font face="Arial">传递空格分隔的列表</font>
								</strong>
						</span>
				</a>
		</p>
		<p>在最简单的调用形式中，<code>xargs</code> 就像一个筛选器，它接受一个列表（每个成员分别在单独的行上）作为输入。该工具将那些成员放置在单个空格分隔的行上：</p>
		<br />
		<a name="listing14">
				<b>清单 14. xargs 工具产生的输出示例</b>
		</a>
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">~ $ <span class="boldcode"><strong>xargs</strong></span><span class="boldcode"><strong>a</strong></span><span class="boldcode"><strong>b</strong></span><span class="boldcode"><strong>c</strong></span><span class="boldcode"><i><strong>Control-D</strong></i></span>
a b c
~ $
</pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>您可以发送通过 <code>xargs</code> 来输出文件名的任何工具的输出，以便为其他某些接受文件名作为参数的工具获得参数列表，如以下示例所示：</p>
		<br />
		<a name="listing15">
				<b>清单 15. xargs 工具的使用示例</b>
		</a>
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">~/tmp $ <span class="boldcode"><strong>ls -1 | xargs</strong></span>
December_Report.pdf README a archive.tar mkdirhier.sh
~/tmp $ <span class="boldcode"><strong>ls -1 | xargs file</strong></span>
December_Report.pdf: PDF document, version 1.3
README: ASCII text
a: directory
archive.tar: POSIX tar archive
mkdirhier.sh: Bourne shell script text executable
~/tmp $
</pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>
				<code>xargs</code> 命令不只用于传递文件名。您还可以在需要将文本筛选到单个行中的任何时候使用它：</p>
		<br />
		<a name="listing16">
				<b>清单 16. 好习惯 7 的示例：使用 xargs 工具来将文本筛选到单个行中</b>
		</a>
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">~/tmp $ <span class="boldcode"><strong>ls -l | xargs</strong></span>
-rw-r--r-- 7 joe joe 12043 Jan 27 20:36 December_Report.pdf -rw-r--r-- 1 \
root root 238 Dec 03 08:19 README drwxr-xr-x 38 joe joe 354082 Nov 02 \
16:07 a -rw-r--r-- 3 joe joe 5096 Dec 14 14:26 archive.tar -rwxr-xr-x 1 \
joe joe 3239 Sep 30 12:40 mkdirhier.sh
~/tmp $
</pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>
				<a name="N102F9">
						<span class="smalltitle">
								<strong>
										<font face="Arial">谨慎使用 xargs</font>
								</strong>
						</span>
				</a>
		</p>
		<p>从技术上讲，使用 <code>xargs</code> 很少遇到麻烦。缺省情况下，文件结束字符串是下划线 (_)；如果将该字符作为单个输入参数来发送，则它之后的所有内容将被忽略。为了防止这种情况发生，可以使用 <code>-e</code> 标志，它在不带参数的情况下完全禁用结束字符串。</p>
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td>
										<img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" />
										<br />
										<img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="no-print" cellspacing="0" cellpadding="0" align="right">
				<tbody>
						<tr align="right">
								<td>
										<img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" />
										<br />
										<table cellspacing="0" cellpadding="0" border="0">
												<tbody>
														<tr>
																<td valign="center">
																		<img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" />
																		<br />
																</td>
																<td valign="top" align="right">
																		<a class="fbox" href="http://www.ibm.com/developerworks/cn/aix/library/au-badunixhabits.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#main">
																				<b>
																						<font color="#5c81a7">回页首</font>
																				</b>
																		</a>
																</td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<br />
		<p>
				<a name="eight">
						<span class="atitle">了解何时 grep 应该执行计数——何时应该绕过</span>
				</a>
		</p>
		<p>避免通过管道将 <code>grep</code> 发送到 <code>wc -l</code> 来对输出行数计数。<code>grep</code> 的 <code>-c</code> 选项提供了对与特定模式匹配的行的计数，并且一般要比通过管道发送到 <code>wc</code> 更快，如以下示例所示：</p>
		<br />
		<a name="listing17">
				<b>清单 17. 好习惯 8 的示例：使用和不使用 grep 的行计数</b>
		</a>
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">~ $ <span class="boldcode"><strong>time grep and tmp/a/longfile.txt | wc -l</strong></span>
2811

real    0m0.097s
user    0m0.006s
sys     0m0.032s
~ $ <span class="boldcode"><strong>time grep -c and tmp/a/longfile.txt</strong></span>
2811

real    0m0.013s
user    0m0.006s
sys     0m0.005s
~ $ 
</pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>除了速度因素外，<code>-c</code> 选项还是执行计数的好方法。对于多个文件，带 <code>-c</code> 选项的 <code>grep</code> 返回每个文件的单独计数，每行一个计数，而针对 <code>wc</code> 的管道则提供所有文件的组合总计数。</p>
		<p>然而，不管是否考虑速度，此示例都表明了另一个要避免地常见错误。这些计数方法仅提供<i>包含匹配模式的行数</i>——如果那就是您要查找的结果，这没什么问题。但是在行中具有某个特定模式的多个实例的情况下，这些方法无法为您提供实际匹配<i>实例数量</i> 的真实计数。归根结底，若要对实例计数，您还是要使用 <code>wc</code> 来计数。首先，使用 <code>-o</code> 选项（如果您的版本支持它的话）来运行 <code>grep</code> 命令。此选项<i>仅</i> 输出匹配的模式，每行一个模式，而不输出行本身。但是您不能将它与 <code>-c</code> 选项结合使用，因此要使用 <code>wc -l</code> 来对行计数，如以下示例所示：</p>
		<br />
		<a name="listing18">
				<b>清单 18. 好习惯 8 的示例：使用 grep 对模式实例计数</b>
		</a>
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">~ $ <span class="boldcode"><strong>grep -o and tmp/a/longfile.txt | wc -l</strong></span>
3402
~ $
</pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>在此例中，调用 <code>wc</code> 要比第二次调用 <code>grep</code> 并插入一个虚拟模式（例如 <code>grep -c</code>）来对行进行匹配和计数稍快一点。</p>
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td>
										<img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" />
										<br />
										<img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="no-print" cellspacing="0" cellpadding="0" align="right">
				<tbody>
						<tr align="right">
								<td>
										<img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" />
										<br />
										<table cellspacing="0" cellpadding="0" border="0">
												<tbody>
														<tr>
																<td valign="center">
																		<img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" />
																		<br />
																</td>
																<td valign="top" align="right">
																		<a class="fbox" href="http://www.ibm.com/developerworks/cn/aix/library/au-badunixhabits.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#main">
																				<b>
																						<font color="#5c81a7">回页首</font>
																				</b>
																		</a>
																</td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<br />
		<p>
				<a name="nine">
						<span class="atitle">匹配输出中的某些字段，而不只是对行进行匹配</span>
				</a>
		</p>
		<p>当您只希望匹配输出行中<i>特定字段</i> 中的模式时，诸如 <code>awk</code> 等工具要优于 <code>grep</code>。</p>
		<p>下面经过简化的示例演示了如何仅列出 12 月修改过的文件。</p>
		<br />
		<a name="listing19">
				<b>清单 19. 坏习惯 9 的示例：使用 grep 来查找特定字段中的模式</b>
		</a>
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">~/tmp $ <span class="boldcode"><strong>ls -l /tmp/a/b/c | grep Dec</strong></span>
-rw-r--r--  7 joe joe  12043 Jan 27 20:36 December_Report.pdf
-rw-r--r--  1 root root  238 Dec 03 08:19 README
-rw-r--r--  3 joe joe   5096 Dec 14 14:26 archive.tar
~/tmp $
</pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>在此示例中，<code>grep</code> 对行进行筛选，并输出其修改日期和名称中带 <code>Dec</code> 的所有文件。因此，诸如 December_Report.pdf 等文件是匹配的，即使它自从一月份以来还未修改过。这可能不是您希望的结果。为了匹配特定字段中的模式，最好使用 <code>awk</code>，其中的一个关系运算符对确切的字段进行匹配，如以下示例所示：</p>
		<br />
		<a name="listing20">
				<b>清单 20. 好习惯 9 的示例：使用 awk 来查找特定字段中的模式</b>
		</a>
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">~/tmp $ <span class="boldcode"><strong>ls -l | awk '$6 == "Dec"'</strong></span>
-rw-r--r--  3 joe joe   5096 Dec 14 14:26 archive.tar
-rw-r--r--  1 root root  238 Dec 03 08:19 README
~/tmp $
</pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>有关如何使用 <code>awk</code> 的更多详细信息，请参见<a href="http://www.ibm.com/developerworks/cn/aix/library/au-badunixhabits.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#resources"><font color="#5c81a7">参考资料</font></a>。</p>
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td>
										<img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" />
										<br />
										<img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="no-print" cellspacing="0" cellpadding="0" align="right">
				<tbody>
						<tr align="right">
								<td>
										<img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" />
										<br />
										<table cellspacing="0" cellpadding="0" border="0">
												<tbody>
														<tr>
																<td valign="center">
																		<img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" />
																		<br />
																</td>
																<td valign="top" align="right">
																		<a class="fbox" href="http://www.ibm.com/developerworks/cn/aix/library/au-badunixhabits.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#main">
																				<b>
																						<font color="#5c81a7">回页首</font>
																				</b>
																		</a>
																</td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<br />
		<p>
				<a name="ten">
						<span class="atitle">停止对 cat 使用管道</span>
				</a>
		</p>
		<p>
				<code>grep</code> 的一个常见的基本用法错误是通过管道将 <code>cat</code> 的输出发送到 <code>grep</code> 以搜索单个文件的内容。这绝对是不必要的，纯粹是浪费时间，因为诸如 <code>grep</code> 这样的工具接受文件名作为参数。您根本不需要在这种情况下使用 <code>cat</code>，如以下示例所示：</p>
		<br />
		<a name="listing21">
				<b>清单 21. 好习惯和坏习惯 10 的示例：使用带和不带 cat 的 grep</b>
		</a>
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">	
~ $ <span class="boldcode"><strong>time cat tmp/a/longfile.txt | grep and</strong></span>
2811

real    0m0.015s
user    0m0.003s
sys     0m0.013s
~ $ <span class="boldcode"><strong>time grep and tmp/a/longfile.txt</strong></span>
2811

real    0m0.010s
user    0m0.006s
sys     0m0.004s
~ $ 
</pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>此错误存在于许多工具中。由于大多数工具都接受使用连字符 (-) 的标准输入作为一个参数，因此即使使用 <code>cat</code> 来分散 <code>stdin</code> 中的多个文件，参数也通常是无效的。仅当您使用带多个筛选选项之一的 <code>cat</code> 时，才真正有必要在管道前首先执行连接。</p>
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td>
										<img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" />
										<br />
										<img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" />
								</td>
						</tr>
				</tbody>
		</table>
		<table class="no-print" cellspacing="0" cellpadding="0" align="right">
				<tbody>
						<tr align="right">
								<td>
										<img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" />
										<br />
										<table cellspacing="0" cellpadding="0" border="0">
												<tbody>
														<tr>
																<td valign="center">
																		<img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" />
																		<br />
																</td>
																<td valign="top" align="right">
																		<a class="fbox" href="http://www.ibm.com/developerworks/cn/aix/library/au-badunixhabits.html?S_TACT=105AGX52&amp;S_CMP=techcsdn#main">
																				<b>
																						<font color="#5c81a7">回页首</font>
																				</b>
																		</a>
																</td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<br />
		<p>
				<a name="N10415">
						<span class="atitle">结束语：养成好习惯</span>
				</a>
		</p>
		<p>最好检查一下您的命令行习惯中的任何不良的使用模式。不良的使用模式会降低您的速度，并且通常会导致意外错误。本文介绍了 10 个新习惯，它们可以帮助您摆脱许多最常见的使用错误。养成这些好习惯是加强您的 UNIX 命令行技能的积极步骤。</p>
<img src ="http://www.blogjava.net/liaojiyong/aggbug/99805.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2007-02-14 13:37 <a href="http://www.blogjava.net/liaojiyong/archive/2007/02/14/99805.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> Windows/Linux双系统重装Windows后无法进入Linux的最速解决办法 (转)</title><link>http://www.blogjava.net/liaojiyong/archive/2007/01/26/96197.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Fri, 26 Jan 2007 09:24:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2007/01/26/96197.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/96197.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2007/01/26/96197.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/96197.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/96197.html</trackback:ping><description><![CDATA[本文假定你有CD-ROM光驱以及Linux Live CD (如Ubuntu)，并使用GRUB作为bootloader。<br /><br />安装好Windows基本系统后，用Live CD启动，进入Linux桌面，打开Terminal，sudo -s切换到root，然后执行如下步骤：<br />  # grub<br />  grub&gt; root (hd0,7)<br />  grub&gt; setup (hd0)<br />  grub&gt; quit<br />  # shutdown -r now<br />机器重启后，熟悉的grub界面又出来了。:)<br /><br />注意在root命令和setup命令后都有空格。另外稍微解释一下hd0和hd0,7的含义：hd是Hard Disk的缩写，0表示第一块硬盘，7表示编号为7的分区。如果不确定原先的Linux安装所在的分区编号是多少，可以在敲完"root (hd0,"后敲[TAB]键，在列表中即可通过文件系统类型和分区大小一目了然的找到。<br /><img src ="http://www.blogjava.net/liaojiyong/aggbug/96197.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2007-01-26 17:24 <a href="http://www.blogjava.net/liaojiyong/archive/2007/01/26/96197.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>初学Linux必学60个命令文件处理(转) </title><link>http://www.blogjava.net/liaojiyong/archive/2007/01/18/94646.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Thu, 18 Jan 2007 07:05:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2007/01/18/94646.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/94646.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2007/01/18/94646.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/94646.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/94646.html</trackback:ping><description><![CDATA[
		<font face="Simsun">
				<strong>file<br /></strong>1.作用 <br />file通过探测文件内容判断文件类型，使用权限是所有用户。 <br /><br />2.格式 <br />file [options] 文件名 <br /><br />3.[options]主要参数 <br />-v：在标准输出后显示版本信息，并且退出。 <br /><br />-z：探测压缩过的文件类型。 <br /><br />-L：允许符合连接。 <br /><br />-f name：从文件namefile中读取要分析的文件名列表。 <br /><br />4.简单说明 <br />使用file命令可以知道某个文件究竟是二进制（ELF格式）的可执行文件, 还是Shell Script文件，或者是其它的什么格式。file能识别的文件类型有目录、Shell脚本、英文文本、二进制可执行文件、C语言源文件、文本文件、DOS的可执行文件。 <br /><br />5.应用实例 <br />如果我们看到一个没有后缀的文件grap，可以使用下面命令： <br /><br />$ file grap <br /><br />grap： English text <br /><br />此时系统显示这是一个英文文本文件。需要说明的是，file命令不能探测包括图形、音频、视频等多媒体文件类型。 <br /><br /><b>mkdir</b><br />1.作用 <br />mkdir命令的作用是建立名称为dirname的子目录，与MS DOS下的md命令类似，它的使用权限是所有用户。 <br /><br />2.格式 <br />mkdir [options] 目录名 <br /><br />3.[options]主要参数 <br />－m, －－mode=模式：设定权限&lt;模式&gt;，与chmod类似。 <br /><br />－p, －－parents：需要时创建上层目录；如果目录早已存在，则不当作错误。 <br /><br />－v, －－verbose：每次创建新目录都显示信息。 <br /><br />－－version：显示版本信息后离开。 <br /><br />4.应用实例 <br />在进行目录创建时可以设置目录的权限，此时使用的参数是“－m”。假设要创建的目录名是“tsk”，让所有用户都有rwx(即读、写、执行的权限)，那么可以使用以下命令： <br /><br />$ mkdir －m 777 tsk <br /><br /><b>grep</b><br />1.作用 <br />grep命令可以指定文件中搜索特定的内容，并将含有这些内容的行标准输出。grep全称是Global Regular Expression Print，表示全局正则表达式版本，它的使用权限是所有用户。 <br /><br />2.格式 <br />grep [options] <br /><br />3.主要参数 <br />[options]主要参数： <br /><br />－c：只输出匹配行的计数。 <br /><br />－I：不区分大小写（只适用于单字符）。 <br /><br />－h：查询多文件时不显示文件名。 <br /><br />－l：查询多文件时只输出包含匹配字符的文件名。 <br /><br />－n：显示匹配行及行号。 <br /><br />－s：不显示不存在或无匹配文本的错误信息。 <br /><br />－v：显示不包含匹配文本的所有行。 <br /><br />pattern正则表达式主要参数： <br /><br />\：忽略正则表达式中特殊字符的原有含义。 <br /><br />^：匹配正则表达式的开始行。 <br /><br />$: 匹配正则表达式的结束行。 <br /><br />\&lt;：从匹配正则表达式的行开始。 <br /><br />\&gt;：到匹配正则表达式的行结束。 <br /><br />[ ]：单个字符，如[A]即A符合要求 。 <br /><br />[ - ]：范围，如[A-Z]，即A、B、C一直到Z都符合要求 。 <br /><br />。：所有的单个字符。 <br /><br />* ：有字符，长度可以为0。 <br /><br />正则表达式是Linux/Unix系统中非常重要的概念。正则表达式（也称为“regex”或“regexp”）是一个可以描述一类字符串的模式（Pattern）。如果一个字符串可以用某个正则表达式来描述，我们就说这个字符和该正则表达式匹配（Match）。这和DOS中用户可以使用通配符“*”代表任意字符类似。在Linux系统上，正则表达式通常被用来查找文本的模式，以及对文本执行“搜索－替换”操作和其它功能。 <br /><br />4.应用实例 <br />查询DNS服务是日常工作之一，这意味着要维护覆盖不同网络的大量IP地址。有时IP地址会超过2000个。如果要查看nnn.nnn网络地址，但是却忘了第二部分中的其余部分，只知到有两个句点，例如nnn nn..。要抽取其中所有nnn.nnn IP地址，使用[0－9 ]\{3 \}\.[0－0\{3\}\。含义是任意数字出现3次，后跟句点，接着是任意数字出现3次，后跟句点。 <br /><br />$grep '[0－9 ]\{3 \}\.[0－0\{3\}\' ipfile <br /><br />补充说明，grep家族还包括fgrep和egrep。fgrep是fix grep，允许查找字符串而不是一个模式；egrep是扩展grep，支持基本及扩展的正则表达式，但不支持\q模式范围的应用及与之相对应的一些更加规范的模式。 <br /><br /><b>dd</b><br />1.作用 <br />dd命令用来复制文件，并根据参数将数据转换和格式化。 <br /><br />2.格式 <br /><br />dd [options] <br /><br />3.[opitions]主要参数 <br /><br />bs=字节：强迫 ibs=&lt;字节&gt;及obs=&lt;字节&gt;。 <br /><br />cbs=字节：每次转换指定的&lt;字节&gt;。 <br /><br />conv=关键字：根据以逗号分隔的关键字表示的方式来转换文件。 <br /><br />count=块数目：只复制指定&lt;块数目&gt;的输入数据。 <br /><br />ibs=字节：每次读取指定的&lt;字节&gt;。 <br /><br />if=文件：读取&lt;文件&gt;内容，而非标准输入的数据。 <br /><br />obs=字节：每次写入指定的&lt;字节&gt;。 <br /><br />of=文件：将数据写入&lt;文件&gt;，而不在标准输出显示。 <br /><br />seek=块数目：先略过以obs为单位的指定&lt;块数目&gt;的输出数据。 <br /><br />skip=块数目：先略过以ibs为单位的指定&lt;块数目&gt;的输入数据。 <br /><br />4.应用实例 <br />dd命令常常用来制作Linux启动盘。先找一个可引导内核，令它的根设备指向正确的根分区，然后使用dd命令将其写入软盘： <br /><br />$ rdev vmlinuz /dev/hda <br /><br />$dd if＝vmlinuz of＝/dev/fd0 <br /><br />上面代码说明，使用rdev命令将可引导内核vmlinuz中的根设备指向/dev/hda，请把“hda”换成自己的根分区，接下来用dd命令将该内核写入软盘。 <br /><br /><b>find</b><br />1.作用 <br />find命令的作用是在目录中搜索文件，它的使用权限是所有用户。 <br /><br />2.格式 <br />find [path][options][expression] <br /><br />path指定目录路径，系统从这里开始沿着目录树向下查找文件。它是一个路径列表，相互用空格分离，如果不写path，那么默认为当前目录。 <br /><br />3.主要参数 <br />[options]参数： <br /><br />－depth：使用深度级别的查找过程方式，在某层指定目录中优先查找文件内容。 <br /><br />－maxdepth levels：表示至多查找到开始目录的第level层子目录。level是一个非负数，如果level是0的话表示仅在当前目录中查找。 <br /><br />－mindepth levels：表示至少查找到开始目录的第level层子目录。 <br /><br />－mount：不在其它文件系统（如Msdos、Vfat等）的目录和文件中查找。 <br /><br />－version：打印版本。 <br /><br />[expression]是匹配表达式，是find命令接受的表达式，find命令的所有操作都是针对表达式的。它的参数非常多，这里只介绍一些常用的参数。 <br /><br />—name：支持统配符*和?。 <br /><br />－atime n：搜索在过去n天读取过的文件。 <br /><br />－ctime n：搜索在过去n天修改过的文件。 <br /><br />－group grpoupname：搜索所有组为grpoupname的文件。 <br /><br />－user 用户名：搜索所有文件属主为用户名（ID或名称）的文件。 <br /><br />－size n：搜索文件大小是n个block的文件。 <br /><br />－print：输出搜索结果，并且打印。 <br /><br />4.应用技巧 <br />find命令查找文件的几种方法： <br /><br />（1）根据文件名查找 <br /><br />例如，我们想要查找一个文件名是lilo.conf的文件，可以使用如下命令： <br /><br />find / －name lilo.conf <br /><br />find命令后的“/”表示搜索整个硬盘。 <br /><br />（2）快速查找文件 <br /><br />根据文件名查找文件会遇到一个实际问题，就是要花费相当长的一段时间，特别是大型Linux文件系统和大容量硬盘文件放在很深的子目录中时。如果我们知道了这个文件存放在某个目录中，那么只要在这个目录中往下寻找就能节省很多时间。比如smb.conf文件，从它的文件后缀“.conf”可以判断这是一个配置文件，那么它应该在/etc目录内，此时可以使用下面命令： <br /><br />find /etc －name smb.conf <br /><br />这样，使用“快速查找文件”方式可以缩短时间。 <br /><br />（3）根据部分文件名查找方法 <br /><br />有时我们知道只某个文件包含有abvd这4个字，那么要查找系统中所有包含有这4个字符的文件可以输入下面命令： <br /><br />find / －name '*abvd*' <br /><br />输入这个命令以后，Linux系统会将在/目录中查找所有的包含有abvd这4个字符的文件（其中*是通配符），比如abvdrmyz等符合条件的文件都能显示出来。 <br /><br />(4) 使用混合查找方式查找文件 <br /><br />find命令可以使用混合查找的方法，例如，我们想在/etc目录中查找大于500000字节，并且在24小时内修改的某个文件，则可以使用-and (与)把两个查找参数链接起来组合成一个混合的查找方式。 <br /><br />find /etc -size +500000c -and -mtime +1 <br /><br /><b>mv </b><br />1.作用 <br />mv命令用来为文件或目录改名，或者将文件由一个目录移入另一个目录中，它的使用权限是所有用户。该命令如同DOS命令中的ren和move的组合。 <br /><br />2.格式 <br />mv[options] 源文件或目录 目标文件或目录 <br /><br />3.[options]主要参数 <br />－i：交互方式操作。如果mv操作将导致对已存在的目标文件的覆盖，此时系统询问是否重写，要求用户回答“y”或“n”，这样可以避免误覆盖文件。 <br /><br />－f：禁止交互操作。mv操作要覆盖某个已有的目标文件时不给任何指示，指定此参数后i参数将不再起作用。 <br /><br />4.应用实例 <br />（1）将/usr/cbu中的所有文件移到当前目录（用“.”表示）中： <br /><br />$ mv /usr/cbu/ * . <br /><br />（2）将文件cjh.txt重命名为wjz.txt： <br /><br />$ mv cjh.txt wjz.txt　 <br /><br /><b>ls </b><br />1.作用 <br />ls命令用于显示目录内容，类似DOS下的dir命令，它的使用权限是所有用户。 <br /><br />2.格式 <br />ls [options][filename] <br /><br />3.options主要参数 <br />－a, －－all：不隐藏任何以“.” 字符开始的项目。 <br /><br />－A, －－almost－all：列出除了“ . ”及 “.. ”以外的任何项目。 <br /><br />－－author：印出每个文件著作者。 <br /><br />－b, －－escape：以八进制溢出序列表示不可打印的字符。 <br /><br />－－block－size=大小：块以指定&lt;大小&gt;的字节为单位。 <br /><br />－B, －－ignore－backups：不列出任何以 ~ 字符结束的项目。 <br /><br />－f：不进行排序，－aU参数生效，－lst参数失效。 <br /><br />－F, －－classify：加上文件类型的指示符号 (*/=@| 其中一个)。 <br /><br />－g：like －l, but do not list owner。 <br /><br />－G, －－no－group：inhibit display of group information。 <br /><br />－i, －－inode：列出每个文件的inode号。 <br /><br />－I, －－ignore=样式：不印出任何符合Shell万用字符&lt;样式&gt;的项目。 <br /><br />－k：即－－block－size=1K。 <br /><br />－l：使用较长格式列出信息。 <br /><br />－L, －－dereference：当显示符号链接的文件信息时，显示符号链接所指示的对象，而并非符号链接本身的信息。 <br /><br />－m：所有项目以逗号分隔，并填满整行行宽。 <br /><br />－n, －－numeric－uid－gid：类似－l，但列出UID及GID号。 <br /><br />－N, －－literal：列出未经处理的项目名称，例如不特别处理控制字符。 <br /><br />－p, －－file－type：加上文件类型的指示符号 (/=@| 其中一个)。 <br /><br />－Q, －－quote－name：将项目名称括上双引号。 <br /><br />－r, －－reverse：依相反次序排列。 <br /><br />－R, －－recursive：同时列出所有子目录层。 <br /><br />－s, －－size：以块大小为序。 <br /><br />4.应用举例 <br />ls命令是Linux系统使用频率最多的命令，它的参数也是Linux命令中最多的。使用ls命令时会有几种不同的颜色，其中蓝色表示是目录，绿色表示是可执行文件，红色表示是压缩文件，浅蓝色表示是链接文件，加粗的黑色表示符号链接，灰色表示是其它格式文件。<br /><br />文件类型开头是由10个字符构成的字符串。其中第一个字符表示文件类型，它可以是下述类型之一：－（普通文件）、d（目录）、l（符号链接）、b（块设备文件）、c（字符设备文件）。后面的9个字符表示文件的访问权限，分为3组，每组3位。第一组表示文件属主的权限，第二组表示同组用户的权限，第三组表示其他用户的权限。每一组的三个字符分别表示对文件的读（r）、写（w）和执行权限（x）。对于目录，表示进入权限。s表示当文件被执行时，把该文件的UID或GID赋予执行进程的UID（用户ID）或GID（组 ID）。t表示设置标志位（留在内存，不被换出）。如果该文件是目录，那么在该目录中的文件只能被超级用户、目录拥有者或文件属主删除。如果它是可执行文件，那么在该文件执行后，指向其正文段的指针仍留在内存。这样再次执行它时，系统就能更快地装入该文件。接着显示的是文件大小、生成时间、文件或命令名称。 <br /><br /><b>diff</b><br />1.作用 <br />diff命令用于两个文件之间的比较，并指出两者的不同，它的使用权限是所有用户。 <br /><br />2.格式 <br />diff [options] 源文件 目标文件 <br /><br />3.[options]主要参数 <br />-a：将所有文件当作文本文件来处理。 <br /><br />-b：忽略空格造成的不同。 <br /><br />-B：忽略空行造成的不同。 <br /><br />-c：使用纲要输出格式。 <br /><br />-H：利用试探法加速对大文件的搜索。 <br /><br />-I：忽略大小写的变化。 <br /><br />-n --rcs：输出RCS格式。 <br /><br /><b>cmp</b><br />1.作用 <br />cmp（“compare”的缩写）命令用来简要指出两个文件是否存在差异，它的使用权限是所有用户。 <br /><br />2.格式 <br />cmp[options] 文件名 <br /><br />3.[options]主要参数 <br />-l: 将字节以十进制的方式输出，并方便将两个文件中不同的以八进制的方式输出。 <br /><br /><b>cat</b><br />1.作用 <br />cat（“concatenate”的缩写）命令用于连接并显示指定的一个和多个文件的有关信息，它的使用权限是所有用户。 <br /><br />2.格式 <br />cat [options] 文件1 文件2…… <br /><br />3.[options]主要参数 <br />－n：由第一行开始对所有输出的行数编号。 <br /><br />－b：和－n相似，只不过对于空白行不编号。 <br /><br />－s：当遇到有连续两行以上的空白行时，就代换为一行的空白行。 <br /><br />4.应用举例 <br />（1）cat命令一个最简单的用处是显示文本文件的内容。例如，我们想在命令行看一下README文件的内容，可以使用命令： <br /><br />$ cat README　 <br /><br />（2）有时需要将几个文件处理成一个文件，并将这种处理的结果保存到一个单独的输出文件。cat命令在其输入上接受一个或多个文件，并将它们作为一个单独的文件打印到它的输出。例如，把README和INSTALL的文件内容加上行号（空白行不加）之后，将内容附加到一个新文本文件File1 中： <br /><br />$ cat README INSTALL File1 <br /><br />（3）cat还有一个重要的功能就是可以对行进行编号，见图2所示。这种功能对于程序文档的编制，以及法律和科学文档的编制很方便，打印在左边的行号使得参考文档的某一部分变得容易，这些在编程、科学研究、业务报告甚至是立法工作中都是非常重要的。<br /><br />对行进行编号功能有-b（只能对非空白行进行编号）和-n（可以对所有行进行编号）两个参数： <br /><br />$ cat -b /etc/named.conf <br /><br /><b>ln</b><br />1.作用 <br />ln命令用来在文件之间创建链接，它的使用权限是所有用户。 <br /><br />2.格式 <br />ln [options] 源文件 [链接名] <br /><br />3.参数 <br />－f：链结时先将源文件删除。 <br /><br />－d：允许系统管理者硬链结自己的目录。 <br /><br />－s：进行软链结(Symbolic Link)。 <br /><br />－b：将在链结时会被覆盖或删除的文件进行备份。 <br /><br />链接有两种，一种被称为硬链接（Hard Link），另一种被称为符号链接（Symbolic Link）。默认情况下，ln命令产生硬链接。 <br /><br />硬连接指通过索引节点来进行的连接。在Linux的文件系统中，保存在磁盘分区中的文件不管是什么类型都给它分配一个编号，称为索引节点号(Inode Index)。在Linux中，多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名，这样用户就可以建立硬连接到重要文件，以防止“误删”的功能。其原因如上所述，因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接，只有当最后一个连接被删除后，文件的数据块及目录的连接才会被释放。也就是说，文件才会被真正删除。 <br /><br />与硬连接相对应，Lnux系统中还存在另一种连接，称为符号连接（Symbilc Link），也叫软连接。软链接文件有点类似于Windows的快捷方式。它实际上是特殊文件的一种。在符号连接中，文件实际上是一个文本文件，其中包含的有另一文件的位置信息。 <br /><br /><b>动手联系</b><br />上面我们介绍了Linux文件处理命令，下面介绍几个实例，大家可以动手练习一下刚才讲过的命令。 <br /><br />1.利用符号链接快速访问关键目录 <br />符号链接是一个非常实用的功能。假设有一些目录或文件需要频繁使用，但由于Linux的文件和目录结构等原因，这个文件或目录在很深的子目录中。比如，Apache Web服务器文档位于系统的/usr/local/httpd/htdocs中，并且不想每次都要从主目录进入这样一个长的路径之中(实际上，这个路径也非常不容易记忆)。 <br /><br />为了解决这个问题，可以在主目录中创建一个符号链接，这样在需要进入该目录时，只需进入这个链接即可。 <br /><br />为了能方便地进入Web服务器(/usr/local/httpd/htdocs)文档所在的目录，在主目录下可以使用以下命令： <br /><br />$ ln -s /usr/local/httpd/htdocs gg <br /><br />这样每次进入gg目录就可访问Web服务器的文档，以后如果不再访问Web服务器的文档时，删除gg即可，而真正的Web服务器的文档并没有删除。 <br /><br />2.使用dd命令将init.rd格式的root.ram内容导入内存 <br />dd if=/dev/fd0 of=floppy.fd <br /><br />dd if=root.ram of=/dev/ram0 # <br /><br />3.grep命令系统调用 <br />grep是Linux/Unix中使用最广泛的命令之一，许多Linux系统内部都可以调用它。 <br /><br />(1)如果要查询目录列表中的目录，方法如下： <br /><br />$ ls -l | grep '∧d' <br /><br />(2)如果在一个目录中查询不包含目录的所有文件，方法如下： <br /><br />$ ls -l | grep '∧[∧d]' <br /><br />(3)用find命令调用grep，如所有C源代码中的“Chinput”，方法如下： <br /><br />$find /ZhXwin -name *.c -exec grep -q -s Chinput {} \;-print </font>
		<br />
<img src ="http://www.blogjava.net/liaojiyong/aggbug/94646.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2007-01-18 15:05 <a href="http://www.blogjava.net/liaojiyong/archive/2007/01/18/94646.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux 文件命令精通指南(一)(转载) </title><link>http://www.blogjava.net/liaojiyong/archive/2007/01/18/94647.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Thu, 18 Jan 2007 07:05:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2007/01/18/94647.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/94647.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2007/01/18/94647.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/94647.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/94647.html</trackback:ping><description><![CDATA[
		<div>
				<font face="宋体">虽然 GUI 桌面（如 KDE 和 GNOME）能够帮助用户利用 Linux 特性，而无需关于命令行接口的功能知识，但还是经常会需要更多的功能和灵活性。而且，基本熟悉这些命令对于在 shell 脚本中正确地使某些功能自动化仍然是必需的。 <br /><br />这篇文章是关于 Linux 文件命令的一个“速成教程”，它是为那些刚接触这个操作系统或者只是需要补充这方面知识的用户提供的。它包含了对一些更有用的命令的一个简明的概述以及关于它们的最强大的应用的指导。下面包含的信息 — 结合一些实验 — 将使您能够容易地掌握这些基本的命令。（注意：当涉及到一个与 Oracle 集群文件系统 (OCFS) 结合的内核时，这些命令中的某些命令的行为可能会稍微有所不同。在此情况下，Oracle 提供了一个 OCFS 工具集，该工具集可以为文件命令应用提供一个更好的选择。） <br /><br />注意，这里包含的所有示例都在 SUSE Linux 8.0 Professional 上进行了测试。虽然没有理由相信它们在其它的系统上将不能工作，但如果出现问题，您应当查看您的文档，以了解可能的变化。 <br /><br /><b>背景概念</b><br />在深入研究规范之前，让我们回顾一些基础知识。 <br /><br /><b>文件和命令</b><br />在 Linux/UNIX 操作系统中，所有事物都被当作文件来处理：硬件设备（包括键盘和终端）、目录、命令本身，当然还有文件。这个奇怪的惯例实际上是 Linux/UNIX 的能力和灵活性的基础。 <br /><br />大多数（几乎是全部）的命令形式如下： <br /><br />command [option] [source file(s)] [target file] <br /><br /><b>获取帮助</b><br />最有用的命令之一是那些提供帮助的命令（特别是对那些学习 Linux 的人而言）。Linux 中的两个重要的信息来源是联机参考手册，或 man 页面和 whatis 工具。您可以用 whatis 命令来访问一个不熟悉的命令的 man 页面。 <br /><br />$ whatis echo <br /><br />要了解关于这个命令的更多信息，可以使用： <br /><br />$ man echo <br /><br />如果您不知道某个特殊任务所需的命令，您可以用 man -k （也称为 apropos）和一个主题来生成可能的命令。例如： <br /><br />$ man -k files <br /><br />一个很有用但常常被忽视的命令可以提供关于使用 man 本身的信息： <br /><br />$ man man <br /><br />您可以用 SPACEBAR 来浏览任意的 man 页面；UP ARROW 将向上翻滚文件。.要退出，则输入 q,!，或 CTRL-Z。 <br /><br /><b>用户类别</b><br />记得那句名言“所有动物一例平等但有些动物比其他动物更加平等”吗？在 Linux 世界中，根用户掌管一切。 <br /><br />根用户可以以另一个用户名 su （源自 "superuser"）登录。要执行诸如添加一个新用户、打印机或文件系统之类的任务，必须作为根用户登录或者用 su 命令和根用户密码切换到超级用户。系统文件（包括控制初始化过程的系统文件）归根用户所有。虽然可能允许普通用户对它们进行读操作，但出于系统安全性的原因，编辑的权利将留给根用户。 <br /><br />BASH shell <br /><br />虽然提供了其它的 shell，但 BASH (Bourne Again Shell) 是 Linux 的默认 shell。它结合了与它同名的 Bourne shell 的特性和 Korn、C 和 TCSH shell 的特性。 <br /><br />BASH 内置的命令 history 默认记录最后输入的 500 条命令。可以通过在命令提示符下输入 history 来查看它们。要检索某个特定的命令，可以在命令提示符下按 UP ARROW 或 DOWN ARROW，或在历史列表中输入它的编号，并在编号前面加上 "!"，例如： <br /><br />$ !49 <br /><br />您还可以通过一条命令在历史列表中离位置最靠前的项目的距离来执行该命令：如果在历史列表中有 53 个事件，$ !-3 将执行事件号 51。 <br /><br />像 UNIX/Linux 世界的其它 shell 一样，BASH 使用了特殊的环境变量来方便系统管理。例如： <br /><br />HOME，用户主目录<br /><br />PATH，Linux 用来搜索您输入的命令的可执行镜像的搜索路径<br /><br />HISTSIZE，系统保存的历史事件的数量 <br /><br />除了这些保留的关键字之外，您还可以定义您自己的环境变量。例如，Oracle 使用 ORACLE_HOME （还有其它一些变量），要使 Oracle 安装成功完成，必须在您的环境中设置这些变量。 <br /><br />可以在提示符下临时设置变量： <br /><br />$HISTSIZE=100 <br /><br />或者，在 /etc/profile （需要根用户权限）中进行系统范围的永久设置，或在 .profile 中进行局部永久设置。 <br /><br />可以通过 echo 命令，并用一个 $ 符号来访问一个环境变量的值，进而查看该值。 <br /><br />$ echo $HOME<br />/home/bluher <br /><br />可以用 env 命令来查看当前所有的环境变量。 <br /><br />正则表达式和通配符 <br /><br />许多 Linux 命令使用通配符 * 和 ? 来匹配任意数量的字符或分别匹配任意的单个字符；正则模式匹配表达式利用一个句点 (.) 来匹配除“换行符”之外的任意单个字符。这两种情况下都使用方括号 ([ ]) 来匹配除“*”号之外的字符组。不过，* 号在各种情况下有类似但不同的意义：虽然它在 shell 中将匹配一个或更多的字符，但在正则表达式中，它匹配上述字符的零个或更多的实例。一些命令（如 egrep 和 awk）使用了一组更广泛的特殊字符来进行模式匹配。 </font>
		</div>
<img src ="http://www.blogjava.net/liaojiyong/aggbug/94647.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2007-01-18 15:05 <a href="http://www.blogjava.net/liaojiyong/archive/2007/01/18/94647.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>必学的Linux系统安全命令(转)</title><link>http://www.blogjava.net/liaojiyong/archive/2007/01/18/94644.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Thu, 18 Jan 2007 07:04:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2007/01/18/94644.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/94644.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2007/01/18/94644.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/94644.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/94644.html</trackback:ping><description><![CDATA[
		<p>虽然Linux和Windows NT/2000系统一样是一个多用户的系统，但是它们之间有不少重要的差别。对于很多习惯了Windows系统的管理员来讲，如何保证Linux操作系统安全、可靠将会面临许多新的挑战。本文将重点介绍Linux系统安全的命令。 <br />passwd <br />1.作用<br />asswd命令原来修改账户的登陆密码，使用权限是所有用户。 <br />2.格式<br />asswd [选项] 账户名称 <br />3.主要参数 <br />-l：锁定已经命名的账户名称，只有具备超级用户权限的使用者方可使用。<br />-u：解开账户锁定状态，只有具备超级用户权限的使用者方可使用。 <br />-x, --maximum=DAYS：最大密码使用时间（天），只有具备超级用户权限的使用者方可使用。<br />-n, --minimum=DAYS：最小密码使用时间（天），只有具备超级用户权限的使用者方可使用。<br />-d：删除使用者的密码, 只有具备超级用户权限的使用者方可使用。 <br />-S：检查指定使用者的密码认证种类, 只有具备超级用户权限的使用者方可使用。 <br />4.应用实例 <br />$ passwd<br />Changing password for user cao.<br />Changing password for cao<br />(current) UNIX password:<br />New UNIX password:<br />Retype new UNIX password:<br />passwd: all authentication tokens updated successfully.<br />从上面可以看到，使用passwd命令需要输入旧的密码，然后再输入两次新密码。 <br />su <br />1.作用<br />u的作用是变更为其它使用者的身份，超级用户除外，需要键入该使用者的密码。 <br />2.格式<br />u [选项]... [-] [USER [ARG]...] <br />3.主要参数<br />-f ， --fast：不必读启动文件（如 csh.cshrc 等），仅用于csh或tcsh两种Shell。<br />-l ， --login：加了这个参数之后，就好像是重新登陆为该使用者一样，大部分环境变量（例如HOME、SHELL和USER等）都是以该使用者（USER）为主，并且工作目录也会改变。如果没有指定USER，缺省情况是root。<br />-m， -p ，--preserve-environment：执行su时不改变环境变数。<br />-c command：变更账号为USER的使用者，并执行指令（command）后再变回原来使用者。<br />USER：欲变更的使用者账号，ARG传入新的Shell参数。 <br />4.应用实例<br />变更账号为超级用户，并在执行df命令后还原使用者。    su -c df root <br />umask <br />1.作用<br />umask设置用户文件和目录的文件创建缺省屏蔽值，若将此命令放入profile文件，就可控制该用户后续所建文件的存取许可。它告诉系统在创建文件时不给谁存取许可。使用权限是所有用户。 <br />2.格式<br />umask [-p] [-S] [mode] <br />3.参数<br />－S：确定当前的umask设置。<br />－p：修改umask 设置。<br />[mode]：修改数值。 <br />4.说明<br />传统Unix的umask值是022，这样就可以防止同属于该组的其它用户及别的组的用户修改该用户的文件。既然每个用户都拥有并属于一个自己的私有组，那么这种“组保护模式”就不在需要了。严密的权限设定构成了Linux安全的基础，在权限上犯错误是致命的。需要注意的是，umask命令用来设置进程所创建的文件的读写权限，最保险的值是0077，即关闭创建文件的进程以外的所有进程的读写权限，表示为-rw-------。在～/.bash_profile中，加上一行命令umask 0077可以保证每次启动Shell后, 进程的umask权限都可以被正确设定。 <br />5.应用实例 <br />umask -S<br />u=rwx,g=rx,o=rx<br />umask -p 177<br />umask -S<br />u=rw,g=,o=<br />BR&gt;<br />上述5行命令，首先显示当前状态，然后把umask值改为177，结果只有文件所有者具有读写文件的权限，其它用户不能访问该文件。这显然是一种非常安全的设置。<br />chgrp <br />1.作用<br />chgrp表示修改一个或多个文件或目录所属的组。使用权限是超级用户。 <br />2.格式<br />chgrp [选项]... 组 文件...<br />或<br />chgrp [选项]... --reference=参考文件 文件... <br />将每个的所属组设定为。 <br />3.参数<br />-c, --changes ：像 --verbose，但只在有更改时才显示结果。<br />--dereference：会影响符号链接所指示的对象，而非符号链接本身。<br />-h, --no-dereference：会影响符号链接本身，而非符号链接所指示的目的地(当系统支持更改符号链接的所有者，此选项才有效)。<br />-f, --silent, --quiet：去除大部分的错误信息。<br />--reference=参考文件：使用的所属组，而非指定的。<br />-R, --recursive：递归处理所有的文件及子目录。<br />-v, --verbose：处理任何文件都会显示信息。 <br />4.应用说明<br />该命令改变指定指定文件所属的用户组。其中group可以是用户组ID，也可以是/etc/group文件中用户组的组名。文件名是以空格分开的要改变属组的文件列表，支持通配符。如果用户不是该文件的属主或超级用户，则不能改变该文件的组。 <br />5.应用实例<br />改变/opt/local /book/及其子目录下的所有文件的属组为book，命令如下：<br />$ chgrp - R book /opt/local /book <br />chmod <br />1.作用<br />chmod命令是非常重要的，用于改变文件或目录的访问权限，用户可以用它控制文件或目录的访问权限，使用权限是超级用户。 <br />2.格式<br />chmod命令有两种用法。一种是包含字母和操作符表达式的字符设定法（相对权限设定）；另一种是包含数字的数字设定法（绝对权限设定）。 <br />（1）字符设定法 <br />chmod [who] [+ &amp;#124; - &amp;#124; =] [mode] 文件名 <br />◆操作对象who可以是下述字母中的任一个或它们的组合<br />u：表示用户，即文件或目录的所有者。 <br />g：表示同组用户，即与文件属主有相同组ID的所有用户。<br />o：表示其它用户。 <br />a：表示所有用户，它是系统默认值。 <br />◆操作符号 <br />+：添加某个权限。 <br />-：取消某个权限。 <br />=：赋予给定权限，并取消其它所有权限（如果有的话）。 <br />◆设置mode的权限可用下述字母的任意组合<br />r：可读。 <br />w：可写。 <br />x：可执行。 <br />X：只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x属性。 <br />：文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u＋s”设置文件的用户ID位，“g＋s”设置组ID位。 <br />t：保存程序的文本到交换设备上。 <br />u：与文件属主拥有一样的权限。 <br />g：与和文件属主同组的用户拥有一样的权限。 <br />o：与其它用户拥有一样的权限。 <br />文件名：以空格分开的要改变权限的文件列表，支持通配符。<br />一个命令行中可以给出多个权限方式，其间用逗号隔开。 <br />（2） 数字设定法 <br />数字设定法的一般形式为： chmod [mode] 文件名 <br />数字属性的格式应为3个0到7的八进制数，其顺序是(u)(g)(o)文件名，以空格分开的要改变权限的文件列表，支持通配符。 <br />数字表示的权限的含义如下：0001为所有者的执行权限；0002为所有者的写权限；0004为所有者的读权限；0010为组的执行权限；0020为组的写权限；0040为组的读权限；0100为其他人的执行权限；0200为其他人的写权限；0400为其他人的读权限；1000为粘贴位置位；2000表示假如这个文件是可执行文件，则为组ID为位置位，否则其中文件锁定位置位；4000表示假如这个文件是可执行文件，则为用户ID为位置位。 <br />3.实例<br />如果一个系统管理员写了一个表格(tem)让所有用户填写，那么必须授权用户对这个文件有读写权限，可以使用命令：＃chmod 666 tem <br />上面代码中，这个666数字是如何计算出来的呢？0002为所有者的写权限，0004为所有者的读权限，0020为组的写权限，0040为组的读权限，0200为其他人的写权限，0400为其他人的读权限，这6个数字相加就是666（注以上数字都是八进制数），结果见图1所示。 </p>
		<p>点击在新窗口中浏览此图片<br /><a href="http://www.ttian.net/image"><font color="#3366cc">http://www.ttian.net/image</font></a>...</p>
		<p>图1 用chmod数字方法设定文件权限<br />从图1可以看出，tem文件的权限是-rw-rw-rw-，即用户对这个文件有读写权限。 <br />如果用字符权限设定使用下面命令：<br />＃chmod a =wx tem <br />chown <br />1.作用<br />更改一个或多个文件或目录的属主和属组。使用权限是超级用户。 <br />2.格式<br />chown [选项] 用户或组 文件 <br />3.主要参数<br />--dereference：受影响的是符号链接所指示的对象，而非符号链接本身。<br />-h, --no-dereference：会影响符号链接本身，而非符号链接所指示的目的地(当系统支持更改符号链接的所有者，此选项才有效)。<br />--from=目前所有者:目前组只当每个文件的所有者和组符合选项所指定的，才会更改所有者和组。其中一个可以省略，这已省略的属性就不需要符合原有的属性。<br />-f, --silent, --quiet：去除大部分的错误信息。<br />-R, --recursive：递归处理所有的文件及子目录。<br />-v, --verbose：处理任何文件都会显示信息。 </p>
		<p>4.说明<br />chown将指定文件的拥有者改为指定的用户或组，用户可以是用户名或用户ID；组可以是组名或组ID；文件是以空格分开的要改变权限的文件列表，支持通配符。系统管理员经常使用chown命令，在将文件拷贝到另一个用户的目录下以后，让用户拥有使用该文件的权限。 <br />5.应用实例<br />1.把文件shiyan.c的所有者改为wan <br />$ chown wan shiyan.c <br />2.把目录/hi及其下的所有文件和子目录的属主改成wan，属组改成users。 <br />$ chown - R wan.users /hi <br />chattr <br />1.作用<br />修改ext2和ext3文件系统属性(attribute)，使用权限超级用户。 <br />2.格式<br />chattr [-RV] [-+=AacDdijsSu] [-v version] 文件或目录 <br />3.主要参数<br />－R：递归处理所有的文件及子目录。<br />－V：详细显示修改内容，并打印输出。<br />－：失效属性。<br />＋：激活属性。<br />= ：指定属性。<br />A：Atime，告诉系统不要修改对这个文件的最后访问时间。<br />S：Sync，一旦应用程序对这个文件执行了写操作，使系统立刻把修改的结果写到磁盘。 <br />a：Append Only，系统只允许在这个文件之后追加数据，不允许任何进程覆盖或截断这个文件。如果目录具有这个属性，系统将只允许在这个目录下建立和修改文件，而不允许删除任何文件。 <br />i：Immutable，系统不允许对这个文件进行任何的修改。如果目录具有这个属性，那么任何的进程只能修改目录之下的文件，不允许建立和删除文件。 <br />D：检查压缩文件中的错误。<br />d：No dump，在进行文件系统备份时，dump程序将忽略这个文件。 <br />C：Compress，系统以透明的方式压缩这个文件。从这个文件读取时，返回的是解压之后的数据；而向这个文件中写入数据时，数据首先被压缩之后才写入磁盘。 <br />：Secure Delete，让系统在删除这个文件时，使用0填充文件所在的区域。 <br />u：Undelete，当一个应用程序请求删除这个文件，系统会保留其数据块以便以后能够恢复删除这个文件。 <br />4.说明<br />chattr命令的作用很大，其中一些功能是由Linux内核版本来支持的，如果Linux内核版本低于2.2，那么许多功能不能实现。同样－D检查压缩文件中的错误的功能，需要2.5.19以上内核才能支持。另外，通过chattr命令修改属性能够提高系统的安全性，但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var目录。 <br />5.应用实例<br />1.恢复/root目录,即子目录的所有文件<br /># chattr -R +u/root <br />2.用chattr命令防止系统中某个关键文件被修改<br />在Linux下，有些配置文件(passwd ,fatab)是不允许任何人修改的，为了防止被误删除或修改，可以设定该文件的“不可修改位(immutable)”，命令如下：<br /># chattr +i /etc/fstab <br />sudo <br />1.作用<br />udo是一种以限制配置文件中的命令为基础，在有限时间内给用户使用，并且记录到日志中的命令，权限是所有用户。 <br />2.格式 <br />sudo [-bhHpV] [-s ] [-u ] [指令]<br />sudo [-klv]<br />3.主要参数 <br />－b：在后台执行命令。<br />-h：显示帮助。<br />-H：将HOME环境变量设为新身份的HOME环境变量。<br />-k：结束密码的有效期，即下次将需要输入密码。<br />-l：列出当前用户可以使用的命令。<br />-p：改变询问密码的提示符号。<br />-s ：执行指定的Shell。<br />-u ：以指定的用户为新身份，不使用时默认为root。<br />-v：延长密码有效期5分钟。<br />4.说明<br />udo命令的配置在/etc/sudoers文件中。当用户使用sudo时，需要输入口令以验证使用者身份。随后的一段时间内可以使用定义好的命令，当使用配置文件中没有的命令时，将会有报警的记录。sudo是系统管理员用来允许某些用户以root身份运行部分/全部系统命令的程序。一个明显的用途是增强了站点的安全性，如果需要每天以超级用户的身份做一些日常工作，经常执行一些固定的几个只有超级用户身份才能执行的命令，那么用sudo是非常适合的。 <br />ps <br />1.作用<br />显示瞬间进程 (process) 的动态，使用权限是所有使用者。 <br />2.格式<br />[options] [--help] <br />3.主要参数<br />的参数非常多, 此出仅列出几个常用的参数。 <br />-A：列出所有的进程。 <br />-l：显示长列表。<br />-m：显示内存信息。<br />-w：显示加宽可以显示较多的信息。 <br />-e：显示所有进程。<br />a：显示终端上的所有进程,包括其它用户的进程。<br />-au：显示较详细的信息。<br />-aux：显示所有包含其它使用者的进程。</p>
		<p>
				<br />4.说明<br />要对进程进行监测和控制，首先要了解当前进程的情况，也就是需要查看当前进程。ps命令就是最基本、也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行、运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等。图2给出了ps-aux命令详解。大部分信息都可以通过执行该命令得到。最常用的三个参数是u、a、x。下面就结合这三个参数详细说明ps命令的作用：ps aux</p>
		<p>点击在新窗口中浏览此图片<br /><a href="http://www.ttian.net/image"><font color="#3366cc">http://www.ttian.net/image</font></a>...</p>
		<p>图2 ps-aux命令详解<br />图2第2行代码中，USER表示进程拥有者；PID表示进程标示符；%CPU表示占用的CPU使用率；%MEM占用的物理内存使用率；VSZ表示占用的虚拟内存大小；RSS为进程占用的物理内存值；TTY为终端的次要装置号码。 <br />STAT表示进程的状态，其中D为不可中断的静止（I/O动作）；R正在执行中；S静止状态；T暂停执行；Z不存在，但暂时无法消除；W没有足够的内存分页可分配；高优先序的进程；N低优先序的进程；L有内存分页分配并锁在内存体内 (实时系统或 I/O)。START为进程开始时间。TIME为执行的时间。COMMAND是所执行的指令。 <br />4.应用实例<br />在进行系统维护时，经常会出现内存使用量惊人，而又不知道是哪一个进程占用了大量进程的情况。除了可以使用top命令查看内存使用情况之外，还可以使用下面的命令：<br />aux &amp;#124; sort +5n <br />who <br />1.作用<br />who显示系统中有哪些用户登陆系统，显示的资料包含了使用者ID、使用的登陆终端、上线时间、呆滞时间、CPU占用，以及做了些什么。 使用权限为所有用户。 <br />2.格式<br />who - [husfV] [user] <br />3.主要参数 <br />-h：不要显示标题列。 <br />-u：不要显示使用者的动作/工作。<br />-s：使用简短的格式来显示。<br />-f：不要显示使用者的上线位置。 <br />-V：显示程序版本。<br />4.说明<br />该命令主要用于查看当前在线上的用户情况。如果用户想和其它用户建立即时通信，比如使用talk命令，那么首先要确定的就是该用户确实在线上,不然talk进程就无法建立起来。又如，系统管理员希望监视每个登录的用户此时此刻的所作所为，也要使用who命令。who命令应用起来非常简单，可以比较准确地掌握用户的情况,所以使用非常广泛。 <br />动手练习 <br />1.使用Linux命令检测系统入侵者<br />安装过Mandrake Linux和Red Hat Linux的用户都会知道，Linux系统会内置三种不同级别（标准、高、更高）的防火墙，当进行了Linux服务器的安装和一些基本的设置后，服务器应该说是比较安全的，但是也会有黑客通过各种方法利用系统管理员的疏忽侵入系统。如何快速查找黑客非常重要。一般来说，可以使用命令查询黑客是否入侵，见表1。 <br />表1 查询黑客入侵现象的命令对应表</p>
		<p>点击在新窗口中浏览此图片<br /><a href="http://www.ttian.net/image"><font color="#3366cc">http://www.ttian.net/image</font></a>...</p>
		<p>举例说明，如果黑客嗅探网络，那么它必须使网卡接口处于混杂模式，使用下面命令进行查询： <br />＃ifconfig -a<br />eth0  Link encap:Ethernet  HWaddr 00:00:E8:A0:25:86<br />      inet addr:192.168.1.7  Bcast:192.168.1.255  Mask:255.255.255.0<br />      UP BROADCAST RUNNING PROMISCUOUS  MTU:1500  Metric:1<br />......<br />从这个命令的输出中，可以看到上面讲到的这些概念。第一行的00:00:E8:A0:25:86是mac地址，第二行的192.168.1.7是IP地址，第四行讲的是接收数据状态，这时正在被黑客嗅探。一般而言，网卡有几种接收数据帧的状态，如Broadcast、Multicast、Promiscuous等。Broadcast是指接收所有类型为广播报文的数据帧；Multicast是指接收特定的组播报文；Promiscuous则是通常说的混杂模式，是指对报文中的目的硬件地址不加任何检查、全部接收的工作模式。 <br />2.限制su命令的滥用<br />我们知道，超级用户在Linux中有最大的权利，几乎所有黑客都想得到这个目标。Linux可以增加对切换到超级用户的限制。使用PAM（Pluggable Authentication Modules）可以禁止除在wheel组以外的任何人su成root，修改/etc/pam.d/su文件，除去屏蔽标识#。使用/usr/sbin/usermod G10 bjecadm将bjecadm这个账号加入gid为10的组，就是wheel组。命令如下： <br />/etc/pam.d/su   # 使用密码验证＃<br />auth sufficient /lib/security/pam_wheel.so debug <br /># 限制只有wheel组用户才可以切换到root＃<br />auth required /lib/security/pam_wheel.so use_uid<br />chmod -G10 bjecadm<br />另外，每当用户试图使用su命令进入系统用户时,命令将在/usr/adm/sulog文件中写一条信息,若该文件记录了大量试图用su进入root的无效操作信息,则表明了可能有人企图破译root口令。 <br />Linux命令有着强大的功能。对于Linux系统管理员来说，往往只需要通过各种安全命令技巧，组合构成安全防线。从计算机安全的角度看，世界上没有绝对安全的计算机系统，Linux系统也不例外。</p>
<img src ="http://www.blogjava.net/liaojiyong/aggbug/94644.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2007-01-18 15:04 <a href="http://www.blogjava.net/liaojiyong/archive/2007/01/18/94644.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux 系统命令精通指南（初级）(转) </title><link>http://www.blogjava.net/liaojiyong/archive/2007/01/18/94645.html</link><dc:creator>liaojiyong</dc:creator><author>liaojiyong</author><pubDate>Thu, 18 Jan 2007 07:04:00 GMT</pubDate><guid>http://www.blogjava.net/liaojiyong/archive/2007/01/18/94645.html</guid><wfw:comment>http://www.blogjava.net/liaojiyong/comments/94645.html</wfw:comment><comments>http://www.blogjava.net/liaojiyong/archive/2007/01/18/94645.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liaojiyong/comments/commentRss/94645.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liaojiyong/services/trackbacks/94645.html</trackback:ping><description><![CDATA[
		<div>
				<font face="宋体">在 Linux/UNIX 世界中，一切都被看作文件，包括系统管理命令。单独对于组织而言，我们在本系列的第一部分中讨论了文件命令，并将在本文中提供最有用的系统诊断和维护命令。 <br /><br />对于文件命令，我们在此处详尽讨论了某些相当简单和直观的管理命令。而只描述了其他较复杂命令的功能，以便在您需要使用时，知道存在这些命令及其用途。本文不涉及对每个命令使用背后的基本原理的详细讨论，但是我们将讨论最基本和最有用的命令，这些命令用于监视和管理打印机服务、文件系统、磁盘和进程。 <br /><br /><b>有关超级用户的更多信息</b><br />这里讨论的很多命令可以由常规用户在其自己的文件和进程中执行。但是，某些命令，如 fdisk，需要有 root 权限才能运行。 <br /><br />为了您的系统的完整性，建议您避免直接以 "root" 登录到系统中。相反，通常更适合以常规用户登录，然后执行 su 或从 X window 执行 sux 命令来运行系统管理功能。(Sux 为您提供 X window 环境以及 root 权限。）当您以 root 用户登录时，您会始终知道您处于这种状态，因为您的提示符变为“#”。 <br /><br />超级用户能够使用 sudo，有选择地将那些通常为 root 用户或其他特殊用户所保留的权限分配给一个不同的常规用户。root 用户可以定义实际和有效的用户和组标识号 uid 和 gid，以便与预期用户的标识相匹配。这种预期用户可以是（但不必是）被允许运行该命令的用户。 <br /><br />换言之，超级用户可以允许其他用户执行某个命令，但也可以确定由进程所产生的任何结果文件应该属于 root 用户或任何由超级用户指定的其他用户。Sudo 权限一经分配，则只需要用户使用自己的口令进行验证，而不需要 root 用户口令。 <br /><br /><b>通用命令</b><br />从技术上讲，Uname、diff、date、sort 和 uniq 应该看作文件命令，但由于它们经常用于诊断和维护例程的系统管理方面，在这里解释它们更有意义。 <br /><br />Uname <br />Uname 提供了常规系统信息。当指定 -a 选项时，显示所有可用信息： <br />$ uname -a<br />Linux linux 2.4.18-4GB #1 Wed Mar 27 13:57:05 UTC 2002 i686 unknown <br /><br />在这里我们从左向右看到常规的系统信息。每条信息都有自己的选项（在下面的圆括号中），可以单独显示： <br /><br />操作系统名称为 Linux(-s)。 <br /><br />本机的网络节点名为 linux (-n)。 <br /><br />操作系统发布版本为 4.5.18-4GB (-r)。 <br /><br />操作系统版本为 #1 Wed Mar 27 13:57:05 UTC 2002 (-v)。 <br /><br />机器类型为 i686 (-m)。 <br /><br />这里的处理器类型 (-p) 为未知。 <br /><br />类似地，stty 显示关于您的终端设置的信息： <br />$ stty -a<br />speed 38400 baud; rows 40; columns 103; line = 0;<br />intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = ; eol2 = ; start = ^Q;<br />stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;<br />-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck <br />-istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel<br />opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0<br />isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke <br /><br />第二行和第三行显示了将在命令行分别调用的特殊字符和键序列。例如，"^Z" 即 CNTRL-Z 在本系统中发送一个终端休止符。退出符号以 "^\" 即 CNTRL-\ 发送，而我们可以将其改为 "^X"，如下所示： <br />$ stty quit ^X <br /><br />在这种情况下，您实际要输入 ^ 符号，而不是 CNTRL 键。这种改变只在当前窗口中起效。为了使这种改变永久生效，需要在您的 .bashrc 文件中输入该语句。 <br /><br />Diff 和 Date。顾名思义，Diff 比较两个文件。它返回那些导致文件不同的行，并返回关于如何使文件变得相同的一些含义隐晦的输出： <br />$ diff test.out test2.out<br />0a1<br />&gt; Another test. <br /><br />在这里我们被告知，需要将 "Another test." 这一行添加到 test.out，以便使它与 test2.out 相似。第一个字符 "0" 是要在 test.out 中编辑的行号；"a" 表示该行应该被添加到 test.out，以便与 test2.out 的第一行 "1" 相匹配。如果我们需要更改 test.out，则第二个字符也可以是 "c"，而如果我们需要从 test.out 中删除一些内容，则第二个字符是 "d"。 <br /><br />您可能希望使一个文件与另一个文件相似，以便为某些代码提供补丁。diff 还经常作为分析工具，用于验证程序或脚本 — 例如 sed 脚本 — 的输出是否是所预期的输出。 <br /><br />date 命令可用于显示或设置日期。如果用户具有超级用户权限，则他或她可以通过在以下命令中提供一个数字型字符串来设置日期： <br />$ date 0101010004<br />此命令将日期设置为 2004 年 (04) 1 月 1 日 (0101) 凌晨 1 时 (0100)。 <br /><br />但是，任何用户可以用所需的格式来显示日期。注意在格式序列之前需要一个加号 "+"。如果没有出现此命令的预期输出，则尝试将它包含在单引号中： <br />$ date +'%H%M%S'<br />204748 <br /><br />您可以在序列中包含空格，这时您需要使用双引号： <br />$ date +"%H %M %S"<br />20 47 51 <br /><br />在日期的主页上列有三十多种不同的格式序列，这些序列可以按需要结合起来，以获得您最后的输出格式。 <br /><br />date 的输出还可以用于脚本中，如： <br />$ date -d '2 day'<br />Thu Jan 29 19:02:02 EST 2004 <br /><br />-d 选项指示 date 显示其后字符串中所描述的时间。在上例中，我们要求显示从现在起（2004 年 1 月 27 日）两天后的日期。我们也可以要求显示三天前的日期，其命令为： <br />$ date -d '-3 day'<br />Sun Jan 25 20:56:59 EST 2004 <br /><br />date 多种功能的另一个示例是能够向其输出附加字符串，为生成唯一的文件名提供了一种便利的方法。 <br />$ ls -l | cat &gt; $(date +ls_%d%b%y%H%M.out)<br />$ ls ls_*.out<br />ls_04Feb041633.out <br /><br />在这里，我们将一个长文件列表的输出传送给 cat，它将我们的输出再传送到一个名为 ls_04Feb041609.out 的文件。注意我们为文件名使用了一个变量，由美元符号 "$" 表示。依次将 "ls_" 和 ".out" 附加到日期，其格式为月份中的日 (%d)、本地的月份名称缩写 (%b)、年份的最后两位数字 (%y)、小时 (%H) 和分钟 (%M)，从而产生此文件名。 <br /><br />Sort 和 Uniq。 您可以从管道或从命令行所指定的文件对文本文件的行进行 sort 操作。除非另外指定，sort 对多列输出的第一列进行操作。在默认情况下，除非使用 -n 选项，数字型的列按字母顺序排序。 <br /><br />Sort 列可以用两种不同的格式指定。如果使用 -k 选项，则列的位置从 1 开始进行编号。您还可以使用 +POS1 格式，从第一列编号为零开始进行列的编号。以下两个命令产生相同的输出： <br />$ ls -l *.out | sort +5 -7<br />$ ls -l *.out | sort -k 6,8<br />-rw-r--r-- 1 bluher users 375 Dec 5 2002 fdisk.out<br />-rw-r--r-- 1 bluher users 2447 Dec 28 20:15 ls.out<br />-rw-r--r-- 1 bluher users 590 Jan 4 21:24 greps.out<br />-rw-r--r-- 1 bluher users 78 Jan 4 21:25 sgrep.out<br />... <br /><br />在默认情况下，sort 命令的列分隔符是空格和制表符。可以使用 -t SEP 选项指定其他分隔符，其中 SEP 是您指定的分隔符号。sort 的默认顺序是从最低到最高，利用 -r 选项可以将顺序颠倒。 <br /><br />Sort 可用于很多不同的任务。例如，它可用于对文件输出进行排序（如 /etc/passwd），或者如我们在下面所看到的那样，对 du 的输出进行排序。当使用 -m 选项时，sort 将文件合并，实际上并没有对它们进行排序。但是，如果您希望将它们排序，就应该在文件合并前对它们排序。 <br /><br />Sort 经常与 uniq 命令一起使用，从已排序的文件中删除完全相同的行。uniq 命令在管道中经常跟在 sort 命令的后面，还可以使用 -c 选项来计算某一行所出现的次数，或者使用 -d 选项，只报告完全相同的行： <br />$ sort -m test.out test2_sort.out | uniq -c<br />1 Another test.<br />1 Testing testing<br />2 This is a test. <br /><br />在这里我们合并两个文件 test.out 和 test2_sort.out。然后我们使用 -c 选项，将输出传送到 uniq，这样最后的结果是按字母顺序排列的列表，完全相同的行被删除，并带有一个关于每行出现频率的报告。 <br /><br /><b>打印机控制</b><br />在多数情况下，打印机命令的使用相对较为明确。通过在 lpr 命令后面指定文件名，将作业发送到打印机。如果没有提供文件名，则假定使用标准输入。使用 lpq 命令，您可以获得关于发送到打印机的作业的状态报告。当您指定作业号时，Lprm 将作业从行打印机后台打印队列中删除。 <br /><br />$ lpr grep2.out<br />$ lpq<br />Printer:lp@linux 'lpdfilter drv=upp method=auto color=yes'<br />Queue:1 printable job<br />Server:pid 1929 active<br />Unspooler:pid 1930 active<br />Status:waiting for subserver to exit at 21:24:14.637<br />Rank　 Owner/ID　　　　Class Job Files　　　　Size Time<br />active bluher@linux+928　 A　 928 grep2.out　　 779 21:24:14<br />done　 bluher　　　　　　 A　 877 (STDIN)　　117258 13:09:53<br />$ lprm 928<br />Printer lp@linux:<br />checking perms 'cfA928linux.local'<br />dequeued 'cfA928linux.local'<br /><br />在这里，当我们将作业发送到打印机后，我们查询其状态。Lpq 向我们显示编号为 877 的作业已经完成，而我们刚发送的作业编号为 928。我们使用命令 lprm 928 将活动的作业从队列中删除。 <br /><br /><b>磁盘信息</b><br />无论您是维护自己的系统还是支持具有很多用户的企业，监视磁盘空间都是系统管理员更重要的职责之一。du、df 和 fdisk 命令提供了可用磁盘空间的不同视图。 <br /><br />du 命令提供对每个目录的文件空间使用情况的评估。在默认情况下，测量的单位是块的数目，块的大小通常在安装您的系统时确定。 <br /><br />在以下的示例中，系统是使用 1024 字节的块安装的。如果没有指定目录，则 du 开始对当前目录进行计算。-h 选项以易于读懂的形式提供大小的值： <br /><br />$ du -h Documents<br />105k　　Documents/jj<br />573k　　Documents/John<br />682k　　Documents<br /><br />可以使用 -a 选项更改输出，该选项指示 du 显示文件和目录的块数。选项 --block-size=SIZE 指示 du 以 SIZE 所指定字节大小的块的数目来显示输出。 <br /><br />$ du --block-size=512 Documents<br />209　　 Documents/jj<br />1146　　Documents/John<br />1363　　Documents<br /><br />在默认情况下，du 还为每个子目录递归地打印信息。通过使用 max-depth=N 选项可以限制这种操作，其中 N 等于被报告的最大级数： <br /><br />$ du --max-depth=2 .<br />$ du --max-depth=2 | sort -n<br />4　　　 ./.xemacs<br />4　　　 ./public_html<br />105　　 ./Documents/jj<br />573　　 ./Documents/Ian<br />682　　 ./Documents<br />2420　　./jdevhome/system<br />8350　　./jdevhome/system9.0.3.1035<br />13483　 ./jdevhome/mywork<br />24252　 ./jdevhome<br />...<br /><br />du 报告目录和子目录的空间使用情况，而 df 报告已安装文件系统的磁盘空间使用情况： <br /><br />$ df<br />Filesystem　　 1k-blocks　　　Used Available Use% Mounted on<br />/dev/hda6　　　　4195632　 1983656　 2211976　48% /<br />/dev/hda5　　　　　14607　　　3778　　 10075　28% /boot<br />/dev/hda9　　　　 937372　　494028　　443344　53% /home<br />/dev/hda8　　　　6297248　 3876880　 2420368　62% /opt<br />shmfs　　　　　　 256220　　　　 0　　256220　 0% /dev/shm<br /><br />在这里，df 报告了五个文件系统的状态。与 du 类似，df 利用 -h 选项提供人类可读的输出： <br /><br />$ df -h<br />Filesystem　　　　　　Size　Used Avail Use% Mounted on<br />/dev/hda6　　　　　　 4.0G　1.9G　2.1G　48% /<br />/dev/hda5　　　　　　　14M　3.7M　9.8M　28% /boot<br />/dev/hda9　　　　　　 915M　476M　440M　52% /home<br />/dev/hda8　　　　　　 6.0G　3.7G　2.3G　62% /opt<br />shmfs　　　　　　　　 250M　　 0　250M　 0% /dev/shm<br /><br />df 命令还允许您利用 -block-size=SIZE 选项来指定块的大小。 <br /><br />fdisk 命令是 Linux 的分区表操作命令。与 du 和 df 不同，没有 root 用户权限时不能运行该命令。如果指定了 -l 选项，则可以将它仅用于报告的目的。它提供了您的整个分区表的完整视图，而不仅仅是您使用 df 所看到的扩展 Linux 分区： <br /><br /># fdisk -l<br /><br />Disk /dev/hda:240 heads, 63 sectors, 1940 cylinders<br />Units = cylinders of 15120 * 512 bytes<br /><br />Device Boot　　Start　　　 End　　Blocks　 Id　System<br />/dev/hda1　　　　　　 1　　　 286　 2162128+　 c　Win95 FAT32 (LBA)<br />/dev/hda2　 *　　　 288　　　1940　12496680　　5　Extended<br />/dev/hda5　　　　　 288　　　 289　　 15088+　83　Linux<br />/dev/hda6　　　　　 290　　　 844　 4195768+　83　Linux<br />/dev/hda7　　　　　 845　　　 983　 1050808+　82　Linux swap<br />/dev/hda8　　　　　 984　　　1816　 6297448+　83　Linux<br />/dev/hda9　　　　　1817　　　1940　　937408+　83　Linux<br /><br /><b>进程监视</b><br />在繁忙的多用户系统中，进程监视也是 Linux 系统管理员的一项重要职责。在这方面，ps 和 top 是两个最有用的命令。 <br />ps 命令提供了当前运行进程的快照。 <br /><br />生动翔实的一课 <br /><br />以下是 ps 的最简单形式： <br /><br />$ ps<br />PID TTY　　　　　TIME CMD<br />3884 pts/1　　00:00:00 bash<br />3955 pts/2　　00:00:00 more<br />3956 pts/5　　00:00:05 sqlplus<br /><br />PID 是进程的标识号。 <br /><br />TTY 是进程所属的终端控制台。 <br /><br />TIME 列是进程所使用的总的 CPU 时间。 <br /><br />CMD 列列出正在执行的命令行。 <br /><br />使用带有 -ef 选项的 ps，返回系统中所有用户的所有进程的完整列表。如果您将此 ps 命令的结果传送到 grep 中，则该结果更易于查看。例如： <br /><br />$　ps -ef | grep oracle<br />UID　　　　PID　PPID　C STIME TTY　　　　 TIME CMD<br />oracle　　1633　　 1　0 13:58 ?00:00:00 ora_pmon_ora1<br />oracle　　1635　　 1　0 13:58 ?00:00:00 ora_dbw0_ora1<br />oracle　　1637　　 1　0 13:58 ?00:00:01 ora_lgwr_ora1<br />oracle　　1639　　 1　0 13:58 ?00:00:02 ora_ckpt_ora1<br />oracle　　1641　　 1　0 13:58 ?00:00:02 ora_smon_ora1<br />oracle　　1643　　 1　0 13:58 ?00:00:00 ora_reco_ora1<br />oracle　　1645　　 1　0 13:58 ?00:00:00 ora_cjq0_ora1<br />oracle　　1647　　 1　0 13:58 ?00:01:18 ora_qmn0_ora1<br />oracle　　1649　　 1　0 13:58 ?00:00:00 ora_s000_ora1<br />oracle　　1651　　 1　0 13:58 ?00:00:00 ora_d000_ora1<br /><br />注意，当您将 ps 的输出传送到 grep 命令时，列标题并不象在 ps 命令本身所使用时那样正常地显示。为便于说明，标题位于输出的上方，以便清楚地显示其联系。 <br /><br />虽然 uid 通常是指数字型的标识，但在第一列下指定的是用户名，标记为 UID。 <br /><br />PPID 是父进程的标识号。对于 Oracle 进程，这里的标识号为 1 — 它是 init 进程（所有进程的父进程）的 id，因为在本系统中安装的 Oracle 是作为登录进程的一部分而启动的。 <br />标为 C 的列是由 CPU 用于计算执行优先级的因子。 <br />STIME 是指进程的启动时间。 <br />问号表示这些进程不属于任何 TTY，因为它们是由系统启动的。 <br /><br />以下是 ps 命令带有某些不同选项的另一个示例。注意，其中很多列与执行带有 -ef 选项的 ps 时的列相同： <br /><br />$ ps aux<br />USER　　 PID %CPU %MEM　 VSZ　RSS TTY　　 STAT START　 TIME COMMAND<br />bluh　　4024　0.0　0.2　2240 1116 pts/1　 S　　20:59　 0:00 su bluher<br />bluh　　4025　0.0　0.3　2856 1668 pts/1　 S　　20:59　 0:00 bash<br />bluh　　4051　0.0　0.2　2488 1504 pts/1　 R　　21:01　 0:00 ps aux<br />bluh　　4052　0.0　0.1　1636　600 pts/1　 S　　21:01　 0:00 grep bluher<br /><br />除了提供重要的诊断信息，ps 命令还经常用于找出失控进程的 PID。例如，您的一个用户在 SQL*Plus 会话中输入一个笛卡尔联接。您可以执行以下的 ps 命令来找出其 PID： <br /><br />$　ps -ef | grep bluher<br />...<br />bluher　 4068　4064　0 21:14 pts/6　　00:00:00 less<br />bluher　 4112　3945　0 21:28 pts/5　　00:08:42 sqlplus<br />...<br /><br />然后您可以使用以下命令将其终止： <br />$ kill 4112 <br /><br />常规用户可以看到所有的系统进程，但他们只能终止他们自己拥有的进程。 <br /><br />Ps 只为您提供当前进程的快照。要即时查看最活跃的进程，可使用 top。Top 实时地提供进程信息。它还拥有交互式的状态，允许用户输入命令，如 n 后面跟有 5 或 10 等数字。其结果是指示 top 显示 5 或 10 个最活跃的进程。Top 持续运行，直到您按 "q" 退出 top 为止。 <br /><br />以下是 top 的部分显示： <br /><br />8:14pm　up 51 min,　7 users,　load average: 0.02, 0.03, 0.05<br />96 processes:87 sleeping, 2 running, 0 zombie, 7 stopped<br />CPU states:6.4% user,　3.5% system,　0.0% nice, 89.9% idle<br />Mem:512440K av,　392288K used,　120152K free,　　　 0K shrd,　 55668K buff<br />Swap:1050800K av,　　　 0K used, 1050800K free　　　　　　　　　236128K cached<br /><br />PID USER　　 PRI　NI　SIZE　RSS SHARE STAT %CPU %MEM　 TIME COMMAND<br />1289 root　　　18　 0 78008　11M　1796 R　　 3.7　2.2　 0:49 X<br />1965 bluher　　20　 0 12244　11M 10456 S　　 1.9　2.3　 0:01 kdeinit<br />1986 bluher　　18　 0　 996　996　 768 R　　 1.5　0.1　 0:00 top<br />1803 bluher　　20　 0 16960　16M 13508 S　　 0.9　3.3　 0:03 kdeinit<br />1804 bluher　　20　 0 16964　16M 13508 S　　 0.9　3.3　 0:03 kdeinit<br />1800 bluher　　19　 0 12260　11M 10076 S　　 0.1　2.3　 0:04 kdeinit<br />1 root　　　20　 0　 220　220　 188 S　　 0.0　0.0　 0:04 init<br />...<br /><br /><b>关闭</b><br />看来应该以 shutdown 命令来结束本次讨论。与本文以及上一篇文章中所讨论的许多命令一样，通常有一种 GUI 形式的替代方法可以关闭您的系统。但是，当您需要手动关闭时，您可以使用以下命令立即进行关闭： <br />$ shutdown -h now <br /><br />您可以使用以下命令手动地重新启动系统： <br />$ shutdown -r now <br /><br />注意这两个命令都需要指定时间。您可以指定 "now" 或使用带有时间秒数的 -t 选项。 </font>
		</div>
<img src ="http://www.blogjava.net/liaojiyong/aggbug/94645.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liaojiyong/" target="_blank">liaojiyong</a> 2007-01-18 15:04 <a href="http://www.blogjava.net/liaojiyong/archive/2007/01/18/94645.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>