﻿<?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++博客-实践出真知-文章分类-Linux</title><link>http://www.cppblog.com/lauer3912/category/15683.html</link><description>没有理由不学习</description><language>zh-cn</language><lastBuildDate>Wed, 15 Dec 2010 00:24:30 GMT</lastBuildDate><pubDate>Wed, 15 Dec 2010 00:24:30 GMT</pubDate><ttl>60</ttl><item><title>linux基本命令手册</title><link>http://www.cppblog.com/lauer3912/articles/136422.html</link><dc:creator>lauer3912</dc:creator><author>lauer3912</author><pubDate>Tue, 14 Dec 2010 15:24:00 GMT</pubDate><guid>http://www.cppblog.com/lauer3912/articles/136422.html</guid><wfw:comment>http://www.cppblog.com/lauer3912/comments/136422.html</wfw:comment><comments>http://www.cppblog.com/lauer3912/articles/136422.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lauer3912/comments/commentRss/136422.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lauer3912/services/trackbacks/136422.html</trackback:ping><description><![CDATA[<p>NO 分类 PS1 命令名 用法及参数 功能注解 对应章节<br>1 文件管理 # ls ls -a 列出当前目录下的所有文件，包括以.头的隐含文件<br>文件管理 # ls ls -l或ll 列出当前目录下文件的详细信息<br>文件管理 # pwd pwd 查看当前所在目录的绝对路经<br>文件管理 # cd cd .. 回当前目录的上一级目录<br>文件管理 # cd cd - 回上一次所在的目录<br>文件管理 # cd cd ~ 或 cd 回当前用户的宿主目录<br>文件管理 # cd cd ~用户名 回指定用户的宿主目录<br>2 文件管理 # mkdir mkdir 目录名 创建一个目录<br>文件管理 # mkdir mkdir &#8211;p 递归式去创建一些嵌套目录<br>文件管理 # rmdir Rmdir 空目录名 删除一个空目录 <span id=more-191></span><br>3 文件管理 # rm rm 文件名 文件名 删除一个文件或多个文件<br>文件管理 # rm rm -rf 非空目录名 递归删除一个非空目录下的一切，不让提式-f<br>4 文件管理 # cat cat文件名 一屏查看文件内容<br>5 文件管理 # more more文件名 分页查看文件内容<br>6 文件管理 # less less 文件名 可控分页查看文件内容<br>7 文件管理 # grep grep字符 文件名 根据字符匹配来查看文件部分内容<br>8 文件管理 # mv mv 路经/文件 /经/文件 移动相对路经下的文件到绝对路经下<br>文件管理 # mv mv 文件名 新名称 在当前目录下改名<br>9 文件管理 # cp cp /路经/文件 ./ 移动绝对路经下的文件到当前目录下<br>10 文件管理 # find find 路经 -name &#8220;字符串&#8221; 查找路经所在范围内满足字符串匹配的文件和目录<br>11 文件管理 # ln ln 源文件 链接名 创建当前目录源文件的硬链接<br>ln /home/test /usr/test1 在/usr下建立/home/test的硬链接<br>12 文件管理 # ln Ln -s a b 创建当前目录下a的符号链接b<br>13 文件管理 # touch touch file1 file2 创建两个空文件<br>14 磁盘管理 # df df 用于报告文件系统的总容量，使用量，剩余容量。<br>15 磁盘管理 # du du -b /home 查看目前/HOME目录的容量(k)及子目录的容量(k)。<br>16 磁盘管理 # fdisk fdisk -l 查看系统分区信息<br>17 磁盘管理 # fdisk fdisk /dev/sdb 为一块新的SCSI硬盘进行分区<br>18 磁盘管理 # mkfs.ext3 Mkfs.ext3 /dev/sdb1<br>为第一块SCSI硬盘的第一主分区格式化成<br>ext3的文件系统<br>mkfs.ext2 Mkfs.ext2/dev/sdb2 格式化成ext2文件系统<br>19 磁盘管理 # mount mount -t 文件系统类型 设备路经 访问路经<br>磁盘管理 # 文件系统类型<br>Iso9660 光驱文件系统<br>vfat Fat文件系统(windows)<br>挂载光驱 # mount &#8211;t iso9660 /dev/cdrom /mnt/cdrom<br>挂载FAT # mount &#8211;t vfat /dev/hda5 /mnt/cdrom 挂第一个ide的第五个逻辑分区<br>17 磁盘管理 # Umount /mnt/cdrom 卸载/mnt/cdrom为空<br>18 文件权限 # chmod chmod u+s file 为file的属主加上特殊权限<br>chmod g+r file 为file的属组加上读权限<br>chmod o+w file 为file的其它用户加上写权限<br>chmod a-x file 为file的所有用户减去执行权限<br>chmod 765 file 为file的属主设为完全权限，属组设成读写权，其它用户具有读和执心权限<br>19 文件权限 # chown chown root /home 把/home的属主改成root用户<br>20 文件权限 # chgrp chgrp root /home 把/home的属组改成root组<br>21 打印管理 # redhat-config-printer-tui 进入安装打印机界面<br>22 打印管理 # lp lp &#8211;d hptr file 打印file到hptr的打印机上<br>23 打印管理 # lpq Lpq &#8211;P 打印机名 查看打印机的状态<br>24 打印管理 # lprm Lprm &#8211;P 打印机名 a 删除打印机内的打印作业<br>25 打印管理 # disable Disable &#8211;r &#8220;changing paper&#8221; HPtr 禁用打印机并提示原因<br>26 打印管理 # enable Enable HPtr 重新启用被禁用的<br>27 用户管理 # useradd Useradd 创建一个新的用户<br>28 用户管理 # groupadd Groupadd 组名 创建一个新的组<br>29 用户管理 # passwd Passwd 用户名 为用户创建密码<br>30 用户管理 # Passwd -d Passwd -d用户名 删除用户密码也能登陆<br>31 用户管理 # Passwd -l Passwd -l用户名 锁定账号密码<br>32 用户管理 # Passwd -u Passwd -u用户名 解锁账号密码<br>33 用户管理 # Passwd -S Passwd -S用户名 查询账号密码<br>34 用户管理 # Usermod -l Usermod -l 新用户名 老用户名 为用户改名<br>35 用户管理 # Usermod -L Usermod -L 要锁定用户名 锁定用户登陆<br>36 用户管理 # Usermod -U Usermod &#8211;U解锁用户名 解锁用户登陆<br>37 用户管理 # Usermod -u Usermod &#8211;u 501用户名 改变用户UID<br>38 用户管理 # Userdel Userdel&#8211;r 用户名 删除用户一切<br>39 用户管理 # Groupmod -n Groupmod &#8211;n新用户名 老用户名 为组改名<br>40 用户管理 # Groupmod -g Groupmod &#8211;g 501 组名 改变组GID<br>41 用户管理 # groupdel Groupdel组名 先应删它的用户 删除组<br>42 用户管理 # gpasswd -a gpasswd -a 用户名 组名 增加用户到组<br>43 用户管理 # Id id 用户名 查用户信息<br>44 软件管理 # rpm -qa rpm &#8211;qa | less 查询已安装RPM<br>45 软件管理 # rpm &#8211;qa | grep ftp 查询指定RPM<br>46 软件管理 # rpm -q rpm -q 已安装的RPM包 查是否安装<br>47 软件管理 # rpm -q telnet-server 查看telnet服务器包<br>48 软件管理 # rpm -qi rpm &#8211;qi 软件包名称 查看软件的描述信息<br>49 软件管理 # rpm -ql rpm &#8211;ql软件包名称 查询软件包的文件列表<br>50 软件管理 # rpm -qf rpm &#8211;qf软件包名称 查询某个文件所属的软件包<br>51 软件管理 # rpm -qp rpm &#8211;qp软件包全名 查询未安装的软件包信息<br>52 软件管理 # rpm -e rpm &#8211;e 软件包名称 删除具体的软件包<br>53 软件管理 # rpm -U rpm &#8211;Uvh软件包全名 升级软件包并显示过程<br>54 软件管理 # rpm -ivh rpm &#8211;ivh 软件包全名 安装软件包并显示过程<br>55 软件管理 # rpm -V rpm &#8211;V软件包名称 验证软件包的大小，类型等<br>56 软件管理 # tar -c 创建包 &#8211;x 释放包 -v 显示命令过程 &#8211;z 代表压缩包<br>57 软件管理 # tar -cf tar &#8211;cvf benet.tar /home/benet 把/home/benet目录打包<br>58 软件管理 # tar -czf tar &#8211;zcvf benet.tar.gz /mnt 把目录打包并压缩<br>59 软件管理 # tar &#8211;tf tar &#8211;tf benet.tar 看非压缩包的文件列表<br>60 软件管理 # tar &#8211;tzf tar &#8211;tf benet.tar.gz 看压缩包的文件列表<br>61 软件管理 # tar &#8211;xf tar &#8211;xf benet.tar 非压缩包的文件恢复<br>62 软件管理 # tar &#8211;zxvf tar &#8211;zxvf benet.tar.gz 压缩包的文件解压恢复<br>63 软件管理 # tar -jxvf tar &#8211;jxvf benet.tar.bz2<br>64 软件管理 # diff diff file1 file2 &gt; 补丁名.patch 为新旧文件生成补丁文件<br>65 软件管理 # diff diff file1 file2 比较两个文件的区别<br>66 软件管理 # Patch Patch file补丁名.patch 打补丁<br>67 软件管理 # ./configure &#8211;prefix=/usr/local/ 编译前配置<br>68 软件管理 # make 编译<br>69 软件管理 # make install 安装编译好的源码包<br>70 启动管理 # reboot Init 6 重启LINUX系统<br>71 启动管理 # Halt Init 0 Shutdown &#8211;h now 关闭LINUX系统<br>72 启动管理 # runlevel 显示系统运行级<br>73 启动管理 # Init [0123456] 改变系统运行级,7种<br>74 启动管理 # Chkconfig &#8211;-list [服务名称] 查看服务的状态<br>75 启动管理 # Chkconfig &#8211;-level &lt;运行级&gt; &lt;服务名&gt; on|off|set 设置服务的启动状态<br>76 启动管理 # Chkconfig &lt;服务名&gt; on|off|set 设置非独立服务启状态<br>77 进程管理 # Top动态 Ps-aux静态 进程树pstree 查看系统进程<br>78 进程管理 # 程序名 &amp; 后台运行程序<br>79 进程管理 # fg 把后台运行的进程调回前台<br>80 进程管理 # bg 把前台运行进程调到后台<br>81 进程管理 # renice Renice +1 180 把180号进程的优先级加1<br>82 进程管理 # kill Kill PID 终止某个PID进程<br>83 进程管理 # at at 5pm + 3 days<br>/bin/ls 指定三天后下午5:00执行/bin/ls<br>84 进程管理 # crontab Crontab -e 用VI的形式来编辑自动周期性任务<br>85 进程管理 # crontab Crontab -l 查看自动周期性任务<br>86 进程管理 # crontab Crontab -r 删除自动周期性任务<br>87 进程管理 # crond Service crond <start|stop|restart|status><br>马上启动自动周期性服务 Service crond &lt;启动|停止|重启|状态&gt;</p>
<p>实现磁盘配额 (注安装LINUX时建立/home分区）<br>目标：对用户zhao在/home目录上实现soft limit为5k,hard limit 为10k的磁盘配额<br>实现步骤：<br>1. 修改包含/home的行， #vi /etc/fstab， 改为：defaults,usrquota。也就是增加usrquota项。然后保存退出。<br>2、卸载/home目录 #umount /home<br>3. 挂接/home目录 #mount /home<br>4、增加用户zhao #useradd zhao<br>5、修改密码 #passwd zhao<br>6、生成关于/home目录的quota信息 # quotacheck -cmug /home<br>#quotacheck -vu /home<br>7、查看所有用户的信息 #repquota -au<br>8、设置配额 #edquota -u zhao<br>将soft 和hard 分别改为5和10<br>9、保存并退出 #wq!<br>10、修改时间 #edquota -t<br>11、 #wq!<br>12.开启/home上的磁盘配额功能 #quotaon /home<br>13.查询配额 #quota -u zhao<br>14.验证配额 #su &#8211; zhao<br>$touch myfile<br>
<script type=text/javascript><!--
google_ad_client = "pub-1539499085830808";
//468x15, 创建于 07-11-22
google_ad_slot = "8747841444";
google_ad_width = 468;
google_ad_height = 15;
//--></script>
<br></p>
<img src ="http://www.cppblog.com/lauer3912/aggbug/136422.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lauer3912/" target="_blank">lauer3912</a> 2010-12-14 23:24 <a href="http://www.cppblog.com/lauer3912/articles/136422.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>configure命令详解</title><link>http://www.cppblog.com/lauer3912/articles/136421.html</link><dc:creator>lauer3912</dc:creator><author>lauer3912</author><pubDate>Tue, 14 Dec 2010 15:23:00 GMT</pubDate><guid>http://www.cppblog.com/lauer3912/articles/136421.html</guid><wfw:comment>http://www.cppblog.com/lauer3912/comments/136421.html</wfw:comment><comments>http://www.cppblog.com/lauer3912/articles/136421.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lauer3912/comments/commentRss/136421.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lauer3912/services/trackbacks/136421.html</trackback:ping><description><![CDATA[<p>&#8211;cache-file=FILE</p>
<p>　　&#8217;configure&#8217;会在你的系统上测试存在的特性(或者bug!).为了加速随后进行的配置,测试的结果会存储在一个cache file里.当configure一个每个子树里都有&#8217;configure&#8217;脚本的复杂的源码树时,一个很好的cache file的存在会有很大帮助.</p>
<p><span id=more-3359></span></p>
<p>&#8211;help</p>
<p>　　输出帮助信息.即使是有经验的用户也偶尔需要使用使用&#8217;&#8211;help&#8217;选项,因为一个复杂的项目会包含附加的选项.例如,GCC包里的&#8217;configure&#8217;脚本就包含了允许你控制是否生成和在GCC中使用GNU汇编器的选项.</p>
<p>&#8211;no-create</p>
<p>　　&#8217;configure&#8217;中的一个主要函数会制作输出文件.此选项阻止&#8217;configure&#8217;生成这个文件.你可以认为这是一种演习(dry run),尽管缓存(cache)仍然被改写了.</p>
<p>&#8211;quiet</p>
<p>&#8211;silent</p>
<p>　　当&#8217;configure&#8217;进行他的测试时,会输出简要的信息来告诉用户正在作什么.这样作是因为&#8217;configure&#8217;可能会比较慢,没有这种输出的话用户将会被扔在一旁疑惑正在发生什么.使用这两个选项中的任何一个都会把你扔到一旁.(译注:这两句话比较有意思,原文是这样的:If there was no such output, the user would be left wondering what is happening. By using this option, you too can be left wondering!)</p>
<p>&#8211;version</p>
<p>　　打印用来产生&#8217;configure&#8217;脚本的Autoconf的版本号.</p>
<p>&#8211;prefix=PEWFIX</p>
<p>　　&#8217;&#8211;prefix&#8217;是最常用的选项.制作出的&#8217;Makefile&#8217;会查看随此选项传递的参数,当一个包在安装时可以彻底的重新安置他的结构独立部分. 举一个例子,当安装一个包,例如说Emacs,下面的命令将会使Emacs Lisp file被安装到&#8221;/opt/gnu/share&#8221;:</p>
<p>$ ./configure &#8211;prefix=/opt/gnu</p>
<p>&#8211;exec-prefix=EPREFIX</p>
<p>　　与&#8217;&#8211;prefix&#8217;选项类似,但是他是用来设置结构倚赖的文件的安装位置.编译好的&#8217;emacs&#8217;二进制文件就是这样一个问件.如果没有设置这个选项的话,默认使用的选项值将被设为和&#8217;&#8211;prefix&#8217;选项值一样.</p>
<p>&#8211;bindir=DIR</p>
<p>　　指定二进制文件的安装位置.这里的二进制文件定义为可以被用户直接执行的程序.</p>
<p>&#8211;sbindir=DIR</p>
<p>　　指定超级二进制文件的安装位置.这是一些通常只能由超级用户执行的程序.</p>
<p>&#8211;libexecdir=DIR</p>
<p>　　指定可执行支持文件的安装位置.与二进制文件相反,这些文件从来不直接由用户执行,但是可以被上面提到的二进制文件所执行.</p>
<p>&#8211;datadir=DIR</p>
<p>　　指定通用数据文件的安装位置.</p>
<p>&#8211;sysconfdir=DIR</p>
<p>　　指定在单个机器上使用的只读数据的安装位置.</p>
<p>&#8211;sharedstatedir=DIR</p>
<p>　　指定可以在多个机器上共享的可写数据的安装位置.</p>
<p>&#8211;localstatedir=DIR</p>
<p>　　指定只能单机使用的可写数据的安装位置.</p>
<p>&#8211;libdir=DIR</p>
<p>　　指定库文件的安装位置.</p>
<p>&#8211;includedir=DIR</p>
<p>　　指定C头文件的安装位置.其他语言如C++的头文件也可以使用此选项.</p>
<p>&#8211;oldincludedir=DIR</p>
<p>　　指定为除GCC外编译器安装的C头文件的安装位置.</p>
<p>&#8211;infodir=DIR</p>
<p>　　指定Info格式文档的安装位置.Info是被GNU工程所使用的文档格式.</p>
<p>&#8211;mandir=DIR</p>
<p>　　指定手册页的安装位置.</p>
<p>&#8211;srcdir=DIR</p>
<p>　　这个选项对安装没有作用.他会告诉&#8217;configure&#8217;源码的位置.一般来说不用指定此选项,因为&#8217;configure&#8217;脚本一般和源码文件在同一个目录下.</p>
<p>&#8211;program-prefix=PREFIX</p>
<p>　　指定将被加到所安装程序的名字上的前缀.例如,使用&#8217;&#8211;program-prefix=g&#8217;来configure一个名为&#8217;tar&#8217;的程序将会使安装的程序被命名为&#8217;gtar&#8217;.当和其他的安装选项一起使用时,这个选项只有当他被`Makefile.in&#8217;文件使用时才会工作.</p>
<p>&#8211;program-suffix=SUFFIX</p>
<p>　　指定将被加到所安装程序的名字上的后缀.</p>
<p>&#8211;program-transform-name=PROGRAM</p>
<p>　　这里的PROGRAM是一个sed脚本.当一个程序被安装时,他的名字将经过`sed -e PROGRAM&#8217;来产生安装的名字.</p>
<p>&#8211;build=BUILD</p>
<p>　　指定软件包安装的系统平台.如果没有指定,默认值将是&#8217;&#8211;host&#8217;选项的值.</p>
<p>&#8211;host=HOST</p>
<p>　　指定软件运行的系统平台.如果没有指定,将会运行`config.guess&#8217;来检测.</p>
<p>&#8211;target=GARGET</p>
<p>　　指定软件面向(target to)的系统平台.这主要在程序语言工具如编译器和汇编器上下文中起作用.如果没有指定,默认将使用&#8217;&#8211;host&#8217;选项的值.</p>
<p>&#8211;disable-FEATURE</p>
<p>　　一些软件包可以选择这个选项来提供为大型选项的编译时配置,例如使用Kerberos认证系统或者一个实验性的编译器最优配置.如果默认是提供这些特性,可以使用&#8217;&#8211;disable-FEATURE&#8217;来禁用它,这里&#8217;FEATURE&#8217;是特性的名字.例如:</p>
<p>$ ./configure &#8211;disable-gui</p>
<p>-enable-FEATURE[=ARG]</p>
<p>　　相反的,一些软件包可能提供了一些默认被禁止的特性,可以使用&#8217;&#8211;enable-FEATURE&#8217;来起用它.这里&#8217;FEATURE&#8217;是特性的名字.一个特性可能会接受一个可选的参数.例如:</p>
<p>$ ./configure &#8211;enable-buffers=128</p>
<p>`&#8211;enable-FEATURE=no&#8217;与上面提到的&#8217;&#8211;disable-FEATURE&#8217;是同义的.</p>
<p>&#8211;with-PACKAGE[=ARG]</p>
<p>　　在自由软件社区里,有使用已有软件包和库的优秀传统.当用&#8217;configure&#8217;来配置一个源码树时,可以提供其他已经安装的软件包的信息.例如,倚赖于Tcl和Tk的BLT器件工具包.要配置BLT,可能需要给&#8217;configure&#8217;提供一些关于我们把Tcl和Tk装的何处的信息:</p>
<p>$ ./configure &#8211;with-tcl=/usr/local &#8211;with-tk=/usr/local</p>
<p>&#8216;&#8211;with-PACKAGE=no&#8217;与下面将提到的&#8217;&#8211;without-PACKAGE&#8217;是同义的.</p>
<p>&#8211;without-PACKAGE</p>
<p>　　有时候你可能不想让你的软件包与系统已有的软件包交互.例如,你可能不想让你的新编译器使用GNU ld.通过使用这个选项可以做到这一点:</p>
<p>$ ./configure &#8211;without-gnu-ld</p>
<p>&#8211;x-includes=DIR</p>
<p>　　这个选项是&#8217;&#8211;with-PACKAGE&#8217;选项的一个特例.在Autoconf最初被开发出来时,流行使用&#8217;configure&#8217;来作为Imake 的一个变通方法来制作运行于X的软件.&#8217;&#8211;x-includes&#8217;选项提供了向&#8217;configure&#8217;脚本指明包含X11头文件的目录的方法.</p>
<p>&#8211;x-libraries=DIR</p>
<p>　　类似的,&#8217;&#8211;x-libraries&#8217;选项提供了向&#8217;configure&#8217;脚本指明包含X11库的目录的方法.</p>
<p>　　在源码树中运行&#8217;configure&#8217;是不必要的同时也是不好的.一个由&#8217;configure&#8217;产生的良好的&#8217;Makefile&#8217;可以构筑源码属于另一棵树的软件包.在一个独立于源码的树中构筑派生的文件的好处是很明显的:派生的文件,如目标文件,会凌乱的散布于源码树.这也使在另一个不同的系统或用不同的配置选项构筑同样的目标文件非常困难.建议使用三棵树:一棵源码树(source tree),一棵构筑树(build tree),一棵安装树(install tree).这里有一个很接近的例子,是使用这种方法来构筑GNU malloc包:</p>
<p>$ gtar zxf mmalloc-1.0.tar.gz</p>
<p>$ mkdir build &amp;&amp; cd build</p>
<p>$ ../mmalloc-1.0/configure</p>
<p>creating cache ./config.cache</p>
<p>checking for gcc&#8230; gcc</p>
<p>checking whether the C compiler (gcc ) works&#8230; yes</p>
<p>checking whether the C compiler (gcc ) is a cross-compiler&#8230; no</p>
<p>checking whether we are using GNU C&#8230; yes</p>
<p>checking whether gcc accepts -g&#8230; yes</p>
<p>checking for a BSD compatible install&#8230; /usr/bin/install -c</p>
<p>checking host system type&#8230; i586-pc-linux-gnu</p>
<p>checking build system type&#8230; i586-pc-linux-gnu</p>
<p>checking for ar&#8230; ar</p>
<p>checking for ranlib&#8230; ranlib</p>
<p>checking how to run the C preprocessor&#8230; gcc -E</p>
<p>checking for unistd.h&#8230; yes</p>
<p>checking for getpagesize&#8230; yes</p>
<p>checking for working mmap&#8230; yes</p>
<p>checking for limits.h&#8230; yes</p>
<p>checking for stddef.h&#8230; yes</p>
<p>updating cache ../config.cache</p>
<p>creating ./config.status</p>
<p>这样这棵构筑树就被配置了,下面可以继续构筑和安装这个包到默认的位置&#8217;/usr/local&#8217;:</p>
<p>$ make all &amp;&amp; make install</p>
<p>一个软件包通过编译源代码安装后，如何完全的卸载？？</p>
<p>如果原先的source还在的话，很多source的Makefile都有写uninstall规则，直接在Souce里make uninstall就可行，不过碰到无良作者没写的，那一句一句看Makefile里install部分他都干了些什么，然后挨个删除。</p>
<p>如果source没了&#8230;..那就一边郁闷吧</p>
<p>到目前为止, 我装的都可以make uninstall&#8230;&#8230;.</p>
<p>(因为总是不小心装错地方, 结果就make uninstall&amp;&amp;make clean,然后重新configure&#8230;&#8230;)</p>
<p>linux下软件的基本安装和卸载</p>
<p>Linux软件的安装和卸载一直是困扰许多新用户的难题。在Windows中，我们可以使用软件自带的安装卸载程序或在控制面板中的&#8220;添加/删除程序&#8221;来实现。与其相类似，在Linux下有一个功能强大的软件安装卸载工具，名为 RPM。它可以用来建立、安装、查询、更新、卸载软件。该工具是在命令行下使用的。在Shell的提示符后输入rpm，就可获得该命令的帮助信息。</p>
<p>软件的安装</p>
<p>Linux下软件的安装主要有两种不同的形式。第一种安装文件名为xxx.tar.gz；另一种安装文件名为xxx.i386.rpm。以第一种方式发行的软件多为以源码形式发送的；第二种方式则是直接以二进制形式发送的。</p>
<p>对于第一种，安装方法如下：</p>
<p>1 .首先，将安装文件拷贝至你的目录中。例如，如果你是以root身份登录上的，就将软件拷贝至/root中。</p>
<p>#cp xxx.tar.gz /root</p>
<p>2 .由于该文件是被压缩并打包的,应对其解压缩。命令为：</p>
<p>#tar xvzf filename.tar.gz 如果是filename.tar.bz2格式的，应该是tar jxvf filename.tar.bz2来解压</p>
<p>3. 执行该命令后，安装文件按路径，解压缩在当前目录下。用ls命令可以看到解压缩后的文件。通常在解压缩后产生的文件中，有&#8220;Install&#8221;的文件。该文件为纯文本文件，详细讲述了该软件包的安装方法。</p>
<p>4.执行解压缩后产生的一个名为configure的可执行脚本程序。它是用于检查系统是否有编译时所需的库，以及库的版本是否满足编译的需要等安装所需要的系统信息。为随后的编译工作做准备。命令为： #./configure</p>
<p>如果您想把软件安装到指定目录，应该用#./configure &#8211;prefix=/您自己指定的目录，比如我想把一个mlterm安装到/opt/mlterm目录中，应该如下输入</p>
<p>#./configure &#8211;prefix=/opt/mlterm</p>
<p>5.检查通过后，将生成用于编译的MakeFile文件。此时，可以开始进行编译了。编译的过程视软件的规模和计算机性能的不同，所耗费的时间也不同。命令为： #make。</p>
<p>6.成功编译后，键入如下的命令开始安装：</p>
<p>#make install</p>
<p>7.安装完毕，应清除编译过程中产生的临时文件和配置过程中产生的文件。键入如下命令：</p>
<p>#make clean</p>
<p>#make distclean</p>
<p>至此，软件的安装结束。</p>
<p>对于第二种，其安装方法要简单得多。</p>
<p>同第一种方式一样，将安装文件拷贝至你的目录中。然后使用rpm来安装该文件。命令如下：</p>
<p>#rpm -i filename.i386.rpm</p>
<p>rpm将自动将安装文件解包，并将软件安装到缺省的目录下。并将软件的安装信息注册到rpm的数据库中。参数i的作用是使rpm进入安装模式。</p>
<p>软件的卸载</p>
<p>1.软件的卸载主要是使用rpm来进行的。卸载软件首先要知道软件包在系统中注册的名称。键入命令：</p>
<p>#rpm -q -a</p>
<p>即可查询到当前系统中安装的所有的软件包。</p>
<p>2. 确定了要卸载的软件的名称，就可以开始实际卸载该软件了。键入命令：</p>
<p>#rpm -e [package name]</p>
<p>即可卸载软件。参数e的作用是使rpm进入卸载模式。对名为[package name]的软件包进行卸载。由于系统中各个软件包之间相互有依赖关系。如果因存在依赖关系而不能卸载，rpm将给予提示并停止卸载。你可以使用如下的命令来忽略依赖关系，直接开始卸载：</p>
<p>#rpm -e [package name] -nodeps</p>
<p>忽略依赖关系的卸载可能会导致系统中其它的一些软件无法使用</p>
<p>如果想知道rpm包安装到哪里了呢？</p>
<p>应该用 #rpm -ql [package name]</p>
<p>3.如何卸载用源码包安装的软件？</p>
<p>最好是看README和INSTALL ；一般的情况下都有说，但大多软件没有提供源码包的卸载方法；我们可以找到软件的安装点删除。主要看你把它安装在哪了。</p>
<p>比如：</p>
<p>如果安装软件时，指定个目录。这个问题也不会难；</p>
<p>比如用源码包安装gaim 的</p>
<p>#./configure &#8211;prefix=/opt/gaim</p>
<p>#make</p>
<p>#make install</p>
<p>如果安装mlterm</p>
<p>#./configure &#8211;prefix=/opt/mlterm</p>
<p>#make</p>
<p>#make install</p>
<p>把源码包安装的软件，都指定安装在 /opt目录中，这样不就知道了？？</p>
<p>如果删除，就删除相应的软件目录；</p>
<p>有些软件要在解压安装目录中执行 make uninstall ，这样就卸载掉了</p>
<img src ="http://www.cppblog.com/lauer3912/aggbug/136421.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lauer3912/" target="_blank">lauer3912</a> 2010-12-14 23:23 <a href="http://www.cppblog.com/lauer3912/articles/136421.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ubuntu 常用命令收集</title><link>http://www.cppblog.com/lauer3912/articles/136420.html</link><dc:creator>lauer3912</dc:creator><author>lauer3912</author><pubDate>Tue, 14 Dec 2010 15:22:00 GMT</pubDate><guid>http://www.cppblog.com/lauer3912/articles/136420.html</guid><wfw:comment>http://www.cppblog.com/lauer3912/comments/136420.html</wfw:comment><comments>http://www.cppblog.com/lauer3912/articles/136420.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lauer3912/comments/commentRss/136420.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lauer3912/services/trackbacks/136420.html</trackback:ping><description><![CDATA[<p>所有命令按字母顺序排列,只介绍最常用参数,相信等你看完之后,就有能力man更详细的用法了 <img class=wp-smiley alt=:) src="http://www.ownlinux.cn/wp-includes/images/smilies/icon_smile.gif"> </p>
<p>此前own也曾发表过几篇文章,详细的介绍了几个命令比如ls,sudo,chmod等等,看不懂man的,请自行查找:)<br><span id=more-2649></span><br>直到前天群里有人问cd命令怎么用..暴寒~~想想也是,一定有很多在win下也没接触过命令的吧?于是决定写点东东</p>
<p><strong>apt-get:</strong><br>debian系系统的软件包管理程序(其图形化前端就是大名鼎鼎的新立得了),会自动帮你搞定依赖关系<br>最常用参数:<br>update&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-与你的软件源(在/etc/apt/sources.list中列出)更新软件包列表,换源后需要执行<br>upgrade&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-根据update得到的源软件库与本地已经安装的对比,(如果需要升级就)全部升级<br>install&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-安装软件包(可以使用tab补全软件包的名字,比较方便)<br>remove&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-卸载软件包<br>purge&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-卸载软件包,同时删除该软件的配置文件<br>source&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-从源里下载软件包的源码到当前目录(执行此命令的目录)并解压(除非指定&#8211;download-only参数)<br>该地址由/etc/apt/sources.list中的 deb-src 行指定<br>check&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-用来(自动)修复(已装)软件包之间的依赖关系<br>clean&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-清除/var/cache/apt/archives/包括其子目录partial/下的所有软件包缓存<br>autoclean&nbsp;&nbsp;&nbsp; —-比clean常用,我的理解是删除低版本的缓存而保留高版本的(或者包括非当前源里的软件包?)<br><strong>aptitude:</strong><br>此为PT同学补充,他的说法是aptitude比apt-get少个横线,tab补全比较容易(=.=)~大概神牛都比较懒吧<br>不得不提下蛋蛋童鞋以前说过的ubuntu彩蛋:) &lt;仅限于UBUNTU 8.04&gt;<br>man apt&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-最后会看到 &#8220;本apt有着超级牛力&#8221; or &#8220;this APT has a super-cow power&#8221;<br>man aptitude&nbsp;&nbsp;&nbsp; —-会看到 &#8220;这个aptitude没有超级牛力&#8221;<br>看看aptitude的参数,你就会明白为什么aptitude会标称&#8221;高级软件包管理程序&#8221;了<br>最常用参数:<br>search&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-在(你的源的)所有软件包列表中搜索该软件,search的表达式可以很复杂,具体看man<br>其余常用参数同apt-get</p>
<p><strong>cat:</strong><br>把(一个或多个)文件内容(连接)显示到标准输出<br>当文本文件很小,而且你只是想看下,并不打算用gedit或者vim之类编辑器编辑的时候,可以cat一下,我是用来配合grep使用</p>
<p><strong>cd:</strong><br>切换当前工作目录<br>不同于其他命令,这是一个shell内置命令,所以没有手册页可看&#8230;够基础,所以才会出现在本篇文章中(=.=)郁闷<br>最常用参数:<br>.&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-切换到当前目录(貌似没有什么意义)(.这个目录可以通过ls -a看到)<br>..&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-切换到上层目录<br>~&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-回到家目录(/home/你的登录名/)</p>
<p><strong>chmod</strong>:<br>改变文件的权限位<br>linux文件系统的权限位有两种表示方法,要是详细说下,非得累死老鼠不可=.=,所以只说8进制数表示:)<br>简要介绍下:ls -l可以显示出文件的权限,比如(-rwxr-xr&#8211;),代表了三种用户的权限<br>第一个rwx,代表文件所有者的权限,即(读,写,执行),用二进制表示为111,代表八进制中的4+2+1=7<br>第二个r-x,代表文件所有者同一用户组其他用户的权限,即(读, ,执行),用二进制表示为101,代表八进制中的5=4+0+1<br>第三个r&#8211;,代表其他用户的权限,即(读, , ),二进制表示为100,代表八进制的4=4+0+0<br>所以这个文件的权限位为754<br>这也就是chmod的用法,例如chmod 751 myfile #将该文件权限设定为rwxr-x&#8211;x<br>最常用参数:<br>-v&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-列出当前正在执行的步骤<br>-R&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-递归式,即改变非空目录下的一切为指定权限</p>
<p><strong>cp</strong>:<br>拷贝文件和目录<br>最常用参数:<br>-b&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-为每个已经存在的目的文件作个备份<br>-d&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-遇到软链接时不拷贝软链接所指向的文件;拷贝时保留links属性(链接数)<br>-p&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-保留文件的访问权限,所有者,和时间戳<br>-R和-r&nbsp;&nbsp;&nbsp; —-递归式拷贝(cp过程遇到非空目录才有效),即拷贝目录,子目录,子目录的子目录&#8230;..<br>-a&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-作用同-dpR<br>-s&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-并不真的做拷贝,而只是为每个文件作软链接(符号链接)<br>-u&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-同下面 mv 的-u参数</p>
<p><strong>head, tail</strong><br>就像这两个名字,一个显示文件头部,一个显示尾部<br>最常用参数:<br>-n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-指定输出的(头部或尾部)行数, 当没有此参数时,默认显示10行</p>
<p><strong>ifconfig</strong>:<br>配置网卡<br>最常用参数:<br>没有参数&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-列出当前活动网卡的状态<br>-a&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-列出所有网卡的状态<br>interface&nbsp;&nbsp;&nbsp; —-指定网卡名称比如eth0<br>up&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-唤醒该网卡<br>down&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-关闭该网卡<br>arp,mtu,netmask addr,&#8230;等等很多参数 =.=</p>
<p><strong>ln</strong>:<br>为文件建立链接<br>linux的链接分为两种:硬链接和软链接,ln默认建立硬链接(hard link),两种的区别请自己搜索:)<br>最常用参数:<br>-s&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-建立软链接(符号链接,可以理解为win下的快捷方式)<br>-f&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-如果要建立的链接名已经存在,则删除之</p>
<p><strong>ls</strong>:<br>显示目录内容<br>最常用参数:<br>-a&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-显示指定目录所有文件,包括文件名以 . 开头的文件<br>-l&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-显示文件详细信息(包括文件类型,权限,修改时间,访问时间,大小,文件名&#8230;)<br>-h&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-将文件大小以方便阅读的形式表示出来,配合 -l 参数使用,常有奇效</p>
<p><strong>man</strong>:<br>阅读参考手册of~<br>题外话:HX说这是linux最最难学的命令,因为man你学好了,就没有什么命令能难倒你了,=.=无敌了<br>man可以查的不仅仅是命令额(当然,因为man是无敌的嘛/ch)<br>最常用参数:<br>man 阿拉伯数字<br>阿拉伯数字1: 可执行程序(一般为用户安装的程序,如果提供了manpages的话)和shell命令<br>阿拉伯数字2: 系统调用(例如 open调用,socket调用,chmod调用 等等等等),先装manpages-dev先<br>阿拉伯数字3: 库函数调用(例如 man 3 printf),先装manpages-dev先<br>&#8230;&#8230;.<br>当你执行man ls 时, 和 man 1 ls结果是一样的,因为ls在man手册中只有一个入口<br>当你想看chmod调用的手册页时,就要特别指定 man 2 chmod了~~因为chmod不止有一个入口<br>在man的时候,可以通过j,k上下移动(和vi中类似),可以通过/查询,通过n,N查找下个,上个匹配(和vi类似)<br>q退出(也和vi类似&#8230;.)<br>比较有意思的一点:<br>由于man 本身是个命令,所以,连man都是可以man的 =.=</p>
<p><strong>mkdir</strong>:<br>创建一个目录<br>最常用参数:<br>-p&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-如果给出的路径中父目录不存在,则同时创建父目录</p>
<p><strong>mount</strong>:<br>挂载文件系统(可理解为挂载一个分区)<br>最常用参数:<br>-t&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-指定文件系统类型,比如iso9660(挂载iso镜像为光盘,相当于虚拟光驱),ntfs,ext3,rfs等等<br>-l&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-列出所有已经挂载的文件系统,支持卷标<br>-a&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-挂载fstab中记录的所有分区<br>-n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-挂载的时候不写入/etc/mtab<br>-o&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-相当常用的一个参数,指定挂载文件系统的&#8221;选项&#8221;,比如noatime,用来挂载BT专用分区很合适<br><strong>mv</strong>:<br>移动或者更名文件,取决于目的目录是否为当前目录<br>最常用参数:<br>-b&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-为每个已经存在的目的文件做个备份(防止覆盖)<br>-f&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-不提示是否覆盖已经存在的目的文件<br>-i&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-与-f参数相反<br>-u&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-仅当源文件比目的文件更新或者目的文件不存在时候才移动<br>-v&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-显示移动文件的进度(个人总是推荐使用此参数,明白你在做什么)</p>
<p><strong>ps,top:</strong><br>列出当前命令的执行状态,ps为静态,top为动态(top时&#8217;q'退出)<br>ps:这个命令本人更常用些,推荐给你看看=.=<br>最常用参数(ps多用参数集合,而不是单个参数,并且配合grep使用)<br>-ef&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-以标准语法列出当前所有进程状态,例如ps -ef | grep eva #列出eva的进程状态<br>aux&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-以BSD语法列出&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..<br>-ejH&nbsp;&nbsp;&nbsp; —-列出进程树<br>-eLf&nbsp;&nbsp;&nbsp; —-同时列出线程状态</p>
<p><strong>rm, rmdir:</strong><br>rm:删除文件或目录,rmdir:删除一个空目录(此命令个人认为没啥用,可以用rm -r替代)<br>rm最常用参数:<br>-f&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-不提示不存在的文件,直接跳过<br>-i&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-每个删除动作都提示 (=.= 删除多的话岂不是烦死)<br>-I&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-删除多个文件(多于3个时)或者递归式删除(对于非空目录)提示一次<br>-r和-R&nbsp;&nbsp;&nbsp; —-递归式删除该目录下的一切东东<br>-v&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-显示每个文件的删除动作(个人总是推荐使用此参数,明白你在做什么)</p>
<p><strong>sudo,su:</strong><br>这大概是装好系统之后第一个要用的命令吧?<br>sudo我们主要用来临时提升权限,主要用以管理员(超级用户)的权限来运行命令,当需要修改当前登录用户力所不能及的文件/目录<br>时需要用sudo,或者su -c,当然sudo和su的作用范围不仅仅如此<br>可以使用visudo来编辑/etc/sudoers文件来修改sudo更详细的动作(比如记住密码的时间戳长度),请谨慎修改!</p>
<p><strong>sh:</strong><br>在终端解释执行<br>类似于&#8217;./&#8217;的形式,但PT给了不同点: &#8216;./&#8217;仅仅对当前目录下有执行权限的程序才有效,&#8217;sh&#8217;则不管这套<br>想想也是哈, &#8216;./&#8217;仅仅是给出了一个文件的路径(在当前目录下)而已, 但这个文件能不能执行就不好说了<br>所以用sh总是正确的</p>
<p><strong>shutdown:</strong><br>关闭系统,如果停留在TTY,请改用halt, poweroff等命令<br>常用参数:<br>+m&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-指定关机延迟的分钟<br>-c&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-取消一个等待关机的请求(关掉运行此命令的终端也可:))<br>now&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-立即关机<br>hh:mm&nbsp;&nbsp;&nbsp; —-手动指定时间(以24小时计)</p>
<p><strong>tar:</strong><br>打包/解包<br>这个tar不多说了吧..到处都是tar.gz,tar.bz2的东东<br>和ps命令一样,tar一般不用单个参数,而是多个参数的组合,记住参数x是解压(extract),c是创建包(creat)即可<br>最常用参数:<br>-xvf&nbsp;&nbsp;&nbsp; —-详细列出解包的步骤<br>-cvf&nbsp;&nbsp;&nbsp; —-详细列出打包的步骤<br>-j&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-用来说明这是个tar.bz2包,例如tar -xjvf myfile.tar.bz2<br>-t&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-列出包中的文件列表<br>—&#8211;打包时常追加的参数:<br>-r&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-追加到压缩包中<br>-u&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-只把比包中更新的文件追加进去<br>-h&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; —-不把符号链接添加到包中,而是添加此符号链接指向的文件<br>附加说明:tar是个太强大的东东,常用的操作也就是打包解包,高级功能还是参阅man =.=</p>
<p><strong>touch:</strong><br>改变文件时间戳,默认包括修改时间和创建时间,默认修改为当前时间,默认如果文件不存在就新建(=.=是不是很罗嗦)</p>
<p>额&#8220;差不多就收集了这么多,感谢Ubuntu Linux群(46603737),分群(514034120)众菜的帮助</p>
<p>本文的目的很明确,只方便菜鸟,不收录高级命令</p>
<p>如果还有类似命令没有提及的,在评论中补充即可:)</p>
<img src ="http://www.cppblog.com/lauer3912/aggbug/136420.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lauer3912/" target="_blank">lauer3912</a> 2010-12-14 23:22 <a href="http://www.cppblog.com/lauer3912/articles/136420.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>