﻿<?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>IT博客-System Administration Center-随笔分类-0 随笔</title><link>http://www.cnitblog.com/sysop/category/6538.html</link><description>It's so hard to say 'just for fun'.</description><language>zh-cn</language><lastBuildDate>Wed, 28 Sep 2011 22:04:38 GMT</lastBuildDate><pubDate>Wed, 28 Sep 2011 22:04:38 GMT</pubDate><ttl>60</ttl><item><title>shell edit command</title><link>http://www.cnitblog.com/sysop/archive/2009/03/16/55460.html</link><dc:creator>SYSOP</dc:creator><author>SYSOP</author><pubDate>Mon, 16 Mar 2009 04:14:00 GMT</pubDate><guid>http://www.cnitblog.com/sysop/archive/2009/03/16/55460.html</guid><description><![CDATA[shell edit command，referrenced from the belowing articles:<div><span  style="font-family: helvetica; font-size: 20px; font-weight: bold; line-height: 24px; ">G<small>etting</small>&#160;S<small>tarted with</small>&#160;BASH&#160;</span><br></div><div><span  style="font-family: helvetica; font-size: 20px; font-weight: bold; line-height: 24px;"><a href="http://www.hypexr.org/bash_tutorial.php#vi">http://www.hypexr.org/bash_tutorial.php#vi</a><br></span></div><div><span  style="font-family: helvetica; font-size: 20px; font-weight: bold; line-height: 24px;"><span  style="color: rgb(0, 0, 128); font-family: 'times new roman'; font-size: 24px; line-height: normal; -webkit-border-horizontal-spacing: 8px; -webkit-border-vertical-spacing: 8px; ">Using history and command line editing</span><br></span></div><div><span  style="color: rgb(0, 0, 128); font-family: 'times new roman'; font-size: 24px; font-weight: bold; -webkit-border-horizontal-spacing: 8px; -webkit-border-vertical-spacing: 8px;"><a href="http://www.kingcomputerservices.com/unix_101/using_history_and_command_line_editing.htm">http://www.kingcomputerservices.com/unix_101/using_history_and_command_line_editing.htm</a><br></span></div><img src ="http://www.cnitblog.com/sysop/aggbug/55460.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/sysop/" target="_blank">SYSOP</a> 2009-03-16 12:14 <a href="http://www.cnitblog.com/sysop/archive/2009/03/16/55460.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux 技巧：让进程在后台可靠运行的几种方法</title><link>http://www.cnitblog.com/sysop/archive/2008/12/09/52379.html</link><dc:creator>SYSOP</dc:creator><author>SYSOP</author><pubDate>Tue, 09 Dec 2008 06:22:00 GMT</pubDate><guid>http://www.cnitblog.com/sysop/archive/2008/12/09/52379.html</guid><description><![CDATA[<p>参见</p>
<p><a href="http://www.ibm.com/developerworks/cn/linux/l-cn-nohup/index.html">http://www.ibm.com/developerworks/cn/linux/l-cn-nohup/index.html</a></p>
<img src ="http://www.cnitblog.com/sysop/aggbug/52379.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/sysop/" target="_blank">SYSOP</a> 2008-12-09 14:22 <a href="http://www.cnitblog.com/sysop/archive/2008/12/09/52379.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>推荐的 PHP 读物列表</title><link>http://www.cnitblog.com/sysop/archive/2008/11/24/51844.html</link><dc:creator>SYSOP</dc:creator><author>SYSOP</author><pubDate>Mon, 24 Nov 2008 07:21:00 GMT</pubDate><guid>http://www.cnitblog.com/sysop/archive/2008/11/24/51844.html</guid><description><![CDATA[<blockquote>
<p>这是一份 IBM 的 Web 应用程序开发人员编写的 PHP 读物列表，适合程序员和管理员学习 PHP（超文本预处理器）。</p>
<p><a href="http://www.ibm.com/developerworks/cn/opensource/os-php-read/#overview">http://www.ibm.com/developerworks/cn/opensource/os-php-read/#overview</a></p>
</blockquote>
<img src ="http://www.cnitblog.com/sysop/aggbug/51844.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/sysop/" target="_blank">SYSOP</a> 2008-11-24 15:21 <a href="http://www.cnitblog.com/sysop/archive/2008/11/24/51844.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux I/O重定向的一些小技巧</title><link>http://www.cnitblog.com/sysop/archive/2008/11/06/51144.html</link><dc:creator>SYSOP</dc:creator><author>SYSOP</author><pubDate>Thu, 06 Nov 2008 09:53:00 GMT</pubDate><guid>http://www.cnitblog.com/sysop/archive/2008/11/06/51144.html</guid><description><![CDATA[<table cellSpacing=0 cellPadding=0 width="100%" border=0>
    <tbody>
        <tr vAlign=top>
            <td width="100%">
            <h1>技巧：Linux I/O重定向的一些小技巧</h1>
            <img class=display-img height=6 alt="" src="http://www.ibm.com/i/c.gif" width=1></td>
            <td class=no-print width=192></td>
        </tr>
    </tbody>
</table>
<table cellSpacing=0 cellPadding=0 width="100%" border=0>
    <tbody>
        <tr vAlign=top>
            <td width=10><img height=1 alt="" src="http://www.ibm.com/i/c.gif" width=10></td>
            <td width="100%">
            <p>级别： 初级</p>
            <p><a href="http://www.ibm.com/developerworks/cn/linux/l-iotips/index.html#author" cmImpressionSent="1"><font color=#5c81a7>樊奇</font></a> (<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#102;&#97;&#110;&#113;&#105;&#64;&#99;&#110;&#46;&#105;&#98;&#109;&#46;&#99;&#111;&#109;&#63;&#115;&#117;&#98;&#106;&#101;&#99;&#116;&#61;&#25216;&#24039;&#65306;&#76;&#105;&#110;&#117;&#120;&#32;&#73;&#47;&#79;&#37325;&#23450;&#21521;&#30340;&#19968;&#20123;&#23567;&#25216;&#24039;" cmImpressionSent="1"><font color=#5c81a7>fanqi@cn.ibm.com</font></a>), Xseries eServer 工程师, IBM TSS China Beijing<br></p>
            <p>2004 年 11 月 01 日</p>
            <blockquote>Linux I/O 重定向虽然很简单，但在脚本编写、系统管理时却要常常打交道，搞清其中使用技巧非常有用。</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>首先说一下什么是I/O重定向，所谓I/O重定向简单来说就是一个过程，这个过程捕捉一个文件，或者命令，程序，脚本，甚至脚本中的代码块（code block）的输出，然后把捕捉到的输出，作为输入发送给另外一个文件，命令，程序，或者脚本。</p>
            <p>如果谈到I/O重定向，就涉及到文件标识符(File Descriptor)的概念, 在Linux系统中，系统为每一个打开的文件指定一个文件标识符以便系统对文件进行跟踪，这里有些和C语言编程里的文件句柄相似，文件标识符是一个数字，不同数字代表不同的含义，默认情况下，系统占用了3个，分别是0标准输入（stdin）,1标准输出(stdout), 2标准错误(stderr), 另外3-9是保留的标识符，可以把这些标识符指定成标准输入，输出或者错误作为临时连接。通常这样可以解决很多复杂的重定向请求。</p>
            <p>标准输入通常指键盘的输入 <br>标准输出通常指显示器的输出 <br>标准错误通常也是定向到显示器 </p>
            <p>请看以下例子，来描述一下他们的关系</p>
            <table cellSpacing=0 cellPadding=0 width="100%" border=0>
                <tbody>
                    <tr>
                        <td class=code-outline>
                        <pre class=displaycode>#ls /dev
                        </pre>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br>
            <p>这个命令列出/dev目录下的所有文件，在屏幕上输出结果。</p>
            <p>这里 /dev 就是作为命令ls的标准输入（从键盘输入），而打印在屏幕的结果就是标准输出（/dev目录中的内容）</p>
            <p>还是回到标题，重定向就是把标准的输入或者输出更改成其他的方式，请参看如下例子 <br>或者等同于 </p>
            <table cellSpacing=0 cellPadding=0 width="100%" border=0>
                <tbody>
                    <tr>
                        <td class=code-outline>
                        <pre class=displaycode>#ls /dev 1&gt;filename                                  #注意："1"和"&gt;"中间没有空格
                        </pre>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br>
            <p>以上命令会把命令的标准输出重新定向到一个文件filename,而不是显示到屏幕上，如果不指明文件标识符，系统默认的就是1, 因此1可以省略</p>
            <p>如果把上面例子重的"&gt;"改成"&gt;&gt;"则表示把输出追加到filename文件的末尾，如果文件不存在则创建它。如下</p>
            <table cellSpacing=0 cellPadding=0 width="100%" border=0>
                <tbody>
                    <tr>
                        <td class=code-outline>
                        <pre class=displaycode>#ls /dev &gt;&gt;filename
                        </pre>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br>
            <p>也可以把标准错误重新定向到文件</p>
            <table cellSpacing=0 cellPadding=0 width="100%" border=0>
                <tbody>
                    <tr>
                        <td class=code-outline>
                        <pre class=displaycode>#ls -qw  /dev  2&gt;filename
                        </pre>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br>
            <p>显然 -qw是一个错误参数，通常会在显示器上报告一个错误信息，但由于把2标准错误（stderr）重新定向到了文件filename，因此显示器没有错误信息，而信息写到了文件里面</p>
            <p>以下命令是把标准输出和错误都定向到文件</p>
            <table cellSpacing=0 cellPadding=0 width="100%" border=0>
                <tbody>
                    <tr>
                        <td class=code-outline>
                        <pre class=displaycode>#ls /dev &amp;&gt;filename
                        </pre>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br>
            <p>"&amp;"在这里代表标准输出和标准错误，这里无论是正常输出还是错误信息都写到filename中了。</p>
            <p>重新定义标准输入，输出，和错误的文件标识符</p>
            <p>重新定义文件标识符可以用i&gt;&amp;j命令，表示把文件标识符i重新定向到j，你可以把"&amp;"理解为"取地址"</p>
            <p>请看以下例子</p>
            <table cellSpacing=0 cellPadding=0 width="100%" border=0>
                <tbody>
                    <tr>
                        <td class=code-outline>
                        <pre class=displaycode>#exec 5&gt;&amp;1
                        </pre>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br>
            <p>表示把文件标识符5定向到标准输出，这个命令通常用来临时保存标准输入。</p>
            <p>同样标准输入也是可以重新定向的，请参考下面例子</p>
            <table cellSpacing=0 cellPadding=0 width="100%" border=0>
                <tbody>
                    <tr>
                        <td class=code-outline>
                        <pre class=displaycode># grep search-word &lt;filename或者grep search-word 0&lt;filename
                        </pre>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br>
            <p>一般来说grep命令在给定文件中搜索字符串，以上命令把文件filename作为grep命令的标准输入，而不是从键盘输入。</p>
            <p>前面曾经提到，系统为每一个打开的文件指定一个文件标识符以便系统对文件进行跟踪，那么默认的文件标识符是什么呢？答案是0，也就是标准输入，或者可以说从键盘输入。当然这个文件标识符也可以自己指定，请参考下面例子</p>
            <table cellSpacing=0 cellPadding=0 width="100%" border=0>
                <tbody>
                    <tr>
                        <td class=code-outline>
                        <pre class=displaycode>#echo 123456789 &gt;filename   把字符串写到文件filename中
                        #exec 3&lt;&gt;filename           把文件filename打开，并指定文件标识符为3
                        #read -n 4 &lt;&amp;3              从文件中读4个字符，句柄已经指到第四个字符末尾
                        #echo -n . &gt;&amp;3              在第5个字符处写一个点，覆盖第5个字符，-n表示不换行
                        #exec 3&gt;&amp;-	          关闭文件标识符3
                        </pre>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br>
            <p>现在cat filename文件的结果就成了1234.6789</p>
            <p>命令j&lt;&gt;filename表示把文件打开，并指明文件标识符为j <br>"&amp;-"表示关闭文件标识符 </p>
            <p>有关关闭文件标识符的操作请参考下面</p>
            <table cellSpacing=0 cellPadding=0 width="100%" border=0>
                <tbody>
                    <tr>
                        <td class=code-outline>
                        <pre class=displaycode>n&lt;&amp;- 关闭输入文件标识符n
                        0&lt;&amp;-或&lt;&amp;- 关闭标准输入stdin
                        n&gt;&amp;- 关闭输出文件标识符n
                        1&gt;&amp;-或&gt;&amp;-关闭标准输出stdout
                        </pre>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br>
            <p>另外还有一些其他命令，如下参考</p>
            <table cellSpacing=0 cellPadding=0 width="100%" border=0>
                <tbody>
                    <tr>
                        <td class=code-outline>
                        <pre class=displaycode>2.	：&gt; filename 或者 &gt; filename
                        </pre>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br>
            <p>表示把文件filename设置成空，也就是清空文件内容，如果文件不存在，则创建一个空文件，（等同于touch命令） ：表示一个空输出，两个命令的唯一区别就是&gt;filename不是在所有shell都可以正常工作的。</p>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.cnitblog.com/sysop/aggbug/51144.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/sysop/" target="_blank">SYSOP</a> 2008-11-06 17:53 <a href="http://www.cnitblog.com/sysop/archive/2008/11/06/51144.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>标准、规范和概念</title><link>http://www.cnitblog.com/sysop/archive/2008/11/02/50960.html</link><dc:creator>SYSOP</dc:creator><author>SYSOP</author><pubDate>Sun, 02 Nov 2008 09:01:00 GMT</pubDate><guid>http://www.cnitblog.com/sysop/archive/2008/11/02/50960.html</guid><description><![CDATA[<p>XML 语言</p>
<p><a href="http://baike.baidu.com/view/63.htm">http://baike.baidu.com/view/63.htm</a></p>
<img src ="http://www.cnitblog.com/sysop/aggbug/50960.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/sysop/" target="_blank">SYSOP</a> 2008-11-02 17:01 <a href="http://www.cnitblog.com/sysop/archive/2008/11/02/50960.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IT博客网需要改进的地方</title><link>http://www.cnitblog.com/sysop/archive/2007/11/16/36381.html</link><dc:creator>SYSOP</dc:creator><author>SYSOP</author><pubDate>Fri, 16 Nov 2007 11:56:00 GMT</pubDate><guid>http://www.cnitblog.com/sysop/archive/2007/11/16/36381.html</guid><description><![CDATA[<p>使用IT博客网也有一段时间了，发现有一些问题需要改进。<br></p>
<ul>
    <li>文章分类和随笔分类不支持多级菜单
    <li>分类不可以随便移动顺序
    <li>没有个人log显示
    <li>编辑菜单反应速度太慢 </li>
</ul>
<p>希望这些问题能够早日得到解决，祝IT博客网越办越好！<br></p>
<p><img height=490 alt="" src="http://www.cnitblog.com/images/cnitblog_com/sysop/22.jpg" width=515 border=0></p>
<img src ="http://www.cnitblog.com/sysop/aggbug/36381.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/sysop/" target="_blank">SYSOP</a> 2007-11-16 19:56 <a href="http://www.cnitblog.com/sysop/archive/2007/11/16/36381.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>