﻿<?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>C++博客-colorful-随笔分类-ubuntu</title><link>http://www.cppblog.com/colorful/category/19148.html</link><description>zc qq:1337220912</description><language>zh-cn</language><lastBuildDate>Wed, 16 May 2012 23:09:18 GMT</lastBuildDate><pubDate>Wed, 16 May 2012 23:09:18 GMT</pubDate><ttl>60</ttl><item><title>too many files open</title><link>http://www.cppblog.com/colorful/archive/2012/05/11/174561.html</link><dc:creator>多彩人生</dc:creator><author>多彩人生</author><pubDate>Fri, 11 May 2012 06:15:00 GMT</pubDate><guid>http://www.cppblog.com/colorful/archive/2012/05/11/174561.html</guid><wfw:comment>http://www.cppblog.com/colorful/comments/174561.html</wfw:comment><comments>http://www.cppblog.com/colorful/archive/2012/05/11/174561.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/colorful/comments/commentRss/174561.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colorful/services/trackbacks/174561.html</trackback:ping><description><![CDATA[在ubuntu上开了服务端，在window上开了2000个连接去连server. 结果提示 too many files open错误:<br />解决方法是: ulimit -n 4096<br />{<br />&nbsp; 个人体会：注意，一定要在同一个terminal 下运行这个命令<br />&nbsp;&nbsp; 很容易找到这个解决方法，于是我打开了另一个terminal, 输入了这个命令，哈哈，结果当然还是不行，原来ulimit -n 4096只是改变当前terminal的&nbsp; limit<br /><div>&nbsp;&nbsp; Note this has no much relation to system max files (/proc/sys/fs/file-max).</div>}<br /><br />网上相关资料<br />-----------------------------------------------------------------------------------------------<br /><div><div><p>I had similar problem. Quick solution is :</p>  <p>ulimit -n 4096</p>  <p>explanation is as follows - each server connection is a file descriptor. In CentOS, Redhat and  Fedora, probably others, file user limit is 1024 - no idea why. It can  be easily seen when you type: ulimit -n</p>  <p>Note this has no much relation to system max files (/proc/sys/fs/file-max).</p>  <p>In my case it was problem with Redis, so I did:</p>  <p>ulimit -n 4096 redis-server -c xxxx</p>  <p>in your case instead of redis, you need to start your server.</p><p>----------------------------------------------------------------------------------------------------<br /></p><p><div><div><h1>linux下Too many open files问题</h1><div>2011-01-21 14:42:13</div></div>     <div id="note_130839374_full"><div>执行：ulimit -n<br />应该会显示默认值1024<br />执行：ulimit -n 8192<br />但是ulimit直接修改的数字，在系统重启后会重置，所以还要修改：<br />1、/etc/security/limits.conf，在里面加上：<br />* soft nofile 8192<br />* hard nofile 20480<br />2、/etc/pam.d/login，里面加上：<br />session  required  /lib/security/pam_limits.so<br /><br />----------------------------------------------------------------------------------------------------<br />ps:这个有好多知识点可以学</div></div></div><div><div> <a>linux  Too many open files in system</a>  (2008-01-25 15:12) 	 </div> <div> 分类： <a href="http://blog.chinaunix.net/space.php?uid=71225&amp;do=blog&amp;frmd=36008&amp;classid=36009&amp;view=me">AIX</a> </div> <br /> <br /> <div>登陆数据库出现错误：ORA-12537: TNS:connection closed<br />于是登陆操作系统<br />[root@CCN-BJ-3-578 ~]# su - oracle<br />su: /bin/bash: Too many open files in system<br />[root@CCN-BJ-3-578 ~]# <br />检查报警日志没有发现任何错误。</div> <div>[root@CCN-BJ-3-578 .ssh]# ulimit -a<br />core file size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (blocks, -c) 0<br />data seg size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (kbytes, -d) unlimited<br />file size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (blocks, -f) unlimited<br />pending signals&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (-i) 1024<br />max locked memory&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (kbytes, -l) 32<br />max memory size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (kbytes, -m) unlimited<br />open files&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (-n) 1024<br />pipe size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (512 bytes, -p) 8<br />POSIX message queues&nbsp;&nbsp;&nbsp;&nbsp; (bytes, -q) 819200<br />stack size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (kbytes, -s) 10240<br />cpu time&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (seconds, -t) unlimited<br />max user processes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (-u) 73728<br />virtual memory&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (kbytes, -v) unlimited<br />file locks&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (-x) unlimited<br />[root@CCN-BJ-3-578 .ssh]# <br />查看最大可以打开的文件数量<br />[root@CCN-BJ-3-578 fs]# cat /proc/sys/fs/file-max <br />65536</div> <div>查看各个进程打开的文件数据量<br />[root@CCN-BJ-3-578 home]# lsof -n |awk '{print $2 " " $3}'|sort|uniq -c |sort -nr|more<br />&nbsp; 64387 18885 oracle<br />&nbsp;&nbsp;&nbsp;&nbsp; 56 2669 oracle<br />&nbsp;&nbsp;&nbsp;&nbsp; 53 2667 oracle<br />&nbsp;&nbsp;&nbsp;&nbsp; 50 2693 oracle<br />&nbsp;&nbsp;&nbsp;&nbsp; 。。。<br />18885 明显异常</div> <div><br />[root@CCN-BJ-3-578 ~]# ps -ef|grep 18885<br />oracle&nbsp;&nbsp; 18885&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; 0 Jan24 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:19 ./linux<br />root&nbsp;&nbsp;&nbsp;&nbsp; 10241 10049&nbsp; 0 13:45 pts/2&nbsp;&nbsp;&nbsp; 00:00:00 grep 18885<br />发现oracle用户在执行一个linux文件<br />查找该文件<br />[root@CCN-BJ-3-578 home]# find / -name linux<br />/u01/app/oracle/product/10.2.0/db_1/jdk/include/linux<br />/u01/app/oracle/product/10.2.0/db_1/oui/lib/linux<br />/usr/java/jdk1.5.0_11/sample/jnlp/jreinstaller/build/linux<br />/usr/java/jdk1.5.0_11/include/linux<br />/usr/java/jdk1.5.0_11/demo/jvmti/hprof/src/linux<br />/usr/X11R6/lib/Server/include/linux<br />/usr/X11R6/lib/Server/modules/linux<br />/usr/X11R6/lib/Server/modules/drivers/linux<br />/usr/X11R6/lib/Server/modules/input/linux<br />/usr/X11R6/lib/modules/linux<br />/usr/X11R6/lib/modules/drivers/linux<br />/usr/X11R6/lib/modules/input/linux<br />/usr/share/terminfo/l/linux<br />/usr/share/doc/ntp-4.2.0.a.20040617/build/hints/linux<br />/usr/share/systemtap/runtime/relayfs/linux<br />/usr/include/linux<br />/usr/src/kernels/2.6.9-22.EL-hugemem-i686/include/linux<br />/usr/src/kernels/2.6.9-22.EL-hugemem-i686/include/config/logo/linux<br />/usr/src/kernels/2.6.9-22.EL-i686/include/linux<br />/usr/src/kernels/2.6.9-22.EL-i686/include/config/logo/linux<br />/usr/src/kernels/2.6.9-22.EL-smp-i686/include/linux<br />/usr/src/kernels/2.6.9-22.EL-smp-i686/include/config/logo/linux<br />/usr/lib/perl5/5.8.5/i386-linux-thread-multi/linux<br />/usr/lib/bcc/include/linux<br />/usr/lib/dietlibc/include/linux<br />/home/oracle/.ssh/ /linux<br />由于其它都是root用户的，可以确定是/home/oracle/.ssh/ /linux正在执行<br />[root@CCN-BJ-3-578 ~]# cd /home/oracle/.ssh/</div> <div>[root@CCN-BJ-3-578 .ssh]# cd " "<br />[root@CCN-BJ-3-578&nbsp; ]# pwd<br />/home/oracle/.ssh/ <br />[root@CCN-BJ-3-578&nbsp; ]# ll<br />总用量 1572<br />-rwxr-xr-x&nbsp; 1 oracle dba&nbsp;&nbsp;&nbsp; 188&nbsp; 1月 24 22:46 2<br />-rwxr-xr-x&nbsp; 1 oracle dba&nbsp;&nbsp;&nbsp; 188&nbsp; 1月 24 22:46 3<br />-rwxr-xr-x&nbsp; 1 oracle dba&nbsp;&nbsp;&nbsp; 188&nbsp; 1月 24 22:46 4<br />-rwxr-xr-x&nbsp; 1 oracle dba&nbsp;&nbsp; 2467 2005-02-21&nbsp; auto<br />-rwxr-xr-x&nbsp; 1 oracle dba&nbsp;&nbsp;&nbsp; 182&nbsp; 1月 24 22:46 born___.seen<br />-rwxr-xr-x&nbsp; 1 oracle dba&nbsp;&nbsp;&nbsp; 182&nbsp; 1月 24 22:46 born__.seen<br />-rwxr-xr-x&nbsp; 1 oracle dba&nbsp;&nbsp;&nbsp;&nbsp; 58&nbsp; 1月 24 22:46 born_.seen<br />-rwxr-xr-x&nbsp; 1 oracle dba 463188 2004-10-17&nbsp; darwin<br />-rwxr-xr-x&nbsp; 1 oracle dba 582960&nbsp; 1月 24 22:46 freebsd<br />-rwxr-xr-x&nbsp; 1 oracle dba&nbsp;&nbsp;&nbsp;&nbsp; 34&nbsp; 1月 24 22:46 LinkEvents<br />-rwxr-xr-x&nbsp; 1 oracle dba 497561 2005-02-21&nbsp; linux<br />-rwxr-xr-x&nbsp; 1 oracle dba&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp; 1月 25 13:00 mech.levels<br />-rwxr-xr-x&nbsp; 1 oracle dba&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6&nbsp; 1月 24 22:46 mech.pid<br />-rw-r--r--&nbsp; 1 oracle dba&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp; 1月 25 13:00 mech.session<br />-rwxr-xr-x&nbsp; 1 oracle dba&nbsp;&nbsp; 3669&nbsp; 1月 19 13:23 mech.set<br />drwxr-xr-x&nbsp; 2 oracle dba&nbsp;&nbsp; 4096&nbsp; 1月 24 22:44 randfiles<br />-rwxr-xr-x&nbsp; 1 oracle dba&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp; 1月 19 13:10 TiGeR02.seen<br />-rwxr-xr-x&nbsp; 1 oracle dba&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp; 1月 19 13:10 TiGeR03.seen<br />[root@CCN-BJ-3-578&nbsp; ]#</div> <div><br />问题原因找到。</div></div><br /></p><p><br /></p> </div></div><img src ="http://www.cppblog.com/colorful/aggbug/174561.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colorful/" target="_blank">多彩人生</a> 2012-05-11 14:15 <a href="http://www.cppblog.com/colorful/archive/2012/05/11/174561.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>16个桌面Linux用户必须要知道的Shell命令</title><link>http://www.cppblog.com/colorful/archive/2012/05/07/173882.html</link><dc:creator>多彩人生</dc:creator><author>多彩人生</author><pubDate>Mon, 07 May 2012 02:36:00 GMT</pubDate><guid>http://www.cppblog.com/colorful/archive/2012/05/07/173882.html</guid><wfw:comment>http://www.cppblog.com/colorful/comments/173882.html</wfw:comment><comments>http://www.cppblog.com/colorful/archive/2012/05/07/173882.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/colorful/comments/commentRss/173882.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colorful/services/trackbacks/173882.html</trackback:ping><description><![CDATA[<div><div><div> <h1>16个桌面Linux用户必须要知道的Shell命令</h1> <div><span>    <em id="p_attention_count">94</em>人收藏此文章, <span id="attention_it">  <a id="favor_trigger">我要收藏</a> </span></span>发表于昨天(13:19) , 已有<strong>3773</strong>次阅读 共<strong><a href="#comments">10</a></strong>个评论 </div></div> <div> <div><span style="font-size: 14px">&nbsp; &nbsp;  有些人仍然会有这中愚蠢的想法，他们认为使用Linux就必须使用Linux  shell命令。胡说！你可以不懂得任何Linux命令，比如说ps，grep，ls等，但是你仍然可以使用很多现代的Linux桌面发行版。</span>  </div> <div><span style="font-size: 14px">&nbsp;&nbsp;&nbsp;&nbsp;Linux的系统管理员与桌面用户不一样，他们不像桌面用户一样使用Cinnamon, GNOME, Unity,  或者 KDE，他们所有的时间都是用Linux命令。</span> </div> <p><span style="font-size: 14px">&nbsp;&nbsp;&nbsp;&nbsp;对于桌面用户来讲，若是了解一部分Linux命令，你可以更好的使用Linux，体验它的魅力，下面列举出了一些：</span></p> <h3><span style="font-size: 16px"><strong><span style="font-size: 18px; color: #e53333">Shell  基础：</span></strong></span></h3> <div><span style="font-size: 14px">&nbsp;&nbsp;&nbsp;&nbsp;你可以通过打开Linux的terminal（终端）来执行Shell命令。Shell的种类有很多种，例如CSH，Bourne  Shell，Korn Shell。在现在的大多数Linux发行版中，默认的Shell一般都是Bourne again shell(bash).</span>  </div> <p><span style="font-size: 14px">想看看你的Shell是哪一种，执行下面的命令</span></p> <div><span style="font-size: 14px; line-height: 21px"> <div bash"="" id="highlighter_494372"> <div "=""> <div><a viewsource"="" title="view source" style="width: 16px; height: 16px" href="#viewSource">view source</a> <div copytoclipboard"=""> </div><a printsource"="" title="print" style="width: 16px; height: 16px" href="#printSource">print</a><a about"="" title="?" style="width: 16px; height: 16px" href="#about">?</a></div></div> <div> <div alt1"=""> <table> <tbody> <tr> <td><code>1</code></td> <td><code functions"="">echo</code> <code plain"="">$SHELL</code></td></tr></tbody></table></div></div></div></span></div> <div><span style="font-size: 14px">在Linux中，$符号代表一个shell  变量。所有的shell都用这种方式使用变量。有一些shell变量在你的系统启动的时候就有了默认值。例如，$SHELL;$LOGNAME是你的登录名，而$PATH变量指明了你的shell命令的搜索范围。</span>  </div> <div><span style="font-size: 14px">echo命令的作用就是打印出你的输入。如果你的输入具有shell的特殊意义，例如shell变量，他就输出变量的值。</span>  </div> <div> <p>&nbsp;</p> <p><img title="Echo.png" style="width: 640px; height: auto; maxwidth: 640px; minmaxwidth: auto; minmaxheight: auto" alt="Echo.png" src="http://h30565.www3.hp.com/t5/image/serverpage/image-id/823i98B725B581D3B9EF/image-size/original?v=mpbl-1&amp;px=-1" align="middle" /></p></div> <div><span style="font-size: 14px">&nbsp;&nbsp;&nbsp;&nbsp;一个重要的地方是，你要注意文本的大小写。例如，ls，是DOS的dir命令的Linux版本。这个命令列出当前工作目录下的文件列表。如果你输入的是LS，你得到的只能是&#8220;找不到命令&#8221;的错误信息。</span>  </div> <div><span style="font-size: 14px">&nbsp;&nbsp;&nbsp;&nbsp;另外在Linux  shell命令中一个重要的地方是，你可以将命令串起来。这是Unix/Linux从第一天开始就有的巧妙的特点。最简单的将命令连起来的办法就是使用&#8220;|&#8221;，我们称之为&#8220;pipe&#8221;。第一个命令的输出就是下一个命令的输入。</span>  </div> <div><span style="font-size: 14px">Linux命令有自己的语法规则：</span> </div> <div><span style="font-size: 14px">基本的语法就像这样：</span> </div> <div><span style="font-size: 14px; line-height: 21px"> <div bash"="" id="highlighter_374438"> <div "=""> <div><a viewsource"="" title="view source" style="width: 16px; height: 16px" href="#viewSource">view source</a> <div copytoclipboard"=""> </div><a printsource"="" title="print" style="width: 16px; height: 16px" href="#printSource">print</a><a about"="" title="?" style="width: 16px; height: 16px" href="#about">?</a></div></div> <div> <div alt1"=""> <table> <tbody> <tr> <td><code>1</code></td> <td><code functions"="">command</code> <code plain"="">-option </code><code functions"="">file</code></td></tr></tbody></table></div></div></div></span></div> <div><span style="font-size: 14px">例如：</span> </div> <div><span style="font-size: 14px; line-height: 21px"> <div bash"="" id="highlighter_646682"> <div "=""> <div><a viewsource"="" title="view source" style="width: 16px; height: 16px" href="#viewSource">view source</a> <div copytoclipboard"=""> </div><a printsource"="" title="print" style="width: 16px; height: 16px" href="#printSource">print</a><a about"="" title="?" style="width: 16px; height: 16px" href="#about">?</a></div></div> <div> <div alt1"=""> <table> <tbody> <tr> <td><code>1</code></td> <td><code functions"="">ls</code> <code plain"="">-la</code></td></tr></tbody></table></div></div></div></span></div> <div><span style="font-size: 14px">这行命令的意义是输出当前目录的所有文件的文件名，l代表&#8220;long&#8221;，a代表&#8220;all&#8221;，有了l选项，你会发现，输出的内容比较丰富，不只包括文件名，还有文件的访问权限，所有者，所属组等。你会发现这个命令会在屏幕上输出大量的信息，如果当前目录的文件比较多的话。</span>  </div> <div><span style="font-size: 14px">现在就是&#8220;pipe&#8221;出场的时候了。</span> </div> <div><span style="font-size: 14px; line-height: 21px"> <div bash"="" id="highlighter_324557"> <div> <div><a viewsource"="" title="view source" style="width: 16px; height: 16px" href="#viewSource">view source</a> <div copytoclipboard"=""> </div><a printsource"="" title="print" style="width: 16px; height: 16px" href="#printSource">print</a><a about"="" title="?" style="width: 16px; height: 16px" href="#about">?</a></div></div> <div> <div alt1"=""> <table> <tbody> <tr> <td><code>1</code></td> <td><code functions"="">ls</code> <code plain"="">-la | </code><code functions"="">more</code></td></tr></tbody></table></div></div></div></span></div> <p><span style="font-size: 14px">你会在屏幕上看到如下信息：</span></p> <p><img title="ls-la.png" style="width: 640px; height: auto; maxwidth: 640px; minmaxwidth: auto; minmaxheight: auto" alt="ls-la.png" src="http://h30565.www3.hp.com/t5/image/serverpage/image-id/819i593B248403273523/image-size/original?v=mpbl-1&amp;px=-1" align="middle" /></p> <div><span style="font-size: 14px">&nbsp;&nbsp;&nbsp;&nbsp;你也可以在大多数Linux命令中使用通配符。通配符就是可以代表文件名中任何未知的字符或字符串。例如，*就代表任意字符串，?代表单个字符。例如：</span>  </div> <div><span style="font-size: 14px; line-height: 21px"> <div bash"="" id="highlighter_563280"> <div "=""> <div><a viewsource"="" title="view source" style="width: 16px; height: 16px" href="#viewSource">view source</a> <div copytoclipboard"=""> </div><a printsource"="" title="print" style="width: 16px; height: 16px" href="#printSource">print</a><a about"="" title="?" style="width: 16px; height: 16px" href="#about">?</a></div></div> <div> <div alt1"=""> <table> <tbody> <tr> <td><code>1</code></td> <td><code functions"="">ls</code> <code plain"="">-l  a*</code></td></tr></tbody></table></div></div></div></span></div> <div><span style="font-size: 14px">这个命令会列出在当前工作目录下所有的以小写a开头的文件，比如说abc.txt，alpha.jpg等等。</span>  </div> <div><span style="font-size: 14px; line-height: 21px"> <div bash"="" id="highlighter_796235"> <div "=""> <div><a viewsource"="" title="view source" style="width: 16px; height: 16px" href="#viewSource">view source</a> <div copytoclipboard"=""> </div><a printsource"="" title="print" style="width: 16px; height: 16px" href="#printSource">print</a><a about"="" title="?" style="width: 16px; height: 16px" href="#about">?</a></div></div> <div> <div alt1"=""> <table> <tbody> <tr> <td><code>1</code></td> <td><code functions"="">ls</code> <code plain"="">a?</code><code functions"="">cd</code></td></tr></tbody></table></div></div></div></span></div> <p><span style="font-size: 14px">&nbsp;&nbsp;&nbsp;&nbsp;这条命令会列出所有以小写a开头隔一个未知字符以小写cd结尾的所有文件。例如adcd，axcd，但是不会列出adfdcd，也不会列出axcd.txt。</span></p> <h3><strong><span style="font-size: 18px; color: #e53333">一些常用的命令</span></strong></h3> <div><span style="font-size: 14px"><strong><span style="font-size: 18px">man:</span></strong>如果你想了解每一个命令代表什么含义以及他的用法，你就可以使用man(意义为manual)命令，例如：</span>  </div> <div><span style="font-size: 14px; line-height: 21px"> <div bash"="" id="highlighter_512474"> <div "=""> <div><a viewsource"="" title="view source" style="width: 16px; height: 16px" href="#viewSource">view source</a> <div copytoclipboard"=""> </div><a printsource"="" title="print" style="width: 16px; height: 16px" href="#printSource">print</a><a about"="" title="?" style="width: 16px; height: 16px" href="#about">?</a></div></div> <div> <div alt1"=""> <table> <tbody> <tr> <td><code>1</code></td> <td><code functions"="">man</code> <code functions"="">ls</code></td></tr></tbody></table></div></div></div></span></div> <div><span style="font-size: 14px">&nbsp;&nbsp;&nbsp;&nbsp;man输出的内容是为系统管理员和开发者编写的，如果你想了解更多命令的用法，你可以去找网络上的Linux命令文档，有一个非常方便的就是丹尼尔&#183;巴雷特的Linux的袖珍指南。</span>  </div> <div><span style="font-size: 14px">在以前如果你真的想学习Linux和Unix你必须阅读man手册。而在2012年的今天，面对如此好用的图形界面，这句话显得不是那么的重要，但是如果你想了解Linux更深，阅读man手册仍然是一个好的开始。</span>  </div> <div><span style="font-size: 14px"><strong><span style="font-size: 18px">su 和sudo:</span></strong>  su命令的作用是切换用户，这也被称为超级用户，因为在有些系统中su命令可以使你以系统的所有权限用户root登录。除非你是系统管理员，否则我绝不推荐你使用su切换到root，因为这可能给你带来很多麻烦。</span>  </div> <div><span style="font-size: 14px">一个相对安全的多的办法是使用sudo命令，这个命令可以上你以root权限运行一个命令。</span> </div> <div><span style="font-size: 14px">这两个命令都需要系统密码。在大多数Linux的桌面发行版中这两个是相同的，就是你系统的第一个用户设置的密码。</span>  </div> <div><span style="font-size: 14px"><strong><span style="font-size: 18px">grep：</span></strong>grep是一种强大的文本搜索工具，它能使用正则表达式搜索文本，并把匹配的行打印出来。  例如：</span> </div> <div><span style="font-size: 14px; line-height: 21px"> <div bash"="" id="highlighter_900787"> <div "=""> <div><a viewsource"="" title="view source" style="width: 16px; height: 16px" href="#viewSource">view source</a> <div copytoclipboard"=""> </div><a printsource"="" title="print" style="width: 16px; height: 16px" href="#printSource">print</a><a about"="" title="?" style="width: 16px; height: 16px" href="#about">?</a></div></div> <div> <div alt1"=""> <table> <tbody> <tr> <td><code>1</code></td> <td><code functions"="">grep</code> <code plain"="">foo /etc/</code><code functions"="">passwd</code></td></tr></tbody></table></div></div></div></span></div> <div><span style="font-size: 14px">返回在password文件中所有的含有foo的行</span> </div> <div><span style="font-size: 14px; line-height: 21px"> <div bash"="" id="highlighter_311460"> <div "=""> <div><a viewsource"="" title="view source" style="width: 16px; height: 16px" href="#viewSource">view source</a> <div copytoclipboard"=""> </div><a printsource"="" title="print" style="width: 16px; height: 16px" href="#printSource">print</a><a about"="" title="?" style="width: 16px; height: 16px" href="#about">?</a></div></div> <div> <div alt1"=""> <table> <tbody> <tr> <td><code>1</code></td> <td><code functions"="">grep</code> <code plain"="">-i </code><code string"="">"foo"</code> <code plain"="">/etc/</code><code functions"="">passwd</code></td></tr></tbody></table></div></div></div></span></div> <div><span style="font-size: 14px">-i选项是忽略大小写，这就意味着若某一行含有FOO或FOo也会被搜索到。</span> </div> <div><span style="font-size: 14px">grep还支持递归搜索：</span> </div> <div><span style="font-size: 14px; line-height: 21px"> <div bash"="" id="highlighter_415830"> <div "=""> <div><a viewsource"="" title="view source" style="width: 16px; height: 16px" href="#viewSource">view source</a> <div copytoclipboard"=""> </div><a printsource"="" title="print" style="width: 16px; height: 16px" href="#printSource">print</a><a about"="" title="?" style="width: 16px; height: 16px" href="#about">?</a></div></div> <div> <div alt1"=""> <table> <tbody> <tr> <td><code>1</code></td> <td><code functions"="">grep</code> <code plain"="">-r </code><code string"="">"foo"</code> <code plain"="">/home/sjvn</code></td></tr></tbody></table></div></div></div></span></div> <div><span style="font-size: 14px">这条命令将会搜索/home/sjvn目录及其子目录下所有的包含&#8220;foo&#8221;的行</span> </div> <div><span style="font-size: 14px">grep也通常与其他命令串连起来使用，例如：</span> </div> <div><span style="font-size: 14px; line-height: 21px"> <div bash"="" id="highlighter_554806"> <div "=""> <div><a viewsource"="" title="view source" style="width: 16px; height: 16px" href="#viewSource">view source</a> <div copytoclipboard"=""> </div><a printsource"="" title="print" style="width: 16px; height: 16px" href="#printSource">print</a><a about"="" title="?" style="width: 16px; height: 16px" href="#about">?</a></div></div> <div> <div alt1"=""> <table> <tbody> <tr> <td><code>1</code></td> <td><code functions"="">ls</code> <code plain"="">-la | </code><code functions"="">grep</code> <code plain"="">foo*</code></td></tr></tbody></table></div></div></div></span></div> <div><span style="font-size: 14px">列出当前目录下任何以foo开头的文件或目录。例如如下文件将被匹配：foo，foobar，foolish.txt等等。</span>  </div> <div><span style="font-size: 14px"><span style="font-size: 18px"><strong>ps：</strong></span>报告进程的状态。此命令将显示哪些程序正在运行。我使用PS和grep比其他任何命令使用的都要多。&nbsp;</span>  </div> <div><span style="font-size: 14px">现在假如你有一个程序运行出了错误，你不能再桌面上把他关掉，（我看准你了，火狐），我运行如下命令就能查看他的进程id：</span>  </div> <div><span style="font-size: 14px; line-height: 21px"> <div bash"="" id="highlighter_815613"> <div "=""> <div><a viewsource"="" title="view source" style="width: 16px; height: 16px" href="#viewSource">view source</a> <div copytoclipboard"=""> </div><a printsource"="" title="print" style="width: 16px; height: 16px" href="#printSource">print</a><a about"="" title="?" style="width: 16px; height: 16px" href="#about">?</a></div></div> <div> <div alt1"=""> <table> <tbody> <tr> <td><code>1</code></td> <td><code functions"="">ps</code> <code plain"="">-ef | </code><code functions"="">grep</code> <code plain"="">firefox</code></td></tr></tbody></table></div></div></div></span></div> <div><span style="font-size: 14px">这条命令做了如下事情: <div bash"="" id="highlighter_911065"> <div "=""> <div><a viewsource"="" title="view source" style="width: 16px; height: 16px" href="#viewSource">view source</a> <div copytoclipboard"=""> </div><a printsource"="" title="print" style="width: 16px; height: 16px" href="#printSource">print</a><a about"="" title="?" style="width: 16px; height: 16px" href="#about">?</a></div></div> <div> <div alt1"=""> <table> <tbody> <tr> <td><code>1</code></td> <td><code functions"="">kill</code> <code plain"="">-9  1234</code></td></tr></tbody></table></div></div></div></span></div> <div><span style="font-size: 14px">&#183;第一，他找出所有当前在我的电脑上运行的程序</span> </div> <div><span style="font-size: 14px">&#183;然后grep命令找出这些文件中叫&#8220;firefox&#8221;的，显示到屏幕上。</span> </div> <div><span style="font-size: 14px">&#183;每一行都有一个进程id数字。有了，现在我就可以是用...</span> </div> <div><span style="font-size: 14px"><strong><span style="font-size: 18px">kill：</span></strong>这条命令就想他的名字一样，他可以干掉指定的进程。干掉运行错误的firefox或者其他我想干掉的进程。</span>  </div> <div><span style="font-size: 14px; line-height: 21px"> <div bash"="" id="highlighter_913351"> <div "=""> <div><a viewsource"="" title="view source" style="width: 16px; height: 16px" href="#viewSource">view source</a> <div copytoclipboard"=""> </div><a printsource"="" title="print" style="width: 16px; height: 16px" href="#printSource">print</a><a about"="" title="?" style="width: 16px; height: 16px" href="#about">?</a></div></div> <div> <div alt1"=""> <table> <tbody> <tr> <td><code>1</code></td> <td><code functions"="">kill</code> <code plain"="">1234</code></td></tr></tbody></table></div></div></div></span></div> <div><span style="font-size: 14px">这将会干掉所有进程id为1234的程序。为了确保这个程序已经被干掉（强行终止），我使用下面的命令</span>  </div> <div><span style="font-size: 14px; line-height: 21px"><br /></span></div> <div><span style="font-size: 14px"><strong><span style="font-size: 18px">clear:  &nbsp;</span></strong>如果你觉得你的屏幕上有太多的东西，看起来很讨厌，可以使用clear命令清空。</span> </div> <h3><span style="font-size: 24px; color: #e53333"><strong><span style="font-size: 18px">文件/目录命令</span></strong></span></h3> <div><span style="font-size: 14px"><span style="font-size: 18px"><strong>cp:</strong></span>cp代表copy，就是复制，他可以复制一个或多个文件到指定的一个或多个目录下。</span>  </div> <div><span style="font-size: 14px">一个通常的用法是：</span> </div> <div><span style="font-size: 14px; line-height: 21px"> <div bash"="" id="highlighter_226930"> <div "=""> <div><a viewsource"="" title="view source" style="width: 16px; height: 16px" href="#viewSource">view source</a> <div copytoclipboard"=""> </div><a printsource"="" title="print" style="width: 16px; height: 16px" href="#printSource">print</a><a about"="" title="?" style="width: 16px; height: 16px" href="#about">?</a></div></div> <div> <div alt1"=""> <table> <tbody> <tr> <td><code>1</code></td> <td><code functions"="">cp</code> <code plain"="">fred.txt  ethel.txt</code></td></tr></tbody></table></div></div></div></span></div> <div><span style="font-size: 14px">把fred.txt中的内容复制到当前文件夹中名为ethel.txt中</span> </div> <div><span style="font-size: 14px; line-height: 21px"> <div bash"="" id="highlighter_236390"> <div> <div><a viewsource"="" title="view source" style="width: 16px; height: 16px" href="#viewSource">view source</a> <div copytoclipboard"=""> </div><a printsource"="" title="print" style="width: 16px; height: 16px" href="#printSource">print</a><a about"="" title="?" style="width: 16px; height: 16px" href="#about">?</a></div></div> <div> <div alt1"=""> <table> <tbody> <tr> <td><code>1</code></td> <td><code functions"="">cp</code> <code plain"="">fred.txt  /home/sjvn/docs/fred.txt</code></td></tr></tbody></table></div></div></div></span></div> <div><span style="font-size: 14px">把fred.txt复制到指定文件中。</span> </div> <div><span style="font-size: 14px; line-height: 21px"> <div bash"="" id="highlighter_998713"> <div "=""> <div><a viewsource"="" title="view source" style="width: 16px; height: 16px" href="#viewSource">view source</a> <div copytoclipboard"=""> </div><a printsource"="" title="print" style="width: 16px; height: 16px" href="#printSource">print</a><a about"="" title="?" style="width: 16px; height: 16px" href="#about">?</a></div></div> <div> <div alt1"=""> <table> <tbody> <tr> <td><code>1</code></td> <td><code functions"="">cp</code> <code plain"="">*.txt&nbsp;  /home/sjvn/docs/</code></td></tr></tbody></table></div></div></div></span></div> <div><span style="font-size: 14px">复制当前目录下所有以.txt结尾的文件到指定的目录下。</span> </div> <div><span style="font-size: 14px; line-height: 21px"> <div bash"="" id="highlighter_398043"> <div "=""> <div><a viewsource"="" title="view source" style="width: 16px; height: 16px" href="#viewSource">view source</a> <div copytoclipboard"=""> </div><a printsource"="" title="print" style="width: 16px; height: 16px" href="#printSource">print</a><a about"="" title="?" style="width: 16px; height: 16px" href="#about">?</a></div></div> <div> <div alt1"=""> <table> <tbody> <tr> <td><code>1</code></td> <td><code functions"="">cp</code> <code plain"="">-r /home/sjvn/docs/*  /home/sjvn/backup</code></td></tr></tbody></table></div></div></div></span></div> <div><span style="font-size: 14px">递归的复制在/home/sjvn/docs/目录下的所有文件到指定的文件夹。</span> </div> <div><span style="font-size: 14px"><strong><span style="font-size: 18px">hostname: </span></strong>显示你当前登录进去的计算机的名称。</span> </div> <div><span style="font-size: 14px"><strong><span style="font-size: 18px">mv：</span></strong>mv（意义为move）顾名思义就是移动，可以移动指定文件到指定位置。当然这个命令有的时候还可以用来实现重命名。</span>  </div> <div><span style="font-size: 14px">例如：</span> </div> <div><span style="font-size: 14px; line-height: 21px"> <div bash"="" id="highlighter_809058"> <div> <div><a viewsource"="" title="view source" style="width: 16px; height: 16px" href="#viewSource">view source</a> <div copytoclipboard"=""> </div><a printsource"="" title="print" style="width: 16px; height: 16px" href="#printSource">print</a><a about"="" title="?" style="width: 16px; height: 16px" href="#about">?</a></div></div> <div> <div alt1"=""> <table> <tbody> <tr> <td><code>1</code></td> <td><code functions"="">mv</code> <code plain"="">fred.txt  ethel.txt</code></td></tr></tbody></table></div></div></div></span></div> <div><span style="font-size: 14px">这条命令的作用你可以简单的认为是重命名fred.txt为ethel.txt。</span> </div> <div><span style="font-size: 14px">当然此命令还有其他用法，此处不再一一罗列，用法与cp类似，只是这条命令不再保留原文件。</span> </div> <div><span style="font-size: 14px">rm:rm代表remove，是删除的意思，所以我运行：</span> </div> <div><span style="font-size: 14px; line-height: 21px"> <div bash"="" id="highlighter_401774"> <div> <div><a viewsource"="" title="view source" style="width: 16px; height: 16px" href="#viewSource">view source</a> <div copytoclipboard"=""> </div><a printsource"="" title="print" style="width: 16px; height: 16px" href="#printSource">print</a><a about"="" title="?" style="width: 16px; height: 16px" href="#about">?</a></div></div> <div> <div alt1"=""> <table> <tbody> <tr> <td><code>1</code></td> <td><code functions"="">rm</code> <code plain"="">fred.txt</code></td></tr></tbody></table></div></div></div></span></div> <div><span style="font-size: 14px">我将删除fred.txt。</span> </div> <div><span style="font-size: 14px">我强烈推荐你在执行rm命令的时候使用-i选项。这儿选项将在你执行命令的时候询问你是否要真的删除文件。就像这样：</span>  </div> <div bash"="" id="highlighter_802499"> <div "=""> <div><a viewsource"="" title="view source" style="width: 16px; height: 16px" href="#viewSource">view source</a> <div copytoclipboard"=""> </div><a printsource"="" title="print" style="width: 16px; height: 16px" href="#printSource">print</a><a about"="" title="?" style="width: 16px; height: 16px" href="#about">?</a></div></div> <div> <div alt1"=""> <table> <tbody> <tr> <td><code>1</code></td> <td><code functions"="">rm</code> <code plain"="">-i  fred.txt</code></td></tr></tbody></table></div></div></div> <h3><span style="font-size: 24px; color: #e53333"><strong><span style="font-size: 18px">系统信息</span></strong></span></h3> <p><span style="font-size: 14px"><span style="font-size: 18px"><strong>uname:  </strong></span>uname  -a命令用一行简短的给你总结的电脑的基本信息。这通常包括你的电脑名称，Linux内核版本，你的发行版名称等。</span></p> <p><img title="uname-a.png" style="width: 640px; height: auto; maxwidth: 640px; minmaxwidth: auto; minmaxheight: auto" alt="uname-a.png" src="http://h30565.www3.hp.com/t5/image/serverpage/image-id/825i4EA8C27F8E74580C/image-size/original?v=mpbl-1&amp;px=-1" align="middle" /></p> <div><span style="font-size: 14px">对于更详细的信息，你可以使用cat命令，他可以显示你的Linux电脑中的文本信息。</span> </div> <div><span style="font-size: 14px"> <div bash"="" id="highlighter_585401"> <div> <div><a viewsource"="" title="view source" style="width: 16px; height: 16px" href="#viewSource">view source</a> <div copytoclipboard"=""> </div><a printsource"="" title="print" style="width: 16px; height: 16px" href="#printSource">print</a><a about"="" title="?" style="width: 16px; height: 16px" href="#about">?</a></div></div> <div> <div alt1"=""> <table> <tbody> <tr> <td><code>1</code></td> <td><code functions"="">cat</code> <code plain"="">/proc/cpuinfo</code></td></tr></tbody></table></div></div></div>&nbsp;展示你的CPU的重要的统计。</span>  </div> <div><span style="font-size: 14px"> <div bash"="" id="highlighter_672130"> <div> <div><a viewsource"="" title="view source" style="width: 16px; height: 16px" href="#viewSource">view source</a> <div copytoclipboard"=""> </div><a printsource"="" title="print" style="width: 16px; height: 16px" href="#printSource">print</a><a about"="" title="?" style="width: 16px; height: 16px" href="#about">?</a></div></div> <div> <div alt1"=""> <table> <tbody> <tr> <td><code>1</code></td> <td><code functions"="">cat</code> <code plain"="">/proc/version</code></td></tr></tbody></table></div></div></div>展示你的当前运行的Linux发行版的详细信息。</span>  </div> <div><span style="font-size: 14px"> <div bash"="" id="highlighter_247091"> <div "=""> <div><a viewsource"="" title="view source" style="width: 16px; height: 16px" href="#viewSource">view source</a> <div copytoclipboard"=""> </div><a printsource"="" title="print" style="width: 16px; height: 16px" href="#printSource">print</a><a about"="" title="?" style="width: 16px; height: 16px" href="#about">?</a></div></div> <div> <div alt1"=""> <table> <tbody> <tr> <td><code>1</code></td> <td><code functions"="">cat</code> <code plain"="">/etc/</code><code functions"="">printcap</code></td></tr></tbody></table></div></div></div>&nbsp;展示你当前安装的打印机。</span>  </div> <div><span style="font-size: 14px"> <div bash"="" id="highlighter_952132"> <div "=""> <div><a viewsource"="" title="view source" style="width: 16px; height: 16px" href="#viewSource">view source</a> <div copytoclipboard"=""> </div><a printsource"="" title="print" style="width: 16px; height: 16px" href="#printSource">print</a><a about"="" title="?" style="width: 16px; height: 16px" href="#about">?</a></div></div> <div> <div alt1"=""> <table> <tbody> <tr> <td><code>1</code></td> <td><code functions"="">set</code> <code plain"="">| </code><code functions"="">more</code><code plain"="">: </code><code functions"="">set</code><code plain"="">|</code><code functions"="">more</code></td></tr></tbody></table></div></div></div>组合命令可以给你更多的呢当前的桌面环境变量的信息。单如果你只是想知道你系统环境变量中的某一个或两个，可以执行如下命令：</span>  </div> <div bash"="" id="highlighter_493593"> <div "=""> <div><a viewsource"="" title="view source" style="width: 16px; height: 16px" href="#viewSource">view source</a> <div copytoclipboard"=""> </div><a printsource"="" title="print" style="width: 16px; height: 16px" href="#printSource">print</a><a about"="" title="?" style="width: 16px; height: 16px" href="#about">?</a></div></div> <div> <div alt1"=""> <table> <tbody> <tr> <td><code>1</code></td> <td><code functions"="">echo</code> <code plain"="">$PATH</code></td></tr></tbody></table></div></div></div> <h3><span style="font-size: 14px"><strong><span style="font-size: 18px; color: #e53333">结束或者说是另一个开始</span></strong></span></h3> <div><span style="font-size: 14px">&nbsp;  &nbsp;这里给你展示的只不过是Linux命令的表皮。成百上千的书和网站可以给你更多更复杂的如何使用Linux命令的展示。本文只是让你在想了解比Linux  Gui更深一层时的参考。</span> </div> <p><span style="font-size: 14px">如果你想学习更多的关于LInux，推荐你去LinuxCommand.org或者看一看Linux in a  Nutshell。如果你想变成一个Linux shell编程的大事，推荐你去学习卡梅伦纽汉姆的 Learning the bash Shell  。</span></p></div></div></div><img src ="http://www.cppblog.com/colorful/aggbug/173882.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colorful/" target="_blank">多彩人生</a> 2012-05-07 10:36 <a href="http://www.cppblog.com/colorful/archive/2012/05/07/173882.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>pkg-config的用法 </title><link>http://www.cppblog.com/colorful/archive/2012/05/05/173750.html</link><dc:creator>多彩人生</dc:creator><author>多彩人生</author><pubDate>Sat, 05 May 2012 08:29:00 GMT</pubDate><guid>http://www.cppblog.com/colorful/archive/2012/05/05/173750.html</guid><wfw:comment>http://www.cppblog.com/colorful/comments/173750.html</wfw:comment><comments>http://www.cppblog.com/colorful/archive/2012/05/05/173750.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/colorful/comments/commentRss/173750.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colorful/services/trackbacks/173750.html</trackback:ping><description><![CDATA[<div><h4><strong style="color: black; background-color: #ffff66;">pkg-config</strong></h4><div style="font-weight: bold;"><span style="color: black; background-color: #ffff66;">pkg-config</span>程序是干什么用的？简单的说就是向用户向程序提供相应库的路径、版本号等信息的程序。</div> <div>譬如说我们运行以下命令：<br /><span style="font-weight: bold; color: #0000ff;">pkg-config&nbsp; 查看gcc的CFLAGS参数</span></div>  <div>$<strong style="color: #ff0000; background-color: #ffff66; font-weight: bold;">pkg-config</strong><span style="color: #ff0000; font-weight: bold;"> --libs --cflags opencv</span></div>  <div>会显示如下信息：</div>  <div>-I/usr/include/opencv -lcxcore -lcv -lhighgui -lcvaux</div>  <div>各位看官，你看这不就是我们用gcc编译连接时CFLAGS的参数吗？</div>  <div>因此当我们需要编译连接某个库时，我们只需要把上面那行加入gcc 的参数里面即可。</div>  <div>这也是configure的作用，它会检查你需要的包，产生相应的信息。</div>  <div style="font-weight: bold;">那<span style="color: black; background-color: #ffff66;">pkg-config</span>从哪儿知道这些信息的呢？它是从包名为xxx.pc这个文件中查找到的。拿上面那个例子说，它是从opencv.pc这个文件中查知的。</div> <div>那<strong style="color: black; background-color: #ffff66;">pkg-config</strong> 又怎么会知道opencv.pc这个文件呢？</div>  <div style="font-weight: bold;">下面我们看一下<span style="color: black; background-color: #ffff66;">pkg-config</span>是怎样工作的。</div> <div><span style="font-weight: bold; color: #800000;">缺省情况下，</span><strong style="color: #800000; background-color: #ffff66; font-weight: bold;">pkg-config</strong><span style="font-weight: bold; color: #800000;">首 先在prefix/lib/pkgconfig/中查找相关包（譬如opencv）对应的相应的文件（opencv.pc）。在linux上上述路径名为 /usr/lib/pkconfig/。若是没有找到，它也会到PKG_CONFIG_PATH这个环境变量所指定的路径下去找。若是没有找到，它就会报 错</span>，例如：</div> <div>Package opencv was not found in the <strong style="color: black; background-color: #ffff66;">pkg-config</strong> search path.<br />Perhaps you should add the directory containing `opencv.pc'<br />to the PKG_CONFIG_PATH environment variable<br />No package 'opencv' found</div><br /><div style="font-weight: bold;">设置环境变量PKG_CONFIG_PATH方法举例如下：</div> <div><span style="font-weight: bold;">export PKG_CONFIG_PATH=/cv/lib:$PKG_CONFIG_PATH</span><br /><br />================================================================<br /><span style="font-weight: bold;">查看一个.pc文件的内容：</span><br />[root@yx pkgconfig]#<span style="font-weight: bold;"> cat glib-2.0.pc </span><br />prefix=/usr<br />exec_prefix=/usr<br />libdir=/lib<br />includedir=/usr/include<br />configexecincludedir=/usr/lib/glib-2.0/include<br /><br />glib_genmarshal=glib-genmarshal<br />gobject_query=gobject-query<br />glib_mkenums=glib-mkenums<br /><br />Name: GLib<br />Description: C Utility Library<br />Version: 2.12.3<br />Libs: -L${libdir} -lglib-2.0&nbsp; <br />Cflags: -I${includedir}/glib-2.0 -I${configexecincludedir}<br /><br />[root@yx pkgconfig]# pwd<br />/usr/lib/pkgconfig<br /><br style="font-weight: bold;" /><span style="font-weight: bold;">可见.pc文件 是对其的库文件路径，头</span><span style="font-weight: bold;">文件路径，</span><span style="font-weight: bold;">版本号，Cflags等一些参数进行封装。<br /><br /><span style="color: #0000ff;">再来看看第一个Gtk+程序里的</span></span><span style="font-weight: bold; color: #0000ff;"> `pkg-config&nbsp;&nbsp; --cflags&nbsp;&nbsp; --libs&nbsp; gtk+-2.0`意思： </span><br /><span><span style="font-weight: bold; color: #0000ff;">`pkg-config&nbsp;&nbsp; --cflags&nbsp;&nbsp; --libs&nbsp; gtk+-2.0` 是pkg-config从路径/usr/lib/pkgconfig<br />/gtk+-2.0.pc中提取出来的用于编译用的。</span></span><br />[root@yx pkgconfig]# cat&nbsp; gtk+-2.0.pc <br />prefix=/usr<br />exec_prefix=/usr<br />libdir=/usr/lib<br />includedir=/usr/include<br />target=x11<br /><br />gtk_binary_version=2.10.0<br />gtk_host=i686-redhat-linux-gnu<br /><br />Name: GTK+<br />Description: GIMP Tool Kit (${target} target)<br />Version: 2.10.4<br />Requires: gdk-${target}-2.0 atk cairo<br /><span style="font-weight: bold;">Libs: -L${libdir} -lgtk-${target}-2.0 </span><br style="font-weight: bold;" /><span style="font-weight: bold;">Cflags: -I${includedir}/gtk-2.0 </span><br /><span style="font-weight: bold;"><br />显然，出可以自己来指定为：-L/usr/lib&nbsp; -lgtk-{target}-2.0&nbsp; -I/usr/include/gtk-2.0</span><br style="font-weight: bold;" /><span style="font-weight: bold;">下面来看一下{target}该是多少：</span><br /><br />[root@yx lib]# ls gt<br />gthumb/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold;">gtk-2.0/</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gtkhtml/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />gtk/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold;">gtk-sharp-2.0/ </span>gtkmm-2.4/&nbsp;&nbsp;&nbsp;&nbsp; <br /><br />[root@yx lib]# ls gtk-2.0/<br />2.10.0&nbsp; 2.4.0&nbsp; immodules&nbsp; include&nbsp; modules<br /><br />[root@yx lib]# ls gtk-sharp-2.0/<br />gconfsharp-schemagen.exe<br /><br />[root@yx lib]# pwd<br />/usr/lib<br />所以认为<span style="font-weight: bold;">-lgtk-{target}-2.0中的</span><span style="font-weight: bold;">{target}该是空字符:&nbsp; <br /></span><span style="font-weight: bold;">-lgtk-{target}-2.0====&gt;</span><span style="font-weight: bold;">-lgtk--2.0<br /><br />At Last So:（理论大致上：）<br /></span><span style="font-weight: bold;">-L/usr/lib&nbsp; -lgtk-{target}-2.0&nbsp; -I/usr/include/gtk-2.0&nbsp; ====&gt;<br /></span><span style="color: #ff6600;">-L/usr/lib&nbsp; -lgtk--2.0</span><span style="font-weight: bold;">&nbsp; <span style="color: #800000;">-I/usr/include/gtk-2.0</span></span><br /><span style="font-weight: bold;">而实际上更多些：<br />对比pkg-config对gtk+-2.0看实际效果：<br /></span>[yuxu@yx base]$ pkg-config&nbsp; --cflags&nbsp; --libs&nbsp; gtk+-2.0<br /><span style="font-weight: bold; color: #800000;">-I/usr/include/gtk-2.0</span>&nbsp; <span style="font-weight: bold; color: #ff6600;">-I/usr/lib/gtk-2.0/include</span>  -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0  -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include  -I/usr/include/freetype2 -I/usr/include/libpng12&nbsp; -L/lib -lgtk-x11-2.0  -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0  -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0&nbsp; <br />后面还有很多的路径哦。<br /><br /><span style="font-weight: bold;"><br /><br /><br /></span><span style="font-weight: bold;">gtk_base.c:</span><br />#include &lt;gtk/gtk.h&gt;<br />int main(int argc,char *argv[])<br />{<br />&nbsp;&nbsp; &nbsp;GtkWidget&nbsp; *window;<br />&nbsp;&nbsp; &nbsp;gtk_init(&amp;argc,&amp;argv);<br />&nbsp;&nbsp; &nbsp;window = gtk_window_new(GTK_WINDOW_TOPLEVEL);<br />&nbsp;&nbsp; &nbsp;gtk_widget_show(window);<br />&nbsp;&nbsp; &nbsp;gtk_main();<br />&nbsp;&nbsp; &nbsp;return FALSE;<br />}<br /><br /><span style="font-weight: bold;">gcc&nbsp;&nbsp; -o&nbsp;&nbsp;&nbsp;&nbsp; gtk_base&nbsp; &nbsp;&nbsp;&nbsp; gtk_base.c&nbsp;&nbsp;&nbsp;<span style="color: #ff0000;"> <span style="color: #000000;">`</span></span>pkg-config&nbsp;&nbsp; --cflags&nbsp;&nbsp; --libs&nbsp; gtk+-2.0<span style="color: #0000ff;">`</span></span> </div></div><img src ="http://www.cppblog.com/colorful/aggbug/173750.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colorful/" target="_blank">多彩人生</a> 2012-05-05 16:29 <a href="http://www.cppblog.com/colorful/archive/2012/05/05/173750.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tftp服务</title><link>http://www.cppblog.com/colorful/archive/2012/05/04/173668.html</link><dc:creator>多彩人生</dc:creator><author>多彩人生</author><pubDate>Fri, 04 May 2012 09:15:00 GMT</pubDate><guid>http://www.cppblog.com/colorful/archive/2012/05/04/173668.html</guid><wfw:comment>http://www.cppblog.com/colorful/comments/173668.html</wfw:comment><comments>http://www.cppblog.com/colorful/archive/2012/05/04/173668.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/colorful/comments/commentRss/173668.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colorful/services/trackbacks/173668.html</trackback:ping><description><![CDATA[1、安装相关软件包 <br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  apt-get install tftpd （服务端）<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  apt-get install tftp （客户端） <br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  apt-get install xinetd <br /> <br /> 2、建立配置文件<br /> &nbsp;&nbsp;&nbsp;&nbsp;  sudo gedit  /etc/xinetd.d/tftp<br /> &nbsp;&nbsp;&nbsp;&nbsp;  输入:<br /> &nbsp;&nbsp;&nbsp;&nbsp;  service tftp<br /> &nbsp;&nbsp;&nbsp;&nbsp;  {<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  socket_type = dgram<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  protocol = udp<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  wait = yes<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  user = root<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  server = /usr/sbin/in.tftpd<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  server_args = -s /home/xxx/tftproot&nbsp;&nbsp;&nbsp;  <em>指定tfpt的文件目录</em><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  disable = no<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  per_source = 11<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  cps = 100 2<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  flags = IPv4<br /> &nbsp;&nbsp;&nbsp;&nbsp;  }<br /> <br /> 3、建立tftp服务文件目录<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  mkdir /home/xxx/tftproot<br /> <br /> 4、重新启动服务<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /etc/init.d/xinetd restart<br /> <br /> 5、安装完成，测试方法：<br /> 在/home/xxx/tftproot目录下放任意文件&#8220;hello&#8221;<br /> 然后 运行<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  tftp localhost <br /> 进入tftp命令行，输入<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  get hello /home/xxx/hello<br /> 看看是不是在/home/xxx有hello这个文件<img src ="http://www.cppblog.com/colorful/aggbug/173668.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colorful/" target="_blank">多彩人生</a> 2012-05-04 17:15 <a href="http://www.cppblog.com/colorful/archive/2012/05/04/173668.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>boost 安装 ubuntu下</title><link>http://www.cppblog.com/colorful/archive/2012/05/02/173428.html</link><dc:creator>多彩人生</dc:creator><author>多彩人生</author><pubDate>Wed, 02 May 2012 01:49:00 GMT</pubDate><guid>http://www.cppblog.com/colorful/archive/2012/05/02/173428.html</guid><wfw:comment>http://www.cppblog.com/colorful/comments/173428.html</wfw:comment><comments>http://www.cppblog.com/colorful/archive/2012/05/02/173428.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/colorful/comments/commentRss/173428.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colorful/services/trackbacks/173428.html</trackback:ping><description><![CDATA[<div>最近在研究hadoop和云计算，但是hadoop是java写的，在hadoop上编写程序也要用java，所以最近可能会经常使用java。为了防止忘记C++，今天决定开始研究一下boost库。 <br /> <br />先把boost装到ubuntu吧。 <br /> <br />下载boost_1_43_0.tar.gz到/home/dtz/下，解压 tar zxvf boost_1_43_0.tar.gz <br />cd boost_1_43_0, <br /> <br />执行： <br /> <br />sudo ./bootstrap.sh&nbsp;  <br /> <br />sudo ./bjam install <br /> <br />这样boost库就安装好了<br /><br /><div>http://www.codesky.net/article/201108/133806.html<br /><br />//test.cpp<br />#include &lt;boost/asio.hpp&gt;<br />int main()<br />{<br />&nbsp;&nbsp;&nbsp; return 0;<br />}</div><div><p> 	编译：</p> <p> 	方法A：g++&nbsp; -I/usr/local/include/boost/&nbsp; test.cpp -o test&nbsp; /usr/local/lib/ -lboost_thread.a -lboost_system.a -lpthread<br /></p> <p> 	方法B：g++&nbsp; -I/usr/local/include/boost/&nbsp; test.cpp -o test&nbsp; -L/usr/local/lib/ -lboost_thread -lboost_system -lpthread</p><p><br /></p><p>&nbsp;</p><div>当你要使用多个库源于一个路径时使用方法B就省力了（paid off）。注意到方法B中并没有指定.a（静态库）还中.so（动态库），系统将自动地帮你选择使用静态库还是动态库，当然你可以通过选项&#8220;-static"显示地指定。<br /><br /><br />-----------------------------------------------------------------------<br /><div><p> Linux上安装使用boost入门指导</p> <p> 	获得boost</p> <p> 	boost分布</p> <p> 	只需要头文件的库</p> <p> 	使用boost建立一个简单的程序</p> <p> 	准备使用boost二进制文件库</p> <p> 	把你的程序链接到boost库</p> <p> 	1.获得boost</p> <p> 下载boost_1_46_1.tar.bz2</p> <p> 	解压</p> <p> 	2.boost分布</p> <p> 	boost_1_46_1.........................boost根目录</p> <p> 	　　boost/.....................................所有boost头文件</p> <p> 	　　libs/........................................Tests,.cpps,docs等的库文件</p> <p> 	注意：</p> <p> 	　　（1）boost根目录（通常是/usr/local/boost_1_46_1）想到$BOOST_ROOT变量中</p> <p> 	　　（2）编译程序时如果用到boost库，需要指定头文件路径-I$BOOST_ROOT</p> <p> 	　　（3）因为所有头文件都在boost文件夹下，并且头文件都是hpp后缀，所#include形如：</p> <p> 	　　　　#include &lt;boost/whaever.hpp&gt;</p> <p> 	3.只需要头文件的库</p> <p> 	　　绝大多数的boost库都是header-noly的：它们完全由包含模板和inline函数的头文件组成，不需要单独编译和二进制库文件，也不需要链接时特别对待。</p> <p> 	　　只有下面的boost库必需单独built:</p> <p> 	Boost.Filesystem</p> <p> 	Boost.GraphParallel</p> <p> 	Boost.IOStreams</p> <p> 	Boost.MPI</p> <p> 	Boost.ProgramOptions</p> <p> 	Boost.Python (see the Boost.Python build documentation before building and installing it)</p> <p> 	Boost.Regex</p> <p> 	Boost.Serialization</p> <p> 	Boost.Signals</p> <p> 	Boost.System</p> <p> 	Boost.Thread</p> <p> 	Boost.Wave</p> <p> 	　　下面这些单独built是可选（optional）的：　</p> <p> 	　　Boost.DateTime　　Boost.Graph　　Boost.Math　　Boost.Random　　Boost.Test</p> <p> 	4.使用boost建立简单的程序</p> <p> 	　　下面的程序(example.cc)只用到header-only库。它是从标准输入中读入一串整数，使用Boost.Lambda每个数乘以3后输出。</p> <p> 	view sourceprint?</p> <p> 	#include &lt;boost/lambda/lambda.hpp&gt;</p> <p> 	#include &lt;iostream&gt;</p> <p> 	#include &lt;iterator&gt;</p> <p> 	#include &lt;algorithm&gt;</p> <p> 	&nbsp;</p> <p> 	int main()</p> <p> 	{</p> <p> 	&nbsp;&nbsp;&nbsp; using namespace boost::lambda;</p> <p> 	&nbsp;&nbsp;&nbsp; typedef std::istream_iterator&lt;int&gt; in;</p> <p> 	&nbsp;</p> <p> 	&nbsp;&nbsp;&nbsp; std::for_each(</p> <p> 	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in(std::cin), in(), std::cout &lt;&lt; (_1 * 3) &lt;&lt; " " );</p> <p> 	}</p> <p> 	编译：g++&nbsp; -I$BOOST_ROOT&nbsp; example.cc&nbsp; -o&nbsp; example</p> <p> 	运行：echo 1 2 3 | ./example</p> <p> 	5.准备使用boost二进制库</p> <p> 	　　如果你的程序用到需要单独编译的boost库，你需要首先获得这些二进制库文件。</p> <p> 	5.1编译安装所有二进制库文件</p> <p> 	　　cd $BOOST_ROOT</p> <p> 	　　./bootstrap.sh&nbsp; --help</p> <p> 	　　./bootstrap.sh&nbsp; --prefix=/usr/local　　　　##其实默认情况下prefix的值就是/usr/local</p> <p> 	　　此时生成了bjam可执行文件，这个东西就是用来编译boost库的。</p> <p> 	　　./bjam&nbsp; install</p> <p> 	5.2仅安装指定的二进制库文件</p> <p> 	　　下面均使用系统默认的编译器，即Linux上的gcc。</p> <p> 	　　5.2.1安装Boost.build</p> <p> 	　　Boost.Build是一个用于开发、测试、安装软件的基于文本的系统。Boost.Build的生成安装步骤：</p> <p> 	　　（1）cd $BOOST_ROOT/tools/build/v2</p> <p> 	　　（2）./bootstrap.sh</p> <p> 	　　（3）./bjam&nbsp; install&nbsp; --prefix=/usr/local/　　　　　　##prefix是Boost.Build安装位置</p> <p> 	　　（4）把prefix/bin放到PATH中　　　　　　　　　　##当然/usr/local/bin已经PATH中了</p> <p> 	　　5.2.2调用bjam时不指定toolset则使用系统默认的编译器。如果你的Linux上装了不同版本的gcc，则使用toolset选项时可以指定版本号：toolset=gcc-4.4</p> <p> 	　　5.2.3指定build路径，通过--build-dir=/path选项，不指定时默认在当前路径下创建bin.v2文件夹，把生成的文件放在其内。</p> <p> 	　　5.2.4调用bjam</p> <p> 	　　cd&nbsp; $BOOST_ROOT</p> <p> 	　　bjam&nbsp; --build-dir=./build-boost&nbsp; toolset=gcc&nbsp;&nbsp; stage</p> <p> 	　　上面的命令将创建static and shared non-debug multi-threaded variants of the libraries.如果要建立所有的variants，请使用"--build-type=complete"选项。</p> <p> 	　　所有的boost二进制库文件将放在stage/lib/下，如果你要另外指定路径，请使用&#8220;--stagedir=directory"选项。</p> <p> 	　　注意为节省build时间，你可能需要少build一些库文件：</p> <p> 	查看库文件名称　　--show-libraries</p> <p> 	限制build哪些库　　--with-libraryname或者--without-libraryname</p> <p> 	选择特定的build variant　　adding release or debug to the command line</p> <p> 	　　友情提示：Boost.Build会生成很多报告输出，如果你能保证建立过程不出错误，你可以禁止这些输出以节省时间。方法：在命令后追加&#8221;&gt;build.log&nbsp; 2&gt;&amp;1"</p> <p> 	6.把你的程序链接到boost库</p> <p> 	　　下面的程序是从邮件中抽取&#8220;主题&#8221;内容，它用到了Boost.Regex库，这个库是需要单独编译的。</p> <p> 	view sourceprint?</p> <p> 	#include &lt;boost/regex.hpp&gt;</p> <p> 	#include &lt;iostream&gt;</p> <p> 	#include &lt;string&gt;</p> <p> 	&nbsp;</p> <p> 	int main()</p> <p> 	{</p> <p> 	&nbsp;&nbsp;&nbsp; std::string line;</p> <p> 	&nbsp;&nbsp;&nbsp; boost::regex pat( "^Subject: (Re: |Aw: )*(.*)" );</p> <p> 	　　　　</p> <p> 	&nbsp;&nbsp;&nbsp; while (std::cin)</p> <p> 	&nbsp;&nbsp;&nbsp; {</p> <p> 	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::getline(std::cin, line);</p> <p> 	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boost::smatch matches;</p> <p> 	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (boost::regex_match(line, matches, pat))</p> <p> 	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; matches[2] &lt;&lt; std::endl;</p> <p> 	&nbsp;&nbsp;&nbsp; }</p> <p> 	}</p> <p> 	编译：</p> <p> 	方法A：g++&nbsp; -I$BOOST_ROOT&nbsp; example.cc -o example&nbsp; $BOOST_ROOT/stage/lib/ -lboost_regex.a</p> <p> 	方法B：g++&nbsp; -I$BOOST_ROOT&nbsp; example.cc -o example&nbsp; -L$BOOST_ROOT/stage/lib/ -lboost_regex</p> <p> 	当你要使用多个库源于一个路径时使用方法B就省力了（paid off）。注意到方法B中并没有指定.a（静态库）还中.so（动态库），系统将自动地帮你选择使用静态库还是动态库，当然你可以通过选项&#8220;-static"显示地指定。</p> <p> 	6.1库文件的命名方式</p> <p> 	拿libboost_regex-gcc34-mt-d-1_36来说：</p> <p> 	lib....................................通用前缀</p> <p> 	boost_regex.....................库名</p> <p> 	gcc34...............................编译时使用的toolset是gcc-3.4</p> <p> 	mt...................................编译时是支持多线程的</p> <p> 	d/s/g/y/p..........................ABI tag</p> <p> 	1_36................................Tag version</p> <p> 	6.2运行我们的程序</p> <p> 	　　首先新建一个文本文件mail.txt</p> <p> 	view sourceprint?</p> <p> 	To: George Shmidlap</p> <p> 	From: Rita Marlowe</p> <p> 	Subject: Will Success Spoil Rock Hunter?</p> <p> 	---</p> <p> 	See subject.</p> <p> 	如果我们的程序链接到了一个共享动态库，我们需要让系统知道到哪儿去加载它。请看我的~/.bashrc文件：</p> <p> 	view sourceprint?</p> <p> 	#boost</p> <p> 	export BOOST_ROOT="/usr/local/boost_1_46_1"</p> <p> 	export LD_LIBRARY_PATH="/usr/local/boost_1_46_1/stage/lib:$LD_LIBRARY_PATH"</p> <p> 	运行程序：./example&nbsp; &lt;&nbsp; mail.txt</p> <p> 	应该输出</p> <p> 	view sourceprint?</p> <p> 	Will Success Spoil Rock Hunter?</p></div></div><br /><p>&nbsp;</p></div></div><img src ="http://www.cppblog.com/colorful/aggbug/173428.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colorful/" target="_blank">多彩人生</a> 2012-05-02 09:49 <a href="http://www.cppblog.com/colorful/archive/2012/05/02/173428.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>vim缩进</title><link>http://www.cppblog.com/colorful/archive/2012/04/29/173148.html</link><dc:creator>多彩人生</dc:creator><author>多彩人生</author><pubDate>Sun, 29 Apr 2012 06:49:00 GMT</pubDate><guid>http://www.cppblog.com/colorful/archive/2012/04/29/173148.html</guid><wfw:comment>http://www.cppblog.com/colorful/comments/173148.html</wfw:comment><comments>http://www.cppblog.com/colorful/archive/2012/04/29/173148.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/colorful/comments/commentRss/173148.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colorful/services/trackbacks/173148.html</trackback:ping><description><![CDATA[<div>vim的自动縮进<br /> <br /> 1、配置文件的位置<br /> 在目录 /etc/ 下面，有个名为vimrc的文件，这是系统中公共的vim配置文件，对所有用户都有效。而在每个用户的主目录下，都可以自己建立私有的配置文件，命名为：&#8220;.vimrc&#8221;。例如，/root目录下，通常已经存在一个.vimrc文件。<br /> 2、设置语法高亮显示<br /> 1) 打开vimrc，添加以下语句来使得语法高亮显示：<br /> syntax on<br /> 2) 如果此时语法还是没有高亮显示，那么在/etc目录下的profile文件中添加以下语句：<br /> export TERM=xterm-color<br /> <br /> 3、设置Windows风格的C/C++自动缩进（添加以下set语句到vimrc中）<br /> 1）设置（软）制表符宽度为4：<br /> set tabstop=4<br /> set softtabstop=4<br /> 2）设置缩进的空格数为4<br /> set shiftwidth=4<br /> 3）设置自动缩进：即每行的缩进值与上一行相等；使用 noautoindent 取消设置：<br /> set autoindent<br /> 4）设置使用 C/C++ 语言的自动缩进方式：<br /> set cindent<br /> 5）设置C/C++语言的具体缩进方式（以我的windows风格为例）：<br /> set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,&gt;1s,=1s,:1s<br /> 6）如果想在左侧显示文本的行号，可以用以下语句：<br /> set nu<br /> 7）最后，如果没有下列语句，就加上吧：<br /> if &amp;term=="xterm"<br /> set t_Co=8<br /> set t_Sb=^[[4%dm<br /> set t_Sf=^[[3%dm<br /> endif<br /> <br /> <br /> <br /> 本文对vim的设置仅仅针对UBUNTU与Fedora系统，其他LINUX版本我没有实验过，敬请读者谅解！谢谢<br /> <br /> 在UBUNTU中vim的配置文件存放在/etc/vim目录中，配置文件名为vimrc<br /> <br /> 在Fedora中vim的配置文件存放在/etc目录中，配置文件名为vimrc<br /> <br /> 在终端 输入以下命令来编辑vimrc配置文件：(也可以在编辑文件过程中用shift + :输入对应命令来实现)<br /> sudo vim /etc/vim/vimrc<br /> 或者 sudo gedit /etc/vim/vimrc<br /> <br /> 1、显示行号<br /> <br /> 在文件末端添加一新行，输入 set nu<br /> <br /> 2、语法高亮<br /> 在文件中找到 "syntax on&nbsp;&nbsp; 这一行，去掉前面的双引号"，双引号是注释的意思<br /> <br /> 3、自动缩进<br /> <br /> 在文件末尾添加一行，输入 set autoindent<br /> 在添加一行，输入&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set cindent<br /> 其中 autoindent 是自动缩进； cindent是特别针对 C语言语法自动缩进<br /> <br /> 注意：如果设置好以上设置后，VIM没有作出相应的动作，那么请你把你的VIM升级到最新版，一般只要在终端输入以下命令即可：sudo apt-get install vim<br /> <br /> 祝大家使用VIM愉快！<br /><br /><br />/////////////////////////////////////////////////////////////////////////////////////<br /><br /><br /><div>http://linux.chinaunix.net/techdoc/develop/2008/07/30/1021801.shtml</div><div>需要软件<br /> vim 下载地址<br /> <a href="http://www.vim.org" target="_blank">http://www.vim.org</a><br /> code_complete.vim 插件<br /> <a href="http://www.vim.org/scripts/script.php?script_id=1764" target="_blank">http://www.vim.org/scripts/script.php?script_id=1764</a><br /> ctags 一般安装完vim后都会有，ubuntu中好像是不支持，需要下载.<br /> 一 vim 配置<br /> 转载Eric的文章，原文出处<br /> <a href="http://blog.chinaunix.net/u/22968/showart_432269.html" target="_blank">http://blog.chinaunix.net/u/22968/showart_432269.html</a><br /> 1、配置文件的位置<br /> &#160;&nbsp; &nbsp;在目录 /etc/  下面，有个名为vimrc的文件，这是系统中公共的vim配置文件，对所有用户都有效。而在每个用户的主目录下，都可以自己建立私有的配置文件，命名 为：&#8220;.vimrc&#8221;。例如，/root目录下，通常已经存在一个.vimrc文件。<br /> &#160;<br /> 2、设置语法高亮显示<br /> 1) 打开vimrc，添加以下语句来使得语法高亮显示：<br /> &#160;&nbsp; &nbsp;syntax on<br /> 2) 如果此时语法还是没有高亮显示，那么在/etc目录下的profile文件中添加以下语句：<br /> &#160;&nbsp; &nbsp;export TERM=xterm-color<br /> 3、设置Windows风格的C/C++自动缩进（添加以下set语句到vimrc中）<br /> &#160;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 1）不讨论制表符为8还是为4较好，这里设置（软）制表符宽度为4：<br /> &#160;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;set tabstop=4<br /> &#160;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;set softtabstop=4<br /> &#160;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 2）设置缩进的空格数为4<br /> &#160;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; set shiftwidth=4<br /> &#160;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 3）设置自动缩进：即每行的缩进值与上一行相等；使用 noautoindent 取消设置：<br /> set autoindent<br /> &#160;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 4）设置使用 C/C++ 语言的自动缩进方式：<br /> &#160;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; set cindent<br /> &#160;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 5）设置C/C++语言的具体缩进方式（以我的windows风格为例）：<br /> &#160;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,&gt;1s,=1s,:1s<br /> &#160;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 6）如果想在左侧显示文本的行号，可以用以下语句：<br /> &#160;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; set nu<br /> &#160;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 7）最后，如果没有下列语句，就加上吧：<br /> if &amp;term=="xterm"<br /> &#160;&nbsp; &nbsp;set t_Co=8<br /> &#160;&nbsp; &nbsp;set t_Sb=^[[4%dm<br /> &#160;&nbsp; &nbsp;set t_Sf=^[[3%dm<br /> endif<br /> PS：<br /> 自动缩进有两个选项: &#160;<br /> 代码:<br /> &#160;&nbsp; &nbsp;set autoindent&#160;<br /> &#160;&nbsp; &nbsp;set cindent<br /> &#160; &#160;<br /> &#160;autoindent 就是自动缩进的意思，当你在输入状态用回车键插入一个新行，或者在 normal 状态用 o 或者 O  插入一个新行时，autoindent  会自动地将当前行的缩进拷贝到新行，也就是"自动对齐&#8221;，当然了，如果你在新行没有输入任何字符，那么这个缩进将自动删除。&#160;<br /> &#160;<br /> &#160;cindent 就不同了，它会按照 C 语言的语法，自动地调整缩进的长度，比如，当你输入了半条语句然后回车时，缩进会自动增加一个 TABSTOP 值，当你键入了一个右花括号时，会自动减少一个 TABSTOP 值。<br /> 二 code_complete 配置<br /> 把下载的code_complete拷贝到plugin目录下，一般都在(我的是)/usr/share/vim/vim71 /plugin下<br /> 三 用ctags命令生成tags文件，ctags -R --c-kinds=+p --fields=+S<br /> 应该算是建立索引表，然后把生成的tags文件拷贝到你编程的目录。<br /> 在vim中使用键就可以补全函数原型了。</div></div><img src ="http://www.cppblog.com/colorful/aggbug/173148.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colorful/" target="_blank">多彩人生</a> 2012-04-29 14:49 <a href="http://www.cppblog.com/colorful/archive/2012/04/29/173148.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ubuntu 切换到root用户</title><link>http://www.cppblog.com/colorful/archive/2012/04/29/173126.html</link><dc:creator>多彩人生</dc:creator><author>多彩人生</author><pubDate>Sun, 29 Apr 2012 00:19:00 GMT</pubDate><guid>http://www.cppblog.com/colorful/archive/2012/04/29/173126.html</guid><wfw:comment>http://www.cppblog.com/colorful/comments/173126.html</wfw:comment><comments>http://www.cppblog.com/colorful/archive/2012/04/29/173126.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/colorful/comments/commentRss/173126.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colorful/services/trackbacks/173126.html</trackback:ping><description><![CDATA[sudo -sH<img src ="http://www.cppblog.com/colorful/aggbug/173126.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colorful/" target="_blank">多彩人生</a> 2012-04-29 08:19 <a href="http://www.cppblog.com/colorful/archive/2012/04/29/173126.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux,chmod如何更改所有子目录的权限，要包括隐藏文件</title><link>http://www.cppblog.com/colorful/archive/2012/04/29/173125.html</link><dc:creator>多彩人生</dc:creator><author>多彩人生</author><pubDate>Sun, 29 Apr 2012 00:15:00 GMT</pubDate><guid>http://www.cppblog.com/colorful/archive/2012/04/29/173125.html</guid><wfw:comment>http://www.cppblog.com/colorful/comments/173125.html</wfw:comment><comments>http://www.cppblog.com/colorful/archive/2012/04/29/173125.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/colorful/comments/commentRss/173125.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colorful/services/trackbacks/173125.html</trackback:ping><description><![CDATA[<div><pre id="question-content">chmod 777 * -R，这个不能更改隐藏文件夹。 <br />chmod 777 -R | ls -al -R，用这个，也不能更改隐藏文件夹。<br />&nbsp;用怎么用，才能把子目录下的隐藏文件夹的权限也更改？<br /><br /><br /><div><pre id="best-answer-content"  mb10"="">for file in `find . -print` <br />do <br />chmod 777 -R $file <br />done</pre></div><br /></pre></div><img src ="http://www.cppblog.com/colorful/aggbug/173125.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colorful/" target="_blank">多彩人生</a> 2012-04-29 08:15 <a href="http://www.cppblog.com/colorful/archive/2012/04/29/173125.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux新手入门：Unable to locate package错误解决办法</title><link>http://www.cppblog.com/colorful/archive/2012/04/29/173122.html</link><dc:creator>多彩人生</dc:creator><author>多彩人生</author><pubDate>Sat, 28 Apr 2012 23:34:00 GMT</pubDate><guid>http://www.cppblog.com/colorful/archive/2012/04/29/173122.html</guid><wfw:comment>http://www.cppblog.com/colorful/comments/173122.html</wfw:comment><comments>http://www.cppblog.com/colorful/archive/2012/04/29/173122.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/colorful/comments/commentRss/173122.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colorful/services/trackbacks/173122.html</trackback:ping><description><![CDATA[<div>最近刚开始接触<a title="关于Linux的学习心得" href="http://www.letuknowit.com/topics/linux" target="_blank">Linux</a>，在虚拟机中装了个<a title="关于ubuntu的学习心得" href="http://www.letuknowit.com/topics/tag/ubuntu" target="_blank">Ubuntu</a>，当前的版本是<a href="http://www.letuknowit.com/topics/tag/ubuntu-11-10" target="_blank">Ubuntu 11.10</a>，装好后自然少不了安装一些软件，在设置了软件的源后，就开始了 sudo apt-get install，结果出现了下面的Unable to locate package错误： <div> <ol><li>letuknowit@ubuntu:~$ <span style="color: #0000ff;">sudo apt-get install mysql-server mysql-client</span></li><li>[sudo] password for letuknowit:</li><li>Reading package lists&#8230; Done</li><li>Building dependency tree&nbsp;&nbsp;&nbsp;&nbsp;</li><li>Reading state information&#8230; Done</li><li><span style="color: #ff0000;">E: Unable to locate package mysql-server</span></li><li><span style="color: #ff0000;">E: Unable to locate package mysql-client</span></li><li>letuknowit@ubuntu:~$</li></ol> </div> <p>　　这叫一个郁闷啊，出师不利，不带这么吓唬刚玩Ubuntu的小朋友吧~于是赶紧找资料，又回顾下前面的操作，最后发现问题出<strong><span style="color: #0000ff;">在执行sudo apt-get install之前更换了软件源，但是却忘了update下</span></strong>了，于是执行下面的命令：</p> <div> <ol><li>sudo apt-get update</li></ol> </div> <p>等上面命令执行完后，再执行sudo apt-get install就可以了！其实错误信息已经很明确了，Unable to locate packet就是无法找到包嘛，那还不赶紧sudo apt-get update下！</p></div><img src ="http://www.cppblog.com/colorful/aggbug/173122.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colorful/" target="_blank">多彩人生</a> 2012-04-29 07:34 <a href="http://www.cppblog.com/colorful/archive/2012/04/29/173122.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux 进程 和 作业</title><link>http://www.cppblog.com/colorful/archive/2012/04/25/172748.html</link><dc:creator>多彩人生</dc:creator><author>多彩人生</author><pubDate>Wed, 25 Apr 2012 09:34:00 GMT</pubDate><guid>http://www.cppblog.com/colorful/archive/2012/04/25/172748.html</guid><wfw:comment>http://www.cppblog.com/colorful/comments/172748.html</wfw:comment><comments>http://www.cppblog.com/colorful/archive/2012/04/25/172748.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/colorful/comments/commentRss/172748.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colorful/services/trackbacks/172748.html</trackback:ping><description><![CDATA[<div><pre><strong style="color:black;background-color:#ffff66">Linux</strong>是一个多用户多任务的操作系统。多用户是指多个用户可以在同一时间使用计 算机系统；多任务是指<strong style="color:black;background-color:#ffff66">Linux</strong>可以同时执行几个任务，<br />它可以在还未执行完一个任务时又 执行另一项任务。 　　 操作系统管理多个用户的请求和多个任务。大多数系统都只有一个CPU和一个主存， <br />但一个系统可能有多个二级存储磁盘和多个输入/输出设备。操作系统管理这些资源并在 多个用户间共享资源，当您提出一个请求时，给您造成一种假象，<br />好象系统只被您独自占 用。而实际上操作系统监控着一个等待执行的任务队列，这些任务包括用户<strong style="color:black;background-color:#A0FFFF">作业</strong>、操作系 统任务、邮件和打印<strong style="color:black;background-color:#A0FFFF">作业</strong>等。<br />操作系统根据每个任务的优先级为每个任务分配合适的时间 片，每个时间片大约都有零点几秒，虽然看起来很短，但实际上已经足够计算机完成成千 <br />上万的指令集。每个任务都会被系统运行一段时间，然后挂起，系统转而处理其他任务； 过一段时间以后再回来处理这个任务，直到某个任务完成，<br />从任务队列中去除。 　　 <strong style="color:black;background-color:#ffff66">Linux</strong>系统上所有运行的东西都可以称之为一个<strong style="color:black;background-color:#ff9999">进程</strong>。每个用户任务、每个系统管理 守护<strong style="color:black;background-color:#ff9999">进程</strong>，都可以称之为<strong style="color:black;background-color:#ff9999">进程</strong>。<br /><strong style="color:black;background-color:#ffff66">Linux</strong>用分时管理方法使所有的任务共同分享系统资源。 我们讨论<strong style="color:black;background-color:#ff9999">进程</strong>的时候，不会去关心这些<strong style="color:black;background-color:#ff9999">进程</strong>究竟是如何分配的，或者是内核如何管理分配 <br />时间片的，我们所关心的是如何去控制这些<strong style="color:black;background-color:#ff9999">进程</strong>，让它们能够很好地为用户服务。 　　 <strong style="color:black;background-color:#ff9999">进程</strong>的一个比较正式的定义是：在自身的虚拟地址空间运行的一个<br />单独的程序。进 程<a name="baidusnap2"></a><strong style="color:black;background-color:#99ff99">与</strong>程序是有区别的，<strong style="color:black;background-color:#ff9999">进程</strong>不是程序，虽然它由程序产生。程序只是一个静态的指令集合 ，不占系统的运行资源；而<strong style="color:black;background-color:#ff9999">进程</strong>是一个随时都<br />可能发生变化的、动态的、使用系统运行资 源的程序。而且一个程序可以启动多个<strong style="color:black;background-color:#ff9999">进程</strong>。 　 <strong style="color:black;background-color:#ffff66">Linux</strong>操作系统包括三种不同类型的<strong style="color:black;background-color:#ff9999">进程</strong>，每种<strong style="color:black;background-color:#ff9999">进程</strong>都有自己<br />的特点和属性。　　 交互<strong style="color:black;background-color:#ff9999">进程</strong>&#8212;&#8212;由一个shell启动的<strong style="color:black;background-color:#ff9999">进程</strong>。交互<strong style="color:black;background-color:#ff9999">进程</strong>既可以在前台运行，也可以在后台运行 批处理<strong style="color:black;background-color:#ff9999">进程</strong>&#8212;&#8212;这种<strong style="color:black;background-color:#ff9999">进程</strong>和终端没有联系，<br />是一个<strong style="color:black;background-color:#ff9999">进程</strong>序列　　 监控<strong style="color:black;background-color:#ff9999">进程</strong>（也称守护<strong style="color:black;background-color:#ff9999">进程</strong>）&#8212;&#8212;<strong style="color:black;background-color:#ffff66">Linux</strong>系统启动时启动的<strong style="color:black;background-color:#ff9999">进程</strong>，并在后台运行。 　　 上述三种<strong style="color:black;background-color:#ff9999">进程</strong>各有各的作用，使用场合也有所<br />不同。 　　 <strong style="color:black;background-color:#ff9999">进程</strong>和<strong style="color:black;background-color:#A0FFFF">作业</strong>的概念也有区别。一个正在执行的<strong style="color:black;background-color:#ff9999">进程</strong>称为一个<strong style="color:black;background-color:#A0FFFF">作业</strong>，而且<strong style="color:black;background-color:#A0FFFF">作业</strong>可以包 含一个或多个<strong style="color:black;background-color:#ff9999">进程</strong>，尤其是当使用了管道和重定向命令。<br />例如&#8220;nroff -man ps.1|grep kill|more&#8221;这个<strong style="color:black;background-color:#A0FFFF">作业</strong>就同时启动了三个<strong style="color:black;background-color:#ff9999">进程</strong>。 　　 <strong style="color:black;background-color:#A0FFFF">作业</strong>控制指的是控制正在运行的<strong style="color:black;background-color:#ff9999">进程</strong>的行为。比如，用户可以挂起一个<br /><strong style="color:black;background-color:#ff9999">进程</strong>，等一 会儿再继续执行该<strong style="color:black;background-color:#ff9999">进程</strong>。shell将记录所有启动的<strong style="color:black;background-color:#ff9999">进程</strong>情况，在每个<strong style="color:black;background-color:#ff9999">进程</strong>过程中，用户可 以任意地挂起<strong style="color:black;background-color:#ff9999">进程</strong>或重新启动<strong style="color:black;background-color:#ff9999">进程</strong>。<strong style="color:black;background-color:#A0FFFF">作业</strong>控制是许<br />多shell（包括bash和tcsh）的一个特 性，使用户能在多个独立<strong style="color:black;background-color:#A0FFFF">作业</strong>间进行切换。 　　 一般而言，<strong style="color:black;background-color:#ff9999">进程</strong><strong style="color:black;background-color:#99ff99">与</strong><strong style="color:black;background-color:#A0FFFF">作业</strong>控制相关联时，才被称为<strong style="color:black;background-color:#A0FFFF">作业</strong>。 　　 <br />在大多数情况下，用户在同一时间只运行一个<strong style="color:black;background-color:#A0FFFF">作业</strong>，即它们最后向shell键入的命令 。但是使用<strong style="color:black;background-color:#A0FFFF">作业</strong>控制，用户可以同时运行多个<strong style="color:black;background-color:#A0FFFF">作业</strong>，并在需要时在<br />这些<strong style="color:black;background-color:#A0FFFF">作业</strong>间进行切换。 这会有什么用途呢？例如，当用户编辑一个文本文件，并需要中止编辑做其他事情时，利 用<strong style="color:black;background-color:#A0FFFF">作业</strong>控制，用户可以让编辑器暂<br />时挂起，返回shell提示符开始做其他的事情。其他事 情做完以后，用户可以重新启动挂起的编辑器，返回到刚才中止的地方，就象用户从来没 有离开<br />编辑器一样。这只是一个例子，<strong style="color:black;background-color:#A0FFFF">作业</strong>控制还有许多其他实际的用途。<br /><br /></pre></div><img src ="http://www.cppblog.com/colorful/aggbug/172748.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colorful/" target="_blank">多彩人生</a> 2012-04-25 17:34 <a href="http://www.cppblog.com/colorful/archive/2012/04/25/172748.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux中如何让进程在后台运行</title><link>http://www.cppblog.com/colorful/archive/2012/04/19/171920.html</link><dc:creator>多彩人生</dc:creator><author>多彩人生</author><pubDate>Wed, 18 Apr 2012 16:23:00 GMT</pubDate><guid>http://www.cppblog.com/colorful/archive/2012/04/19/171920.html</guid><wfw:comment>http://www.cppblog.com/colorful/comments/171920.html</wfw:comment><comments>http://www.cppblog.com/colorful/archive/2012/04/19/171920.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/colorful/comments/commentRss/171920.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colorful/services/trackbacks/171920.html</trackback:ping><description><![CDATA[<div><p><div>http://www.ningoo.net/html/2008/how_to_run_processes_on_background_in_linux.html</div><br /></p></div><img src ="http://www.cppblog.com/colorful/aggbug/171920.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colorful/" target="_blank">多彩人生</a> 2012-04-19 00:23 <a href="http://www.cppblog.com/colorful/archive/2012/04/19/171920.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux 学习之路</title><link>http://www.cppblog.com/colorful/archive/2012/04/18/171897.html</link><dc:creator>多彩人生</dc:creator><author>多彩人生</author><pubDate>Wed, 18 Apr 2012 11:43:00 GMT</pubDate><guid>http://www.cppblog.com/colorful/archive/2012/04/18/171897.html</guid><wfw:comment>http://www.cppblog.com/colorful/comments/171897.html</wfw:comment><comments>http://www.cppblog.com/colorful/archive/2012/04/18/171897.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/colorful/comments/commentRss/171897.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colorful/services/trackbacks/171897.html</trackback:ping><description><![CDATA[1/<br />按ctrl+alt+f1...7切换, 1-6为命令窗口,7为xwindow, 参考"鸟哥私房菜"p115<br />注意ctrl+alt与vwmare的按建冲突<br /><br />2/<br />&nbsp; 在tty1下登陆 login incorrect错误, 这是一个bug, 需要把小键盘的 numlock 关掉再输出密码<br /><br />3/ <br />&nbsp; there are stopped jobs 见我的同名博文<br /><br />4/&nbsp; <div><p style="text-indent: 2em;">GCC 有超过100个的编译选项可用. 这些选项中的许多你可能永远都不会用到,  但一些主要的选项将会频繁用到. 很多的 GCC 选项包括一个以上的字符. 因此你必须为每个选项指定各自的连字符, 并且就象大多数 Linux  命令一样你不能在一个单独的连字符后跟一组选项. 例如, 下面的两个命令是不同的:  </p><p style="text-indent:2em">gcc -p -g test.c </p><p style="text-indent:2em"> </p><p style="text-indent:2em">gcc -pg test.c </p><p style="text-indent:2em">第一条命令告诉 GCC 编译 test.c 时为 prof 命令建立剖析(profile)信息并且把调试信息加入到可执行的文件里. 第二条命令只告诉 GCC 为 gprof 命令建立剖析信息.  </p></div><img src ="http://www.cppblog.com/colorful/aggbug/171897.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colorful/" target="_blank">多彩人生</a> 2012-04-18 19:43 <a href="http://www.cppblog.com/colorful/archive/2012/04/18/171897.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>vi / vim</title><link>http://www.cppblog.com/colorful/archive/2012/04/18/171873.html</link><dc:creator>多彩人生</dc:creator><author>多彩人生</author><pubDate>Wed, 18 Apr 2012 07:40:00 GMT</pubDate><guid>http://www.cppblog.com/colorful/archive/2012/04/18/171873.html</guid><wfw:comment>http://www.cppblog.com/colorful/comments/171873.html</wfw:comment><comments>http://www.cppblog.com/colorful/archive/2012/04/18/171873.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/colorful/comments/commentRss/171873.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colorful/services/trackbacks/171873.html</trackback:ping><description><![CDATA[<div><h1>为什么这些死脑筋们在用 VI ?</h1></div><div>http://www.oschina.net/news/25882/why-they-are-using-vi?from=20120226</div>看起来是个好文章，不过现在我还不适合看，记下来以后看<br /><br />手册<br /><div>http://vimcdoc.sourceforge.net/doc/usr_01.html</div><img src ="http://www.cppblog.com/colorful/aggbug/171873.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colorful/" target="_blank">多彩人生</a> 2012-04-18 15:40 <a href="http://www.cppblog.com/colorful/archive/2012/04/18/171873.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>there are stopped jobs</title><link>http://www.cppblog.com/colorful/archive/2012/04/18/171864.html</link><dc:creator>多彩人生</dc:creator><author>多彩人生</author><pubDate>Wed, 18 Apr 2012 06:57:00 GMT</pubDate><guid>http://www.cppblog.com/colorful/archive/2012/04/18/171864.html</guid><wfw:comment>http://www.cppblog.com/colorful/comments/171864.html</wfw:comment><comments>http://www.cppblog.com/colorful/archive/2012/04/18/171864.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/colorful/comments/commentRss/171864.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colorful/services/trackbacks/171864.html</trackback:ping><description><![CDATA[<div>Dealing with Stopped Jobs<br /> Sometimes when you try to logout, you'll get a message saying there are  "stopped jobs". These stopped jobs are programs or processes which have  been suspended by a ^Z (Ctrl - Z) command. You have to either make the  job active again, or get it running properly  in the "background" before you can logout. <br /> <br /> Stopping a program is useful if you want to temporarily suspend working on one program so you can do something else. <br /> <br /> To see a list of stopped jobs, type: <br /> <br /> <table "="" style="width:95%" align="center" bgcolor="#ffffff" border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <table "="" style="table-layout:fixed; width:100%; word-wrap:break-word" border="0" cellpadding="5" cellspacing="1"> <tbody> <tr> <td>jobs</td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> You will see a list of the stopped programs. Here's an example showing a stopped "learn" session: <br /> <br /> <table "="" style="width:95%" align="center" bgcolor="#ffffff" border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <table "="" style="table-layout:fixed; width:100%; word-wrap:break-word" border="0" cellpadding="5" cellspacing="1"> <tbody> <tr> <td>[1] + Stopped learn</td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> You can kill this stopped job by typing: <br /> <br /> <table "="" style="width:95%" align="center" bgcolor="#ffffff" border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <table "="" style="table-layout:fixed; width:100%; word-wrap:break-word" border="0" cellpadding="5" cellspacing="1"> <tbody> <tr> <td>kill %1 (where %1 is the number of the job<br /> to be killed&gt;</td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> Or you can make the program active again by typing: <br /> <br /> <table "="" style="width:95%" align="center" bgcolor="#ffffff" border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <table "="" style="table-layout:fixed; width:100%; word-wrap:break-word" border="0" cellpadding="5" cellspacing="1"> <tbody> <tr> <td>fg %1 (where %1 is the number of the job)</td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> fg stands for foreground. (You are bringing the program from suspended  status back to the foreground.) Once brought back to the foreground, you  can continue the program or quit in a normal manner.</div><img src ="http://www.cppblog.com/colorful/aggbug/171864.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colorful/" target="_blank">多彩人生</a> 2012-04-18 14:57 <a href="http://www.cppblog.com/colorful/archive/2012/04/18/171864.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux command</title><link>http://www.cppblog.com/colorful/archive/2012/04/18/171839.html</link><dc:creator>多彩人生</dc:creator><author>多彩人生</author><pubDate>Wed, 18 Apr 2012 02:57:00 GMT</pubDate><guid>http://www.cppblog.com/colorful/archive/2012/04/18/171839.html</guid><wfw:comment>http://www.cppblog.com/colorful/comments/171839.html</wfw:comment><comments>http://www.cppblog.com/colorful/archive/2012/04/18/171839.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/colorful/comments/commentRss/171839.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colorful/services/trackbacks/171839.html</trackback:ping><description><![CDATA[查看当前路径： pwd<img src ="http://www.cppblog.com/colorful/aggbug/171839.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colorful/" target="_blank">多彩人生</a> 2012-04-18 10:57 <a href="http://www.cppblog.com/colorful/archive/2012/04/18/171839.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>fcitx</title><link>http://www.cppblog.com/colorful/archive/2012/04/17/171777.html</link><dc:creator>多彩人生</dc:creator><author>多彩人生</author><pubDate>Tue, 17 Apr 2012 12:12:00 GMT</pubDate><guid>http://www.cppblog.com/colorful/archive/2012/04/17/171777.html</guid><wfw:comment>http://www.cppblog.com/colorful/comments/171777.html</wfw:comment><comments>http://www.cppblog.com/colorful/archive/2012/04/17/171777.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/colorful/comments/commentRss/171777.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colorful/services/trackbacks/171777.html</trackback:ping><description><![CDATA[<div><p>输入法切换用ctrl+shift<br /></p><p>Ubuntu自带的输入法不太尽如人意思，用起来也不方便，我在Ubuntu和FC中都是用Fcitx，很好用！</p><p>安装配置如下： <br /></p><p><strong>1. 安装 fcitx</strong></p> <p>　　sudo apt-get install fcitx</p><p>&nbsp;</p> <p><strong>2. 配置默认输入法为 fcitx</strong></p><p>　　im-switch -s fcitx　　// 注意无须加 sudo</p><p><br /></p> <p><strong>3. 重启 x-window</strong></p> <p>　　重启之后，fcitx 输入法应当正常启动，输入条将显示在屏幕最上面，不过输入框中文显示可能是 &#8220;口口&#8221;，需要小小的改动。</p><p>&nbsp;</p> <p><strong>4. 修改配置文件</strong></p><p>　　gedit ~/.fcitx/config</p> <p>　　//如果没有配置gedit 支持GB18030编码，打开后文件会是乱码（此处针对9.10前版本，9.10无需配置已支持）</p> <p>　　修改如下几项：</p> <p>　　显示字体(中)=YaHei Consolas Hybrid&nbsp;&nbsp; //<strong>主要是看你的OpenOffice中有什么字体，加进来就行</strong>。<br /></p> <p>　　Enter键行为=1 # =1表示回车时清除输入框中输入的内容，随个人喜好设置</p> <p>　　上一页=, # 使用 , . 翻页，随个人喜好设置</p> <p>　　下一页=.</p> <p>　　[输入法]</p> <p>　　使用拼音=0</p> <p>　　拼音名称=智能拼音</p> <p>　　使用双拼=0</p> <p>　　双拼名称=智能双拼</p> <p>　　默认双拼方案=自然码</p> <p>　　使用区位=0</p> <p>　　区位名称=区位</p> <p>　　使用码表=1</p> <p>　　提示词库中的词组=1</p> <p>　　其他输入法=</p> <p><strong>5. 修改码表文件</strong></p><p>　　sudo gedit /usr/share/fcitx/data/tables.conf</p> <p>　　由于五笔拼音已经完全够用，其它输入法就没必要出现了，文件中只需留下如下内容，其它配置段可以清除或注释掉。</p> <p>　　[码表]</p> <p>　　名称=五笔拼音</p> <p>　　码表=wbpy.mb</p> <p>　　调频=2</p> <p>　　拼音=1</p> <p>　　拼音键=z</p> <p>　　自动上屏=-1</p> <p>　　空码自动上屏=-1<br /> 　　自动词组=1<br /> 　　精确匹配=0<br /> 　　提示编码=0<br /> <strong>6、重启 x-window</strong><br /> 　　重启 x-window 之后，小企鹅输入法中文显示将完全正常，且只有&#8220;五笔拼音&#8221;，免去了在多个输入法中来回切换的麻烦。</p><p>&nbsp;</p><strong>Note： Restart 后小企鹅面板不是最上面，我们也以用[Ctrl+Alt+h]来把它调上来。</strong></div><img src ="http://www.cppblog.com/colorful/aggbug/171777.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colorful/" target="_blank">多彩人生</a> 2012-04-17 20:12 <a href="http://www.cppblog.com/colorful/archive/2012/04/17/171777.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ubuntu gcc g++ make</title><link>http://www.cppblog.com/colorful/archive/2012/04/17/171776.html</link><dc:creator>多彩人生</dc:creator><author>多彩人生</author><pubDate>Tue, 17 Apr 2012 12:10:00 GMT</pubDate><guid>http://www.cppblog.com/colorful/archive/2012/04/17/171776.html</guid><wfw:comment>http://www.cppblog.com/colorful/comments/171776.html</wfw:comment><comments>http://www.cppblog.com/colorful/archive/2012/04/17/171776.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/colorful/comments/commentRss/171776.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colorful/services/trackbacks/171776.html</trackback:ping><description><![CDATA[<div>sudo apt-get install make gcc g++<br /> 再装上函数手册 <br /> sudo apt-get install manpages-dev<br /> <br /> 另一方法:<br /> <span>sudo apt-get install build-essential <br /> 执行完后，完成了gcc,g++,make的安装。</span> build-essential 是一整套工具，gcc，libc等等<br /> <br /> <strong>函数手册的使用：</strong><br /> <span> 是的，比如man scanf。 <br /> 偶尔会有同名的，比如printf就有两个，一个在脚本下用，一个在c里面用，可以用 <br /> </span> <table align="center" border="0" cellpadding="3" cellspacing="1" width="90%">     <tbody>         <tr>             <td><strong>代码:</strong></td>         </tr>         <tr>             <td>man -a printf</td>         </tr>     </tbody> </table> <span> <br /> 这样会显示出第一个，按q退出后接着显示第二个。 <br /> 当然，如果你知道你要查的帮助属于哪一类的话也可以直接加类别号，如： <br /> </span> <table align="center" border="0" cellpadding="3" cellspacing="1" width="90%">     <tbody>         <tr>             <td><strong>代码:</strong></td>         </tr>         <tr>             <td>man 1 printf <br />             man 3 printf</td>         </tr>     </tbody> </table> <span> <br /> 第一个显示的就是脚本下用的printf，第二个显示的是c的。<br /> <strong>编译运行：<br /> </strong></span> 安装好后必要的工具后，运行 <table align="center" border="0" cellpadding="3" cellspacing="1" width="90%">     <tbody>         <tr>             <td><strong>代码:</strong></td>         </tr>         <tr>             <td>gcc xxx.c</td>         </tr>     </tbody> </table> <span> <br /> 运行编译好的程序，用 <br /> </span> <table align="center" border="0" cellpadding="3" cellspacing="1" width="90%">     <tbody>         <tr>             <td><strong>代码:</strong></td>         </tr>         <tr>             <td>./xxx.out</td>         </tr>     </tbody> </table> <span> <br /> gcc有很多参数，可以看看 <br /> </span> <table align="center" border="0" cellpadding="3" cellspacing="1" width="90%">     <tbody>         <tr>             <td><strong>代码:</strong></td>         </tr>         <tr>             <td>gcc --help</td>         </tr>     </tbody> </table> <span> <br /> 或 <br /> </span> <table align="center" border="0" cellpadding="3" cellspacing="1" width="90%">     <tbody>         <tr>             <td><strong>代码:</strong></td>         </tr>         <tr>             <td>man gcc</td>         </tr>     </tbody> </table>  或：<br /> $chmod +x a.out <br /> $./a.out <br /> <br /> <br /> 用gcc的话加-lstdc++参数</div><img src ="http://www.cppblog.com/colorful/aggbug/171776.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colorful/" target="_blank">多彩人生</a> 2012-04-17 20:10 <a href="http://www.cppblog.com/colorful/archive/2012/04/17/171776.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>