??xml version="1.0" encoding="utf-8" standalone="yes"?>国产99久久久国产精品~~牛,亚洲AV伊人久久青青草原,久久精品一区二区三区中文字幕http://www.shnenglu.com/sunrise/archive/2012/12/03/195912.htmlSunRise_atSunRise_atMon, 03 Dec 2012 03:02:00 GMThttp://www.shnenglu.com/sunrise/archive/2012/12/03/195912.htmlhttp://www.shnenglu.com/sunrise/comments/195912.htmlhttp://www.shnenglu.com/sunrise/archive/2012/12/03/195912.html#Feedback0http://www.shnenglu.com/sunrise/comments/commentRss/195912.htmlhttp://www.shnenglu.com/sunrise/services/trackbacks/195912.htmlsvn常用命o
svn co https://IP/svn/apps/ontology --username yu.chen --password yu.chen
svn mkdir https://IP/svn/apps/ontology -m "mkdir ontology"
svn ci -m “add test file for my test“ test.php
svn delete https://IP/svn/apps/ontology -m “delete test file”
q接服务?/div>
ssh mii@192.168.1.54
密码Qyu&new
ssh lexxe@222.44.14.7
密码Qlexxe
7z x -ot temp.7z
scp
1、获取远E服务器上的文g
scp root@www.vpser.net:/root/lnmp0.4.tar.gz /home/lnmp0.4.tar.gz
2、获取远E服务器上的目录
scp -r root@www.vpser.net:/root/lnmp0.4/ /home/lnmp0.4/
3、将本地文g上传到服务器?/div>
scp /home/lnmp0.4.tar.gz root@www.vpser.net:/root/lnmp0.4.tar.gz
4、将本地目录上传到服务器?/div>
scp -r /home/lnmp0.4/ root@www.vpser.net:/root/lnmp0.4/
首先要安装scrot:
抓取桌面Qscrot desktop.pngQ该命o当前的整个桌面抓取下来Qƈ保存?desktop.png 文g。可以在当前的目录中扑ֈ此图像文件?/div>
  抓取H口Qscrot -bs window.pngQ选项 b ?scrot 在抓取窗口时一同将外边框抓取下来,?s 选项则让用户选择所要抓取的是何H口?/div>
  抓取区域Qscrot -s rectangle.pngQ在执行此命令后Q用鼠标拖曳的矩Ş区域被 scrot 抓取下来?/div>
  高使用对于普通的抓取使用 scrot 的基便以应付了。但在某些特D情况之下,使用 scrot 抓取囑փ需要讲I一些技巧?/div>
  延时抓取Qscrot -cd 10 menu.pngQ此命o中的 d 选项用于延时抓取囑փQ其后的 10 代表延时 10 U?前面的选项 c 昄倒计时。在抓取菜单或是命o提示Ӟ该技巧将充分展示光力?/div>
  生成~图Qscrot -t 50% thumb.pngQ这个命令在抓取囑փ的同时生成该囑փ的羃略图。选项 t 打开此功能,其后?50% 为原囄~放癑ֈ比?/div>
  更改品质Qscrot -q 70 quality.jpgQ此命o中的 q 选项用于更改所抓图像的品质Q其数g?1-100 之间Q默认ؓ 75。数D大,意味着囑փ品质高;同时Q图像的压羃率也p低,占用I间大?/div>
  操作抓图Qscrot action.png -e ‘mv $f ~/images/’Q该命o抓取的囑փUd?~/images/ 目录。显Ӟ操作囑փ的功能由 e 选项开启,其中?$f 代表原图的\?文g名?/div>
  以上CZ皆指定了需要保存的抓图的文件名U。实际上Q如果不指定名称Q那?scrot 在抓取图像后会自动用当前的日期旉、宽度高度的l合来生成文件名U?/div>

自己在工作中的一些常用命令,方便自己查阅?/div>
linux下的命o使用
一.l计行数
- c l计字节数?/div>
- l l计行数?/div>
- w l计字数?/div>
1.l计demo目录下,js文g数量Q?/div>
find demo/ -name "*.js" |wc -l
2.l计demo目录下所有js文g代码行数Q?/div>
find demo/ -name "*.js" |xargs cat|wc -l ?wc -l `find ./ -name "*.js"`|tail -n1
3.l计demo目录下所有js文g代码行数Q过滤了IQ?/div>
find /demo -name "*.js" |xargs cat|grep -v ^$|wc -l
4.查看文g改变大小
ls -al
扚w下蝲?/div>
如果有多个文仉要下载,那么可以生成一个文Ӟ把每个文件的URL写一行,例如生成文gdownload.txtQ然后用命oQwget -i download.txt


SunRise_at 2012-12-03 11:02 发表评论
]]>linux如何查进E、杀q程Q重启进E? http://www.shnenglu.com/sunrise/archive/2012/12/03/195910.htmlSunRise_atSunRise_atMon, 03 Dec 2012 02:42:00 GMThttp://www.shnenglu.com/sunrise/archive/2012/12/03/195910.htmlhttp://www.shnenglu.com/sunrise/comments/195910.htmlhttp://www.shnenglu.com/sunrise/archive/2012/12/03/195910.html#Feedback0http://www.shnenglu.com/sunrise/comments/commentRss/195910.htmlhttp://www.shnenglu.com/sunrise/services/trackbacks/195910.html1.查进E?nbsp;
    ps命o查找与进E相关的PIDP 
    ps a 昄现行l端Z的所有程序,包括其他用户的程序?nbsp;
    ps -A 昄所有程序?nbsp;
    ps c 列出E序Ӟ昄每个E序真正的指令名Uͼ而不包含路径Q参数或帔R服务的标C?nbsp;
    ps -e 此参数的效果和指?A"参数相同?nbsp;
    ps e 列出E序Ӟ昄每个E序所使用的环境变量?nbsp;
    ps f 用ASCII字符昄树状l构Q表辄序间的相互关pR?nbsp;
    ps -H 昄树状l构Q表C程序间的相互关pR?nbsp;
    ps -N 昄所有的E序Q除了执行ps指ol端Z的程序之外?nbsp;
    ps s 采用E序信号的格式显C程序状c?nbsp;
    ps S 列出E序Ӟ包括已中断的子程序资料?nbsp;
    ps -t<l端机编?gt; 指定l端机编Pq列出属于该l端机的E序的状c?nbsp;
    ps u 以用户ؓȝ格式来显C程序状c?nbsp;
    ps x 昄所有程序,不以l端机来区分?nbsp;
   
    最常用的方法是ps aux,然后再通过道使用grep命oqo查找特定的进E?然后再对特定的进E进行操作?nbsp;
    ps aux | grep program_filter_word,ps -ef |grep tomcat 

ps -ef|grep java|grep -v grep 昄出所有的javaq程Q去处掉当前的grepq程?nbsp;
   
2.杀q程 
   昄CPU使用情况以及部分q程Qtop
   昄q接端口使用q程Qnetstat -noap/-an |grep NAME
   使用kill命ol束q程Qkill xxx 
   常用Qkill Q? 324 
   Linux下还提供了一个killall命oQ可以直接用进E的名字而不是进E标识号Q例如:# killall -9 NAME 

3.q入到进E的执行文g所在的路径下,执行文g ./文g?nbsp;

附: 

q是本h׃两天旉整理得来的,一些最常用的地球h都知道的命oqdQ最后提供pdf手册下蝲 

1. 更改档案拥有?nbsp;
命o : chown [-cfhvR] [--help] [--version] user[:group] file... 
功能 : 更改文g或者文件夹的拥有?nbsp;
参数格式 : 
      user : 新的档案拥有者的使用?IDgroup : 新的档案拥有者的使用者群?group) 
         -c : 若该档案拥有者确实已l更改,才显C其更改动作 
         -f : 若该档案拥有者无法被更改也不要显C错误讯?nbsp;
         -h : 只对于连l?link)q行变更Q而非?link 真正指向的档?nbsp;
         -v : 昄拥有者变更的详细资料 
         -R : 对目前目录下的所有档案与子目录进行相同的拥有者变?即以递回的方式逐个变更) 

例如Qchown -R oracle:oinstall /oracle/u01/app/oracle  
      更改目录拥有者ؓoracle 

2. 修改权限 
    命oQchmod (change mode) 
    功能Q改变文件的d和执行权限。有W号法和八进制数字法?nbsp;
    选项Q?1)W号法: 
  命o格式Qchmod {u|g|o|a}{+|-|=}{r|w|x} filename 
          u (user)   表示用户本h?nbsp;
          g (group)  表示同组用户?nbsp;
          o (oher)   表示其他用户?nbsp;
          a (all)    表示所有用戗?nbsp;
          +          用于l予指定用户的许可权限?nbsp;
          -          用于取消指定用户的许可权限?nbsp;
          =          所许可的权限赋l文件?nbsp;
          r (read)   读许可,表示可以拯该文件或目录的内宏V?nbsp;
          w (write)  写许可,表示可以修改该文件或目录的内宏V?nbsp;
          x (execute)执行许可Q表C可以执行该文g或进入目录?nbsp;
  
          (2)八进制数字法Q?  
  命o格式Qchmod abc file 
  其中a,b,c各ؓ一个八q制数字Q分别表CUser、Group、及Other的权限?nbsp;
          4 (100)    表示可读?nbsp;
          2 (010)    表示可写?nbsp;
          1 (001)    表示可执行?nbsp;
  若要rwx属性则4+2+1=7Q?nbsp;
  若要rw-属性则4+2=6Q?nbsp;
  若要r-x属性则4+1=5?nbsp;

    例如Q? chmod a+rx filename 
            让所有用户可以读和执行文件filename?nbsp;
          # chmod go-rx filename 
            取消同组和其他用Ld执行文gfilename的权限?nbsp;
          # chmod 741 filename 
            让本人可d执行、同l用户可诅R其他用户可执行文gfilename?nbsp;
  # chmod -R 755 /home/oracle 
    递归更改目录权限Q本人可d执行、同l用户可d执行、其他用户可d执行 

3. 修改文g日期 
    命oQtouch 
    格式Qtouch filenae 
    功能Q改变文件的日期Q不Ҏ件的内容做改动,若文件不存在则徏立新文g?nbsp;
    例如Q? touch file 

4. 链接文g 
    命oQln (link) 
    格式Qln [option] filename linkname 
          ln [option] directory pathname 
    功能Qؓ文g或目录徏立一个链。其中,filename和directory是源文g名和 
          源目录名Qlinkname和pathname分别表示与源文g或源目录名相链接?nbsp;
          文g或目录?nbsp;
    选项Q?s  为文件或目录建立W号链接。不?s表示为文件或目录建立链?nbsp;
    注释Q链接的目地在于Q对一个文件或目录赋予两个以上的名字,使其可以?nbsp;
          现在不同的目录中Q既可以使文件或目录׃nQ又可以节省盘I间?nbsp;
    例如Q? ln -s filename linkname 

5. 昄日期 
    命oQdate 
    例如Q? date 

6. 昄日历 
    命oQcal (calendar) 
    格式Qcal [month] year 
    功能Q显C某q内指定的日?nbsp;
    例如Q? cal 1998  

7. 昄文g头部 
    命oQhead 
    格式Qhead [option] filename 
    功能Q显C文件的头部 
    选项Q缺?nbsp; 昄文g的头10行?nbsp;
          -i    昄文g的开?i行?nbsp;
    例如Q? head filename 

8. 昄文gN 
    命oQtail 
    格式Qtail [option] filename 
    功能Q显C文件的N 
    选项Q缺?nbsp; 昄文g的末10行?nbsp;
          -i    昄文g最?i行?nbsp;
          +i    从文件的Wi行开始显C?nbsp;
    例如Q? tail filename 

9. 昄用户标识 
    命oQid 
    格式Qid [option] [user] 
    功能Q显C用h识及用户所属的所有组?nbsp;
    选项Q?a 昄用户名、用h识及用户所属的所有组 
    注释Q?nbsp;
    例如Q? id username 

10. 查看当前d的用?nbsp;
    命oQusers 

11. 昄都谁d到机器上 
    命oQwho 
    格式Qwho 
    功能Q显C当前正在系l中的所有用户名字,使用l端讑֤P注册旉?nbsp;
    例如Q? who 

12. 昄当前l端上的用户?nbsp;
    命oQwhoami 
    格式Qwhoami 
    功能Q显C出当前l端上用的用户?nbsp;
    例如Q? whoami 

13. L文g 
    命oQfind 
    格式Qfind pathname [option] expression 
    功能Q在所l的路经名下LW合表达式相匚w的文件?nbsp;
    选项Q?name     表示文g?nbsp;
          -user     用户名,选取该用h属的文g 
          -size     按大查找,以block为单位,一个block?12B 
          -mtime n  按最后一ơ修Ҏ间查找,选取n天内被修改的文g 
  -perm     按权限查?nbsp;
          -type     按文件类型查?nbsp;
  -atime    按最后一ơ访问时间查?nbsp;

    例如Q? find ./ -name '*abc*' -print 

14. 搜烦文g中匹配符 
    命oQgrep 
    格式Qgrep [option] pattern filenames 
    功能Q逐行搜烦所指定的文件或标准输入Qƈ昄匚w模式的每一行?nbsp;
    选项Q?i    匚w时忽略大写 
  -v 扑և模式失配的行 

    例如Q? grep -i 'java*' ./test/run.sh 

15. l计文g字数 
    命oQwc [option] filename 
    功能Q统计文件中的文件行数、字数和字符数?nbsp;
    选项Q?l l计文g的行?nbsp;
-w l计文g的单词数 
-c l计文g的字W数 
    注释Q若~省文g名则指标准输?nbsp;
    例如Q? wc -c ./test/run.sh 

16. 昄盘I间 
    命oQdf (disk free) 
    格式Qdf [option] 
    功能Q显C磁盘空间的使用情况Q包括文件系l安装的目录名、块讑֤名、?nbsp;
          字节数、已用字节数、剩余字节数占用癑ֈ比?nbsp;
    选项Q?nbsp;
-aQ显C全部的档案pȝ和各分割区的盘使用情Ş 
-iQ显Ci -nodes的用量 
-kQ大用k来表C?(默认? 
-tQ显C某一个档案系l的所有分割区盘使用?nbsp;
-xQ显CZ是某一个档案系l的所有分割区盘使用?nbsp;
-TQ显C每个分割区所属的档案pȝ名称 
-h: 表示使用「Human-readable」的输出Q也是在档案系l大?GB、MB {易ȝ格式?nbsp;
    注释Q?nbsp;
    例如Q? df -hi 

17. 查询档案或目录的盘使用I间 
    命oQdu (disk usage) 
    格式Qdu [option] [filename] 
    功能Q以指定的目录下的子目录为单位,昄每个目录内所有档案所占用的磁盘空间大?nbsp;
    选项Q?nbsp;
-aQ显C全部目录和其次目录下的每个档案所占的盘I间 
-bQ大用bytes来表C?(默认gؓk bytes) 
-cQ最后再加上总计 (默认? 
-sQ只昄各档案大的d 
-xQ只计算同属同一个档案系l的档案 
-LQ计所有的档案大小 
-h: 表示档案pȝ大小使用 GB、MB {易ȝ格式?nbsp;
    例如Q? du -a 
% du -sh /etc 只显C目录的d 
% du /etc | sort -nr | more l计l果用sort 指oq行排序Q?nbsp;
sort 的参?-nr 表示要以数字排序法进行反向排序?nbsp;

18. 昄q程 
    命oQps 
    格式Qps [option] 
    功能Q显C系l中q程的信息。包括进EID、控制进E终端、执行时间和命o?nbsp;
    选项Q?nbsp;
  -a 昄所有进E信?nbsp;
  -U uidlist 列出q个用户的所有进E?nbsp;
          -e 昄当前q行的每一个进E信?nbsp;
          -f 昄一个完整的列表 
  -x 昄包括没有l端控制的进E状??nbsp;
    注释Q?nbsp;
    例如Q? ps -ef 
  % ps -aux 然后再利用一个管道符号导向到grepL扄定的q程,然后再对特定的进E进行操作?nbsp;

19. l止q程 
    命oQkill 
    格式Qkill [option] pid 
    功能Q向指定的进E送信hl止q程。kill指o的用途是送一个signall某一个processQ?nbsp;
    因ؓ大部份送的都是用来杀?process ?SIGKILL ?SIGHUP Q因此称?kill  
    选项Q?9  l止q程 
    注释Qpid标示q程P可由ps命o得到?nbsp;
    例如Q? kill -9 pid 
    你也可以?kill -l 来察看可代替 signal L的数目字。kill 的详l情形请参阅 man kill?nbsp;

20. 查看自己的IP地址 
    命oQifconfig 
    格式Qifconfig -a 
   
21. 查看路由?nbsp;
    命oQnetstat 
    格式Qnetstat -rn 

22. q程d 
    命oQtelnet 
    格式Qtelnet hostname 

23. 文g传输 
    命oQftp (file transfer program) 
    格式Qftp hostname 
    功能Q网l文件传输及q程操作?nbsp;
    选项Qftp命oQ?nbsp;
           cd [dirname]  q入q程机的目录 
           lcd [dirname] 讄本地机的目录 
           dir/ls        昄q程的目录文?nbsp;
           bin           以二q制方式q行传输 
   asc           以文本文件方式进行传?nbsp;
           get/mget      从远E机取一个或多个文g 
           put/mput      向远E机送一个或多个文g 
           prompt        打开或关闭多个文件传送时的交互提C?nbsp;
           close         关闭与远E机的连?nbsp;
           quit          退出ftp 
   !/exit ftp登陆状态下Q?表示暂时退出ftp状态回到本地目录,exit表示q回ftp状?nbsp;
    注释Q?nbsp;
    例如Q? ftp hostname 

24. 查看自己的电子邮?nbsp;
    命oQmailx 
    格式Qmailx 
    选项Q?nbsp;
delete  删除 
next    下一?nbsp;
quit    退?nbsp;
         reply   回复    

25. 回忆命o 
    命oQhistory 
    格式Qhistory 
    功能Q帮助用户回忆执行过的命令?nbsp;
    选项Q?nbsp;
    注释Q?nbsp;
    例如Q? history 

26. |上对话 
    命oQtalk 
    格式Qtalk username 
    功能Q在|上与另一用户q行对话?nbsp;
    选项Q?nbsp;
    注释Q对话时pȝ把终端分Z下两部分Q上半部昄自己键入信息Q下半部 
          昄Ҏ用户键入的信息。键入delete或Ctrl+C则结束对话?nbsp;
    例如Q? talk username 

27. 允许或拒l接受信?nbsp;
    命oQmesg (message) 
    格式Qmesg [n/y] 
    功能Q允许或拒绝其它用户向自己所用的l端发送信息?nbsp;
    选项Qn 拒绝其它用户向自己所用的l端写信?nbsp;
          y 允许其它用户向自己所用的l端写信息(~省| 
    注释Q?nbsp;
    例如Q? mesg n 

28. l其他用户写信息 
    命oQwrite 
    格式Qwrite username [ttyname] 
    功能Q给其他用户的终端写信息?nbsp;
    选项Q?nbsp;
    注释Q若Ҏ没有拒绝Q两用户可进行交谈,键入EOF或Ctrl+C则结束对话?nbsp;
    例如Qwrite username 

29. 创徏、修攏V删除用户和组 
    a. 创徏组Q?nbsp;
例如Q?groupadd oinstall    创徏组名ؓoinstall的组 
groupadd -g 344 dba  
创徏l号?44的组Q此时在/etc/passwd文g中生一个组IDQGIDQ是344的项目?nbsp;
    b. 修改组Q?nbsp;
groupmod:该命令用于改变用L帐号的属?nbsp;
groupmod –g 新的GID 用户l帐号名 
groupmod –n 新组?原组名:此命令由于改变用L的名U?nbsp;

    c. 删除组Q?nbsp;
groupdel l名Q该命o用于删除指定的组帐号 

    d. 新徏用户Q?nbsp;
命oQ?useradd [Qd home] [Qs shell] [Qc comment] [Qm [Qk template]] 
[Qf inactive] [Qe expire ] [Qp passwd] [Qr] name 
主要参数 
-cQ加上备注文字,备注文字保存在passwd的备注栏中。  
-dQ指定用L入时的启始目录?nbsp;
-DQ变更预讑ր{?nbsp;
-eQ指定̎L有效期限Q缺省表C永久有效?nbsp;
-fQ指定在密码q期后多天卛_闭该账号?nbsp;
-gQ指定用h属的组?nbsp;
-GQ指定用h属的附加组?nbsp;
-mQ自动徏立用Ld目录?nbsp;
-MQ不要自动徏立用Ld目录?nbsp;
-nQ取消徏立以用户名称为名的群l?nbsp;
-rQ徏立系l̎受?nbsp;
-sQ指定用L入后所使用的shell?nbsp;
-uQ指定用户ID受?nbsp;

举例Q?# useradd -g oinstall -G dba oracle  创徏Oracle用户 
    
    e. 删除用户 
命oQ?userdel 用户?nbsp;
删除指定的用户帐?nbsp;
userdel –r 用户?userdel 用户?rm 用户?Q删除指定的用户帐号及宿ȝ?nbsp;
例:#useradd -g root kkk //把kkk用户加入rootl里 

    f. 修改用户 
命oQ?usermod 
修改已有用户的信?nbsp;
usermod –l 旧用户名 新用户名Q?修改用户?nbsp;
usermod –L 用户名: 用于锁定指定用户账号Q其不能登陆系l?nbsp;
usermod –U 用户名: 寚w定的用户帐号q行解锁 
passwd –d 用户名: 使帐h口oQ即用户不需要口令就能登录系l?nbsp;
例:#usermod -l user2 user1 //把用户user2改名为user1 

30. 启动、关闭防火墙 
怹打开或则关闭 
chkconfig iptables on 
chkconfig iptables off 
x生效Q重启后q原 
service iptables start 
service iptables stop 
     或者: 
/etc/init.d/iptables start 
/etc/init.d/iptables stop 

31. 启动VSFTP服务 
x启动Q?/etc/init.d/vsftpd start 
x停止Q?/etc/init.d/vsftpd stop 

开机默认VSFTP服务自动启动: 
Ҏ一:(常用\方便) 
[root@localhost etc]# chkconfig --list|grep vsftpd ( 查看情况) 
vsftpd          0:off   1:off   2:off   3:off   4:off   5:off   6:off 
[root@localhost etc]# chkconfig vsftpd on  (执行ON讄) 
或?Ҏ? 
修改文g /etc/rc.local , 把行/usr/local/sbin/vsftpd & 插入文g中,以实现开动启动?nbsp;

32. vi技?nbsp;
a. q入输入模式 
新增 (append) 
a Q从光标所在位|後面开始新增资料,光标後的资料随新增资料向後移动?nbsp;
AQ从光标所在列最後面的地方开始新增资料?nbsp;

插入 (insert) 
iQ从光标所在位|前面开始插入资料,光标後的资料随新增资料向後移动?nbsp;
I Q从光标所在列的第一个非I白字元前面开始插入资料?nbsp;

开?(open) 
o Q在光标所在列下新增一列ƈq入输入模式?nbsp;
O: 在光标所在列上方新增一列ƈq入输入模式?nbsp;
b. 退出vi 
在指令模式下键入:q,:q!,:wq?x(注意:PQ就会退出vi。其?wq?x是存盘退出,?q是直接退出,如果文g已有新的变化Qvi会提CZ保存文g?q命o也会失效Q这时你可以?w命o保存文g后再?q 退出,或用:wq?x命o退出,如果你不想保存改变后的文Ӟ你就需要用:q!命oQ这个命令将不保存文件而直接退出vi?nbsp;

c. 删除与修Ҏ件的命oQ?nbsp;
xQ删除光标所在字W?nbsp;
dd Q删除光标所在的列?nbsp;
r Q修改光标所在字元,r 後接著要修正的字W?nbsp;
RQ进入取替换状态,新增文字会覆盖原先文字,直到?[ESC] 回到指o模式下ؓ止?nbsp;
sQ删除光标所在字元,q进入输入模式?nbsp;
SQ删除光标所在的列,q进入输入模式?nbsp;

d. 屏幕Lcd?nbsp;
Ctrl+u: 向文仉d?nbsp;
Ctrl+d: 向文件尾d?nbsp;
Ctrl+f: 向文件尾M?nbsp;
CtrlQb: 向文仉M?nbsp;
nz: 第n行滚臛_q顶部,不指定n时将当前行滚臛_q顶部?nbsp;

e. 删除命o 
ndw或ndW: 删除光标处开始及其后的n-1个字 
do: 删至行首 
d$: 删至行尾 
ndd: 删除当前行及其后n-1?nbsp;
x或X: 删除一个字W,x删除光标后的Q而X删除光标前的 
Ctrl+u: 删除输入方式下所输入的文?nbsp;

f. 搜烦及替换命?nbsp;
/pattern: 从光标开始处向文件尾搜烦pattern 
?pattern: 从光标开始处向文仉搜烦pattern 
n: 在同一方向重复上一ơ搜索命?nbsp;
N: 在反方向上重复上一ơ搜索命?nbsp;
:s/p1/p2/g: 当前行中所有p1均用p2替代 
:n1,n2s/p1/p2/g: 第n1至n2行中所有p1均用p2替代 
:g/p1/s//p2/g: 文件中所有p1均用p2替换 

g. 复制Q黏?nbsp;
(1) 选定文本块,使用vq入可视模式Q移动光标键选定内容 
(2) 复制选定块到~冲区,用yQ复制整行,用yy 
(3) 剪切选定块到~冲区,用dQ剪切整行用dd 
(4) _脓~冲Z的内容,用p 

h. 其他 
在同一~辑H打开W二个文Ӟ?sp [filename] 
在多个编辑文件之间切换,用Ctrl+w


SunRise_at 2012-12-03 10:42 发表评论
]]>
Q{QFedora 16上源码徏立pydev + eclipse的OpenStack开发环境笔记草E?( by quqi99 )http://www.shnenglu.com/sunrise/archive/2012/10/26/193886.htmlSunRise_atSunRise_atFri, 26 Oct 2012 02:20:00 GMThttp://www.shnenglu.com/sunrise/archive/2012/10/26/193886.htmlhttp://www.shnenglu.com/sunrise/comments/193886.htmlhttp://www.shnenglu.com/sunrise/archive/2012/10/26/193886.html#Feedback1http://www.shnenglu.com/sunrise/comments/commentRss/193886.htmlhttp://www.shnenglu.com/sunrise/services/trackbacks/193886.html阅读全文

SunRise_at 2012-10-26 10:20 发表评论
]]>
wget命o详解http://www.shnenglu.com/sunrise/archive/2012/09/17/190937.htmlSunRise_atSunRise_atMon, 17 Sep 2012 01:06:00 GMThttp://www.shnenglu.com/sunrise/archive/2012/09/17/190937.htmlhttp://www.shnenglu.com/sunrise/comments/190937.htmlhttp://www.shnenglu.com/sunrise/archive/2012/09/17/190937.html#Feedback0http://www.shnenglu.com/sunrise/comments/commentRss/190937.htmlhttp://www.shnenglu.com/sunrise/services/trackbacks/190937.htmlwget是在Linux下开发的开放源代码的YӞ作者是Hrvoje NiksicQ后来被UL到包括Windows在内的各个^C。它有以下功能和特点Q?br />Q?Q支持断点下传功能;q一点,也是|络蚂蚁和FlashGet当年最大的卖点Q现在,Wget也可以用此功能Q那些网l不是太好的用户可以攑ֿ了;
Q?Q同时支持FTP和HTTP下蝲方式Q尽现在大部分软g可以使用HTTP方式下蝲Q但是,有些时候,仍然需要用FTP方式下蝲软gQ?br />Q?Q支持代理服务器Q对安全强度很高的系l而言Q一般不会将自己的系l直接暴露在互联|上Q所以,支持代理是下载Y件必L的功能;
Q?Q设|方便简单;可能Q习惯图形界面的用户已经不是太习惯命令行了,但是Q命令行在设|上其实有更多的优点Q最,鼠标可以点很多ơ,也不要担心是否错炚w标;
Q?Q程序小Q完全免费;E序可以考虑不计Q因为现在的盘实在太大了;完全免费׃得不考虑了,即ɾ|络上有很多所谓的免费软gQ但是,q些软g的广告却不是我们喜欢的;

wget虽然功能强大Q但是用v来还是比较简单的Q基本的语法是:wget [参数列表] URL。下面就l合具体的例子来说明一下wget的用法?br />1、下载整个http或者ftp站点?br />wget http://place.your.url/here
q个命o可以http://place.your.url/here 首页下蝲下来。?x会强制徏立服务器上一模一L目录Q如果?nd参数Q那么服务器上下载的所有内定w会加到本地当前目录?/p>

wget -r http://place.your.url/here
q?个命令会按照递归的方法,下蝲服务器上所有的目录和文Ӟ实质是下蝲整个|站。这个命令一定要心使用Q因为在下蝲的时候,被下载网站指向的所有地址?样会被下载,因此Q如果这个网站引用了其他|站Q那么被引用的网站也会被下蝲下来Q基于这个原因,q个参数不常用。可以用-l number参数来指定下载的层次。例如只下蝲两层Q那么?l 2?/p>

要是您想制作镜像站点Q那么可以用-m参数Q例如:wget -m http://place.your.url/here
q时wget会自动判断合适的参数来制作镜像站炏V此Ӟwget会登录到服务器上Q读入robots.txtq按robots.txt的规定来执行?/p>

2、断点箋传?br />当文件特别大或者网l特别慢的时候,往往一个文件还没有下蝲完,q接已l被切断Q此时就需要断点箋传。wget的断点箋传是自动的,只需要?c参数Q例如:
wget -c http://the.url.of/incomplete/file
使用断点l传要求服务器支持断点箋传?t参数表示重试ơ数Q例如需要重?00ơ,那么写-t 100Q如果设?t 0Q那么表C无Ih重试Q直到连接成功?T参数表示时{待旉Q例?T 120Q表C等?20U连接不上就超时?/p>

3、批量下载?br />如果有多个文仉要下载,那么可以生成一个文Ӟ把每个文件的URL写一行,例如生成文gdownload.txtQ然后用命oQwget -i download.txt
q样׃把download.txt里面列出的每个URL都下载下来。(如果列的是文件就下蝲文gQ如果列的是|站Q那么下载首)

4、选择性的下蝲?br />可以指定让wget只下载一cLӞ或者不下蝲什么文件。例如:
wget -m –reject=gif http://target.web.site/subdirectory
表示下蝲http://target.web.site/subdirectoryQ但是忽略gif文g?#8211;accept=LIST 可以接受的文件类型,–reject=LIST拒绝接受的文件类型?/p>

5、密码和认证?br />wget只能处理利用用户?密码方式限制讉K的网站,可以利用两个参数Q?br />–http-user=USER讄HTTP用户
–http-passwd=PASS讄HTTP密码
对于需要证书做认证的网站,只能利用其他下载工具了Q例如curl?/p>

6、利用代理服务器q行下蝲?br />如果用户的网l需要经q代理服务器Q那么可以让wget通过代理服务器进行文件的下蝲。此旉要在当前用户的目录下创徏一?wgetrc文g。文件中可以讄代理服务器:
http-proxy = 111.111.111.111:8080
ftp-proxy = 111.111.111.111:8080
分别表示http的代理服务器和ftp的代理服务器。如果代理服务器需要密码则使用Q?br />–proxy-user=USER讄代理用户
–proxy-passwd=PASS讄代理密码
q两个参数?br />使用参数–proxy=on/off 使用或者关闭代理?br />wgetq有很多有用的功能,需要用户去挖掘?/p>

附录Q?/p>

命o格式Q?br />wget [参数列表] [目标软g、网늚|址]

-V,–version 昄软g版本L后退出;
-h,–help昄软g帮助信息Q?br />-e,–execute=COMMAND 执行一?“.wgetrc”命o

-o,–output-file=FILE Y件输Z息保存到文gQ?br />-a,–append-output=FILEY件输Z息追加到文gQ?br />-d,–debug昄输出信息Q?br />-q,–quiet 不显CZ息;
-i,–input-file=FILE 从文件中取得URLQ?/p>

-t,–tries=NUMBER 是否下蝲ơ数Q?表示无穷ơ)
-O –output-document=FILE下蝲文g保存为别的文件名
-nc, –no-clobber 不要覆盖已经存在的文?br />-N,–timestamping只下载比本地新的文g
-T,–timeout=SECONDS 讄时旉
-Y,–proxy=on/off 关闭代理

-nd,–no-directories 不徏立目?br />-x,–force-directories 强制建立目录

–http-user=USER讄HTTP用户
–http-passwd=PASS讄HTTP密码
–proxy-user=USER讄代理用户
–proxy-passwd=PASS讄代理密码

-r,–recursive 下蝲整个|站、目录(心使用Q?br />-l,–level=NUMBER 下蝲层次

-A,–accept=LIST 可以接受的文件类?br />-R,–reject=LIST拒绝接受的文件类?br />-D,–domains=LIST可以接受的域?br />–exclude-domains=LIST拒绝的域?br />-L,–relative 下蝲兌链接
–follow-ftp 只下载FTP链接
-H,–span-hosts 可以下蝲外面的主?br />-I,–include-directories=LIST允许的目?br />-X,–exclude-directories=LIST 拒绝的目?/p>

中文文档名在q_的情况下会被~码Q?但是?–cut-dirs 时又是正常的Q?br />wget -r -np -nH –cut-dirs=3 ftp://host/test/
试.txt
wget -r -np -nH -nd ftp://host/test/
%B4%FA%B8%D5.txt
wget “ftp://host/test/*”
%B4%FA%B8%D5.txt

?g知名的原因,可能是ؓ了避开Ҏ档名Q?wget 会自动将抓取档名的部分用 encode_string 处理q, 所以该 patch 把?encode_string 处理?“%3A” q种东西Q??decode_string q原?“:”Qƈ套用在目录与档案名称的部分,decode_string ?wget 内徏的函式?/p>

wget -t0 -c -nH -x -np -b -m -P /home/sunny/NOD32view/  http://downloads1.kaspersky-labs.com/bases/ -o wget.log



SunRise_at 2012-09-17 09:06 发表评论
]]>
linux下各U解压方?/title><link>http://www.shnenglu.com/sunrise/archive/2012/08/16/187392.html</link><dc:creator>SunRise_at</dc:creator><author>SunRise_at</author><pubDate>Thu, 16 Aug 2012 09:49:00 GMT</pubDate><guid>http://www.shnenglu.com/sunrise/archive/2012/08/16/187392.html</guid><wfw:comment>http://www.shnenglu.com/sunrise/comments/187392.html</wfw:comment><comments>http://www.shnenglu.com/sunrise/archive/2012/08/16/187392.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/sunrise/comments/commentRss/187392.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/sunrise/services/trackbacks/187392.html</trackback:ping><description><![CDATA[<div style="margin-top: 0px; margin-right: auto; margin-bottom: 0px; margin-left: auto; padding-top: 17px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 672px; overflow-x: hidden; overflow-y: hidden; line-height: 1.3em; font-family: 宋体, Arial; background-color: #e8e8e8; "><div class="5zhnzf3" id="detail" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.3; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.5; font-size: 14px; "><span style="line-height: 18px; font-family: Arial, sans-serif, Helvetica, Tahoma; ">大致ȝ了一下linux下各U格式的压羃包的压羃、解压方法。但是部分方法我没有用到Q也׃全,希望大家帮我补充Q我随时修改完善,谢谢Q?nbsp;<br />   <br />  .tar <br />  解包Qtar xvf FileName.tar <br />  打包Qtar cvf FileName.tar DirName <br />  Q注Qtar是打包,不是压羃Q) <br />  ——————————————— <br />  .gz <br />  解压 1Qgunzip FileName.gz <br />  解压2Qgzip -d FileName.gz <br />  压羃Qgzip FileName <br />  .tar.gz ?.tgz <br />  解压Qtar zxvf FileName.tar.gz <br />  压羃Qtar zcvf FileName.tar.gz DirName <br />  ——————————————— <br />  .bz2 <br />  解压1Qbzip2 -d FileName.bz2 <br />  解压2Qbunzip2 FileName.bz2 <br />  压羃Q?bzip2 -z FileName <br />  .tar.bz2 <br />  解压Qtar jxvf FileName.tar.bz2        或tar --bzip xvf FileName.tar.bz2 <br />  压羃Qtar jcvf FileName.tar.bz2 DirName <br />   ——————————————— <br />  .bz <br />  解压1Qbzip2 -d FileName.bz <br />  解压2Qbunzip2 FileName.bz <br />  压羃Q未?nbsp;<br />  .tar.bz <br />  解压Qtar jxvf FileName.tar.bz <br />  压羃Q未?nbsp;<br />  ——————————————— <br />  .Z <br />  解压Quncompress FileName.Z <br />  压羃Qcompress FileName <br />  .tar.Z <br />  解压Qtar Zxvf FileName.tar.Z <br />  压羃Qtar Zcvf FileName.tar.Z DirName <br />  ——————————————— <br />  .zip <br />  解压Qunzip FileName.zip <br />  压羃Qzip FileName.zip DirName <br />  压羃一个目录?-r 参数Q?r 递归。例Q?$ zip -r FileName.zip DirName <br />  ——————————————— <br />  .rar <br />  解压Qrar x FileName.rar <br />  压羃Qrar a FileName.rar DirName <br />   <br />  rar 请到Qhttp://www.rarsoft.com/download.htm 下蝲Q?nbsp;<br />  解压后请rar_static拯?usr /bin目录Q其他由$PATH环境变量指定的目录也可以Q: <br />  [root@www2 tmp]# cp rar_static /usr/bin/rar <br />  ——————————————— <br />  .lha <br />  解压Qlha -e FileName.lha <br />  压羃Qlha -a FileName.lha FileName <br />   <br />  lha请到Qhttp://www.infor.kanazawa-it.ac.jp/~ishii/lhaunix/下蝲Q?nbsp;<br />  >解压后请?lha拯?usr/bin目录Q其他由$PATH环境变量指定的目录也可以Q: <br />  [root@www2 tmp]# cp lha /usr/bin/ <br />  ——————————————— <br />  .rpm <br />  解包Qrpm2cpio FileName.rpm | cpio -div <br />  ——————————————— <br />  .deb <br />  解包Qar p FileName.deb data.tar.gz | tar zxf - <br />  ——————————————— <br />  .tar .tgz .tar.gz .tar.Z .tar.bz .tar.bz2 .zip .cpio .rpm .deb .slp .arj .rar .ace .lha .lzh .lzx .lzs .arc .sda .sfx .lnx .zoo .cab .kar .cpt .pit .sit .sea <br />  解压QsEx x FileName.* <br />  压羃QsEx a FileName.* FileName <br />   <br />  sEx只是调用相关E序Q本wƈ无压~、解压功能,h意! <br />  sEx请到Q?http://sourceforge.net/projects/sex下蝲Q?nbsp;<br />  解压后请sEx拯?usr/bin目录Q其他由$PATH环境变量指定的目录也可以Q: <br />  [root@www2 tmp]# cp sEx /usr/bin/  Linux下常见文件解压方法及命o <br />  pȝ·System <br />   <br />  1.?a为扩展名的文? <br />  #tar xv file.a <br />  2.?z为扩展名的文? <br />  #uncompress file.Z <br />  3.?gz为扩展名的文? <br />  #gunzip file.gz <br />  4.?bz2为扩展名的文? <br />  #bunzip2 file.bz2 <br />  5.?tar.Z为扩展名的文? <br />  #tar xvZf file.tar.Z <br />  ?#compress -dc file.tar.Z | tar xvf <br />  6.?tar.gz/.tgz为扩展名的文? <br />  #tar xvzf file.tar.gz <br />  ?gzip -dc file.tar.gz | tar xvf - <br />  7.?tar.bz2为扩展名的文? <br />  #tar xvIf file.tar.bz2 <br />  ?bzip2 -dc file.tar.bz2 | xvf - <br />  8.?cpio.gz/.cgz为扩展名的文? <br />  #gzip -dc file.cgz | cpio -div <br />  9. ?cpio/cpio为扩展名的文? <br />  #cpio -div file.cpio <br />  或cpio -divc file.cpio <br />  10.?rpm为扩展名的文件安? <br />  #rpm -i file.rpm <br />  11.?rpm为扩展名的文件解压羃Q?nbsp;<br />   #rpm2cpio file.rpm | cpio -div <br />  12.?deb为扩展名的文件安装: <br />  #dpkg -i file.deb <br />  13.?deb为扩展名的文件解压羃: <br />  #dpkg-deb -fsys-tarfile file.deb | tar xvf - ar p <br />  file.deb data.tar.gz | tar xvzf - <br />  14.?zip为扩展名的文? <br />  #unzip file.zip <br />  在linux下解压Winzip格式的文?nbsp;<br />  要是装了jdk的话Q可以用 jar命oQ还可以使用unzip命o?nbsp;<br />  直接解压.tar.gz文g <br />  xxxx.tar.gz文g使用tar带zxvf参数Q可以一ơ解压开。XXXX为文件名?例如Q?nbsp;<br />  $tar zxvf xxxx.tar.gz 各种压羃文g的解压(安装ҎQ?nbsp;<br />   <br />  文g扩展?解压Q安装方法) <br />    <br />  .a ar xv file.a <br />  .Z uncompress file.Z <br />  .gz gunzip file.gz <br />  .bz2 bunzip2 file.bz2 <br />  .tar.Z tar xvZf file.tar.Z <br />  compress -dc file.tar.Z | tar xvf - <br />  .tar.gz/.tgz tar xvzf file.tar.gz <br />  gzip -dc file.tar.gz | tar xvf - <br />  .tar.bz2 tar xvIf file.tar.bz2 <br />  bzip2 -dc file.tar.bz2 | xvf - <br />  .cpio.gz/.cgz gzip -dc file.cgz | cpio -div <br />  .cpio/cpio cpio -div file.cpio <br />  cpio -divc file.cpio <br />  .rpm/install rpm -i file.rpm <br />  .rpm/extract rpm2cpio file.rpm | cpio -div <br />  .deb/install dpkg -i file.deb <br />  .deb/exrtact dpkg-deb -fsys-tarfile file.deb | tar xvf - <br />  ar p file.deb data.tar.gz | tar xvzf - <br />  .zip unzip file.zip <br />   <br />   <br />  bzip2 -d myfile.tar.bz2 | tar xvf <br />   <br />   <br />  tar xvfz myfile.tar.bz2 <br />   <br />   <br />  x 是解?nbsp;<br />  v 是复杂输?nbsp;<br />  f 是指定文?nbsp;<br />  z gz格式 <br />   <br />   <br />  gzip <br />  gzip[选项]要压~(或解压羃Q的文g?nbsp;<br />  -c输出写到标准输ZQƈ保留原有文g?nbsp;<br />  -d压~文件压~?nbsp;<br />  -lҎ个压~文Ӟ昄下列字段Q压~文件的大小Q未压羃文g的大、压~比、未压羃文g的名?nbsp;<br />  -r递归式地查找指定目录q压~或压羃其中的所有文件?nbsp;<br />  -t试压羃文g是正完整?nbsp;<br />  -vҎ一个压~和解压~的文gQ显C其文g名和压羃比?nbsp;<br />  -num-用指定的数字调整压羃的速度?nbsp;<br />  举例Q?nbsp;<br />  ?usr目录q包括它的子目录在内的全部文件做一备䆾Q备份文件名为usr.tar <br />  tar cvf usr.tar /home <br />  ?usr 目录q包括它的子目录在内的全部文件做一备䆾q进行压~,备䆾文g名是usr.tar.gz <br />  tar czvf usr.tar.gz /usr <br />  压羃一l文Ӟ文g的后~为tar.gz <br />  #tar cvf back.tar /back/ <br />  #gzip -q back.tar <br />  or <br />  #tar cvfz back.tar.gz /back/ <br />  释放一个后~为tar.gz 的文件?nbsp;<br />  #tar zxvf back.tar.gz <br />  #gzip back.tar.gz <br />  #tar xvf back.tar</span></p></div></div><div style="margin-top: 30px; margin-right: auto; margin-bottom: 0px; margin-left: auto; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 615px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #d6d6d6; border-right-color: #d6d6d6; border-bottom-color: #d6d6d6; border-left-color: #d6d6d6; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-image: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #e8e8e8; font-family: 宋体, Arial; line-height: normal; ">自:<a >http://blog.chinaunix.net/space.php?uid=22535114&do=blog&id=1773583</a></div><img src ="http://www.shnenglu.com/sunrise/aggbug/187392.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/sunrise/" target="_blank">SunRise_at</a> 2012-08-16 17:49 <a href="http://www.shnenglu.com/sunrise/archive/2012/08/16/187392.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ConfigureQMakefile.am, Makefile.in, Makefile文g之间关系http://www.shnenglu.com/sunrise/archive/2012/06/27/180444.htmlSunRise_atSunRise_atWed, 27 Jun 2012 02:31:00 GMThttp://www.shnenglu.com/sunrise/archive/2012/06/27/180444.htmlhttp://www.shnenglu.com/sunrise/comments/180444.htmlhttp://www.shnenglu.com/sunrise/archive/2012/06/27/180444.html#Feedback1http://www.shnenglu.com/sunrise/comments/commentRss/180444.htmlhttp://www.shnenglu.com/sunrise/services/trackbacks/180444.html

1.autoscan (autoconf): 扫描源代码以搜寻普通的可移植性问题,比如查编译器Q库Q头文g{,生成文gconfigure.scan,它是configure.ac的一个雏形?/p>

    your source files --> [autoscan*] --> [configure.scan] --> configure.ac

2.aclocal (automake):Ҏ已经安装的宏Q用户定义宏和acinclude.m4文g中的宏将configure.ac文g所需要的宏集中定义到文g aclocal.m4中。aclocal是一个perl 脚本E序Q它的定义是Q?#8220;aclocal - create aclocal.m4 by scanning configure.ac”
user input files   optional input     process          output files
================ ============== ======= ============

acinclude.m4 - - - - -.
V
.-------,
configure.ac ------------------------>|aclocal|
{user macro files} ->| |------> aclocal.m4
`-------'
3.autoheader(autoconf): Ҏconfigure.ac中的某些宏,比如cpp宏定义,q行m4Q声Uconfig.h.in

user input files optional input process output files
================ ============== ======= ============

aclocal.m4 - - - - - - - .
|
V
.----------,
configure.ac ----------------------->|autoheader|----> autoconfig.h.in
`----------'

4.automake: automakeMakefile.am中定义的l构建立Makefile.inQ然后configure脚本生成的Makefile.in文g转换 为Makefile。如果在configure.ac中定义了一些特D的宏,比如AC_PROG_LIBTOOLQ它会调用libtoolizeQ否则它 会自׃生config.guess和config.sub

user input files   optional input   processes          output files
================ ============== ========= ============

.--------,
| | - - -> COPYING
| | - - -> INSTALL
| |------> install-sh
| |------> missing
|automake|------> mkinstalldirs
configure.ac ----------------------->| |
Makefile.am ----------------------->| |------> Makefile.in
| |------> stamp-h.in
.---+ | - - -> config.guess
| | | - - -> config.sub
| `------+-'
| | - - - -> config.guess
|libtoolize| - - - -> config.sub
| |--------> ltmain.sh
| |--------> ltconfig
`----------'

5.autoconf:configure.ac中的宏展开Q生成configure脚本。这个过E可能要用到aclocal.m4中定义的宏?/p>

user input files   optional input   processes          output files
================ ============== ========= ============

aclocal.m4 ,autoconfig.h.in - - - - - - -.
V
.--------,
configure.ac ----------------------->|autoconf|------> configure
 
6. ./configure的过E?/pre>

.-------------> [config.cache]
configure* --------------------------+-------------> config.log
|
[config.h.in] -. v .--> [autoconfig.h]
+-------> config.status* -+
Makefile.in ---' `--> Makefile
 
7. makeq程
 
[autoconfig.h] -.
+--> make* ---> E序
Makefile ---'
 
.---------,
config.site - - ->| |
config.cache - - ->|configure| - - -> config.cache
| +-,
`-+-------' |
| |----> config.status
config.h.in ------->|config- |----> config.h
Makefile.in ------->| .status|----> Makefile
| |----> stamp-h
| +--,
.-+ | |
| `------+--' |
ltmain.sh ------->|ltconfig|-------> libtool
| | |
`-+------' |
|config.guess|
| config.sub |
`------------'

.--------,
Makefile ------>| |
config.h ------>| make |
{project sources} ---------------->| |--------> {project targets}
.-+ +--,
| `--------' |
| libtool |
| missing |
| install-sh |
|mkinstalldirs|
`-------------'
实例Q?/span>
?hello/目录下创Z个hello.c文gQƈ~译q行它:

#cd /hello/

(1) ~写源文件hello.cQ?/p>

#include<stdio.h> 
int main(int argc, char** argv)
{
printf("Hello, GNU!n");
return 0;
}

[litao@vm0000131 hello]$ ll
total 4
-rw-rw-r-- 1 litao litao 68 Aug 12 12:02 hello.c

一、autoscan

[litao@vm0000131 hello]$ autoscan
autom4te: configure.ac: no such file or directory
autoscan: /usr/bin/autom4te failed with exit status: 1
[litao@vm0000131 hello]$ ll
total 8
-rw-rw-r-- 1 litao litao   0 Aug 12 12:03 autoscan.log
-rw-rw-r-- 1 litao litao 457 Aug 12 12:03 configure.scan
-rw-rw-r-- 1 litao litao  68 Aug 12 12:02 hello.c

已经生成了configure.scanQautoscan.log文g

configure.scan 修改?nbsp;configure.inQ最后修改的内容如下Q?/p>

[litao@vm0000131 hello]$ mv configure.scan configure.in    
[litao@vm0000131 hello]$ vim configure.in 

#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ(2.59)
AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
AC_CONFIG_SRCDIR([hello.c])
#AC_CONFIG_HEADER([config.h])
AM_INIT_AUTOMAKE(hello, 1.0)
# Checks for programs.
AC_PROG_CC

# Checks for libraries.

# Checks for header files.

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.
AC_OUTPUT(Makefile)

二、acloacl

[litao@vm0000131 hello]$ aclocal 

生成 aclocal.m4 ?autom4te.cache (生成aclocal.m4的过E中涉及到configure.in)

[litao@vm0000131 hello]$ ll
total 44
-rw-rw-r-- 1 litao litao 31120 Aug 12 12:08 aclocal.m4
drwxr-xr-x 2 litao litao  4096 Aug 12 12:08 autom4te.cache
-rw-rw-r-- 1 litao litao     0 Aug 12 12:03 autoscan.log
-rw-rw-r-- 1 litao litao   496 Aug 12 12:08 configure.in
-rw-rw-r-- 1 litao litao    68 Aug 12 12:02 hello.c

三、antoconf

[litao@vm0000131 hello]$ autoconf
生成 configure (Ҏ configure.in, ?aclocal.m4)
[litao@vm0000131 hello]$ ll
total 168
-rw-rw-r-- 1 litao litao  31120 Aug 12 12:08 aclocal.m4
drwxr-xr-x 2 litao litao   4096 Aug 12 12:11 autom4te.cache
-rw-rw-r-- 1 litao litao      0 Aug 12 12:03 autoscan.log
-rwxrwxr-x 1 litao litao 122297 Aug 12 12:11 configure
-rw-rw-r-- 1 litao litao    496 Aug 12 12:08 configure.in
-rw-rw-r-- 1 litao litao     68 Aug 12 12:02 hello.c

四、编写Makefile.amQ?/span>

AUTOMAKE_OPTIONS= foreign
bin_PROGRAMS= hello
hello_SOURCES= hello.c

五、automake

生成 Makefile.inQ?depcompQ?install-shQ??missing (Ҏ Makefile.am, ?aclocal.m4)

[litao@vm0000131 hello]$ automake
configure.in: required file `./install-sh' not found
configure.in: required file `./missing' not found
Makefile.am: required file `./depcomp' not found
[litao@vm0000131 hello]$ automake --add-missing
configure.in: installing `./install-sh'
configure.in: installing `./missing'
Makefile.am: installing `./depcomp'
[litao@vm0000131 hello]$ ll
total 192
-rw-rw-r-- 1 litao litao  31120 Aug 12 12:08 aclocal.m4
drwxr-xr-x 2 litao litao   4096 Aug 12 12:14 autom4te.cache
-rw-rw-r-- 1 litao litao      0 Aug 12 12:03 autoscan.log
-rwxrwxr-x 1 litao litao 122297 Aug 12 12:11 configure
-rw-rw-r-- 1 litao litao    496 Aug 12 12:08 configure.in
lrwxrwxrwx 1 litao litao     31 Aug 12 12:16 depcomp -> /usr/share/automake-1.9/depcomp
-rw-rw-r-- 1 litao litao     68 Aug 12 12:02 hello.c
lrwxrwxrwx 1 litao litao     34 Aug 12 12:16 install-sh -> /usr/share/automake-1.9/install-sh
-rw-rw-r-- 1 litao litao     69 Aug 12 12:15 Makefile.am
-rw-rw-r-- 1 litao litao  16561 Aug 12 12:16 Makefile.in
lrwxrwxrwx 1 litao litao     31 Aug 12 12:16 missing -> /usr/share/automake-1.9/missing

六、configure
生成 MakefileQ?config.logQ??config.status
转自Q?a >http://hi.baidu.com/litaosmile/blog/item/0c5562139fe5ced9f6039ee3.html






SunRise_at 2012-06-27 10:31 发表评论
]]>
Makefile自动生成http://www.shnenglu.com/sunrise/archive/2012/06/27/180440.htmlSunRise_atSunRise_atWed, 27 Jun 2012 02:13:00 GMThttp://www.shnenglu.com/sunrise/archive/2012/06/27/180440.htmlhttp://www.shnenglu.com/sunrise/comments/180440.htmlhttp://www.shnenglu.com/sunrise/archive/2012/06/27/180440.html#Feedback1http://www.shnenglu.com/sunrise/comments/commentRss/180440.htmlhttp://www.shnenglu.com/sunrise/services/trackbacks/180440.html转自Q?a >http://blog.csdn.net/dybinx/article/details/6764874

~写 make 规则: 
使用 gcc 的时候,?-M 开养I它会为每一个你l它的E文g输出一个规则,把目标文?做ؓ目的Q而这个E文g和所有应该被 #include ?header ?件将做ؓ依靠文g。注意这个规则会加入所?header 文gQ包 括被角括?`<', `>')和双引号(`"')所包围的文件。其实系l?header 档(比如 stdio.h, stdlib.h {等一般不会被我们更改Q如果用 -MM 来代?-M 传递给 gccQ那些用角括号包围的 header 档将不会被包括?br />$@ 扩展成当前规则的目的文g名, $< 扩展成依靠列表中的第 一个依靠文Ӟ?$^ 扩展成整个依靠的列表?br />
自动生成Makefile文g的操作:


1、首先,新徏一个测试项目的目录——helloQmkdir hello
然后Qcd helloQ编辑一个hello.c的代码文Ӟ
#include <stdio.h>
int main()
{
     printf("hello automake!\n");
}
保存退出;

2、执?span style="line-height: 22px; color: #ff0000; ">autoscan
命oQ在当前路径中生成了autoscan.log  configure.scan两个新文件。其中configure.scan文g的内容如下:
AC_PREREQ(2.57)
AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
AC_CONFIG_SRCDIR([test.c])
AC_CONFIG_HEADER([config.h])
AC_PROG_CC
AC_OUTPUT

3、重命名configure.scan  为configure.inQ编辑它的内容,修改后的内容为:
AC_PREREQ(2.57)
AC_INIT(hello)
AC_CONFIG_SRCDIR([hello.c])
#AC_CONFIG_HEADER([config.h])
AM_INIT_AUTOMAKE(hello, 1.0)
AC_PROG_CC
AC_OUTPUT([Makefile])

说明QAutoconf 是用来?'configure'文g的工兗?configure' 是一?shell scriptQ它可以自动讑֮W合各种不同q_上Unix pȝ的特性,q且Ҏpȝ参数及环境生合适的Makefile文g或C 的头文g(header file)Q让原始E式可以很方便地在不同的q_上进行编译。Autoconf会读?configure.in 文g然后产生'configure' q个 shell script。configure.in 文g内容是一pdGNU m4 的宏Q这些宏lautoconf处理后会变成查系l特性的shell scripts?configure.in 内宏的顺序ƈ没有特别的规定,但是每一个configure.in 文g必須在所有宏前加?AC_INIT 宏,然后在所有宏的最后加?AC_OUTPUT宏。可先用 autoscan 扫描原始文g以生一?configure.scan 文gQ再?configure.scan 做些修改?configure.in 文g?br style="line-height: 22px; " />AC_INIT(FILE) 
该宏用来查源代码所在\径,autoscan 会自动生,一般无M改它?br style="line-height: 22px; " />AM_INIT_AUTOMAKE(PACKAGE,VERSION) 
q个是?Automake 所必备的宏QPACKAGE 是所要生Y件套件的名称QVERSION 是版本编受?nbsp;
AC_PROG_CC 
查系l可用的C~译器,若源代码是用C写的需要这个宏?br style="line-height: 22px; " />AC_OUTPUT(FILE) 
讄 configure 所要生的文gQ若是Makefile Qconfigure 便会把它查出来的l果带入 Makefile.in 文g后生合适的 Makefile?nbsp;

4、执?span style="line-height: 22px; color: #ff0000; ">aclocal命oQ生成了aclocal.m4文gQ一般无需修改q个文g?br style="line-height: 22px; " />5、新?span style="line-height: 22px; color: #ff0000; ">Makefile.am文gQ编辑内容如下:
            bin_PROGRAMS=test   
            test_SOURCES=test.c
说明Q?br style="line-height: 22px; " />Automake 会根?configure.in 中的宏把Makefile.am 转成 Makefile.in 文g?Makefile.am 文g定义所要生的目标Q?nbsp;
AUTOMAKE_OPTIONS
讄 automake 的选项。Automake 主要是帮助开?GNU 软g的h员来l护软gQ所以在执行 automake Ӟ会检查目录下是否存在标准 GNU 软g中应具备的文Ӟ例如 'NEWS'?AUTHOR'?ChangeLog' {文件。设|?foreign Ӟautomake 会改用一般Y件的标准来检查?nbsp;
bin_PROGRAMS 
定义要生的执行文g名。如果要产生多个执行文gQ每个文件名用空白符隔开
hello_SOURCES 
定义 'hello' q个执行E序所需要的原始文g。如?'hello'q个E序是由多个原始文g所产生Q必須把它所用到的所有原始文仉列出来,以空白符隔开。假?'hello' q需?'hello.c'?main.c'?hello.h' 三个文g的话Q则定义 
hello_SOURCES= hello.c main.c hello.h 
如果定义多个执行文gQ则Ҏ个执行程序都要定义相对的filename_SOURCES

6?执行autoconf命oQ生成autom4te.cache和configure文gQ?br style="line-height: 22px; " />7、执?span style="line-height: 22px; color: #ff0000; ">automake -a命oQ生成depcomp  Qinstall-shQmkinstalldirsQCOPYINGQINSTALLQ?missing文gQ?br style="line-height: 22px; " />说明Q?br style="line-height: 22px; " />~辑?Makefile.am 文gQ就可以?automake --add-missing来?Makefile.in。加?--add-missing 选项来告?automakeZ假如包装一个Y件所必须的文件。Automake产生生出來的 Makefile.in 文g是完全符?GNU Makefile 的惯例,只要执行 configureq个shell script 便可以生合适的 Makefile 文g了?nbsp;
在执行automake -a命o时可能会出现以下信息Q?br style="line-height: 22px; " />Makefile.am: required file `./NEWS' not found
Makefile.am: required file `./README' not found
Makefile.am: required file `./AUTHORS' not found
Makefile.am: required file `./ChangeLog' not found
q些对结果媄响不大,如果不想产生q些让h误解的信息,可以手动建立q些文gQ?br style="line-height: 22px; " />>NEWS   
>README   
>AUTHORS   
>ChangeLog   

8、执?span style="line-height: 22px; color: #ff0000; ">./configureQ生成了Makefile文g
9、执行makeQ生成目标文件?br style="line-height: 22px; " />

实战Makefile.am

Makefile.am是一U比Makefile更高层次的规则。只需指定要生成什么目标,它由什么源文g生成Q要安装C么目录等构成?/p>

表一列出了可执行文g、静态库、头文g和数据文Ӟ四种书写Makefile.am文g个一般格式?/p>
?1Makefile.am一般格?/a>
?1Makefile.am一般格? src= 

对于可执行文件和静态库cdQ如果只想编译,不想安装到系l中Q可以用noinst_PROGRAMS代替bin_PROGRAMSQnoinst_LIBRARIES代替lib_LIBRARIES?/p>

Makefile.amq提供了一些全局变量供所有的目标体用:


?2 Makefile.am中可用的全局变量
?2 Makefile.am中可用的全局变量 

在Makefile.am中尽量用相对\径,pȝ预定义了两个基本路径Q?/p>
?3Makefile.am中可用的路径变量
?3Makefile.am中可用的路径变量 

在上文中我们提到q安装\径,automake讄了默认的安装路径Q?/p>

1) 标准安装路径

默认安装路径为:$(prefix) = /usr/localQ可以通过./configure --prefix=<new_path>的方法来覆盖?/p>

其它的预定义目录q包括:bindir = $(prefix)/bin, libdir = $(prefix)/lib, datadir = $(prefix)/share, sysconfdir = $(prefix)/etc{等?/p>

2) 定义一个新的安装\?/p>

比如test, 可定义testdir = $(prefix)/test, 然后test_DATA =test1 test2Q则test1Qtest2会作为数据文件安装到$(prefix)/ /test目录下?/p>

我们首先需要在工程层目录下(即project/Q创Z个Makefile.am来指明包含的子目录:


SUBDIRS=src/lib src/ModuleA/apple/shell src/ModuleA/apple/core 
CURRENTPATH=$(shell /bin/pwd)
INCLUDES=-I$(CURRENTPATH)/src/include -I$(CURRENTPATH)/src/ModuleA/apple/include
export INCLUDES

׃每个源文仉会用到相同的头文Ӟ所以我们在最层的Makefile.am中包含了~译源文件时所用到的头文gQƈ导出Q见蓝色部分代码?/p>

我们lib目录下的swap.c文g~译成libswap.a文gQ被apple/shell/apple.c文g调用Q那么lib目录下的Makefile.am如下所C:


noinst_LIBRARIES=libswap.a
libswap_a_SOURCES=swap.c
INCLUDES=-I$(top_srcdir)/src/includ

l心的读者可能就会问Q怎么?中给出的是bin_LIBRARIESQ而这里是noinst_LIBRARIESQ这是因为如果只想编译,而不?安装到系l中Q就用noinst_LIBRARIES代替bin_LIBRARIESQ对于可执行文gqnoinst_PROGRAMS代替 bin_PROGRAMS。对于安装的情况Q库会安装?(prefix)/lib目录下,可执行文件将会安装到${prefix}/bin。如果想?装该库,则Makefile.amCZ如下Q?/p>
bin_LIBRARIES=libswap.a
libswap_a_SOURCES=swap.c
INCLUDES=-I$(top_srcdir)/src/include
swapincludedir=$(includedir)/swap
swapinclude_HEADERS=$(top_srcdir)/src/include/swap.h

最后两行的意思是swap.h安装?{prefix}/include /swap目录下?/p>

接下来,对于可执行文件类型的情况Q我们将讨论如何写Makefile.amQ对于编译apple/core目录下的文gQ我们写成的Makefile.am如下所C:


noinst_PROGRAMS=test
test_SOURCES=test.c
test_LDADD=$(top_srcdir)/src/ModuleA/apple/shell/apple.o $(top_srcdir)/src/lib/libswap.a
test_LDFLAGS=-D_GNU_SOURCE
DEFS+=-D_GNU_SOURCE
#LIBS=-lpthread

׃我们的test.c文g在链接时Q需要apple.o?libswap.a文gQ所以我们需要在test_LDADD中包含这两个文g。对于Linux下的信号?d锁文件进行编译,需要在~译选项中指?-D_GNU_SOURCE。所以在test_LDFLAGS中指明。而test_LDFLAGS只是链接时的选项Q编译时同样需要指明该选项Q所以需?DEFS来指明编译选项Q由于DEFS已经有初始|所以这里用+=的Ş式指明。从q里可以看出QMakefile.am中的语法与Makefile的语 法一_也可以采用条件表辑ּ。如果你的程序还包含其他的库Q除了用AC_CHECK_LIB宏来指明外,q可以用LIBS来指明?/p>

如果你只想编译某一个文Ӟ那么Makefile.am如何写呢Q这个文件也很简单,写法跟可执行文g的差不多Q如下例所C:

noinst_PROGRAMS=apple
apple_SOURCES=apple.c
DEFS+=-D_GNU_SOURCE


SunRise_at 2012-06-27 10:13 发表评论
]]>
Linux下源码安装的l验ȝhttp://www.shnenglu.com/sunrise/archive/2012/06/05/177614.htmlSunRise_atSunRise_atTue, 05 Jun 2012 01:36:00 GMThttp://www.shnenglu.com/sunrise/archive/2012/06/05/177614.htmlhttp://www.shnenglu.com/sunrise/comments/177614.htmlhttp://www.shnenglu.com/sunrise/archive/2012/06/05/177614.html#Feedback0http://www.shnenglu.com/sunrise/comments/commentRss/177614.htmlhttp://www.shnenglu.com/sunrise/services/trackbacks/177614.htmlhttp://www.linuxidc.com/Linux/2011-07/39217.htm

     在linux下安装YӞ隑օ会碰到需要源码安装的Q而就是这单单?/configure、make、sudo make install三步Q却让不h头疼不已Q这里以安装X11Z具体介绍下我在安装时的一点小l验Q以便共同学习,共同q步Q?/span>

首先Q我们要做些准备工作Q源码安装少不了q几个工具pkg-config、libtool、autoconf和automake(当然Q还有更基础的,像zlib、m4{,q里qq啦)Q其中,pkg-config是相Ҏ较重要的Q它是向configureE序提供pȝ信息的程序,如Y件的版本、库的版本以及库的\径等信息Q这些只是在~译期间使用。你可以打开/usr/lib/pkgconfig下Q意一?pc文gQ就会发现类g面的信息(X11的pc文g)Q?/p>

prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
xthreadlib=-lpthread
Name: X11
Description: X Library
Version: 1.3.3
Requires: xproto kbproto
Requires.private: xcb >= 1.1.92
Cflags: -I${includedir}
Libs: -L${libdir} -lX11
Libs.private: -lpthread

configure是靠着q些信息来判断Y件版本是否符合要求的。接着来看看pkg-config是怎样工作的,~省情况下,pkg-config首先在usr/lib/pkgconfig/中查扄兛_(譬如x11)对应的相应的文g(x11.pc)Q若没有扑ֈQ它也会到PKG_CONFIG_PATHq个环境变量所指定的\径下LQ若是还没有扑ֈQ它׃报错。所以这里就可以得到一些解决configure时提C?*库未扑ֈ的办法了Q先用命?ldconfig -p | grep 库名"来分析该库是否安装及其\径,若返回空Q则说明该库实未安装,否则Q可以根据该命o的返回结果找到库的安装地点,然后讄其环境变量,命o如下Q?/p>

"export PKG_CONFIG_PATH=软g位置/lib/pkgconfig:$PKG_CONFIG_PATH"Q这里有个常识,软g安装后,.pc文g都是在安装目录下的lib/pkgconf中的。这样只会在当前命oH口有效Q当Ӟ你也可以修改home文g夹下?bashrc文g(?的文件ؓ隐藏文gQ可以用命ovi .bashrc~辑)Q在文g末尾加上上面那句命oQ重新登录即可。其他的几个在linux下也是不可或~的Qlibtool为管理library时用,没装的话错误提示如下Qpossibly undefined macro:AC_PROG_LIBTOOL。而autoconf和automake可以用于在某些没有configure的文件的源码包安装时使用(pixman是个典型的例子Q安装了二者后直接./autogen.sh可以安装了)?/p>

准备工作做好后,可以安装了Q具体全部命令如下:

tar vxf libX11-6.2.1.tar.gz

cd libX11-6.2.1

mkdir X11-build

cd X11-build

../configure –prefix=/usr/local/X11R6

make

echo $?

sudo make install

q里有一些好的安装习惯可以积累一下:1、徏立一个时编译目录,本例中ؓX11-buildQ这样可以再安装完成后删除该目录Q进而可以节省空_而且保持了源码目录的整洁Q?、安装到指定目录Q本例中?usr/local/X11R6Q最好把几个相关的安装在同一文g夹下Q如q里的X11R6文g夹,q样便于理Q否则全部默认安装在/usr/local下,很杂乱;3、编译完成后做检查,本例为echo $?Q表C检查上一条命令的退出状态,E序正常退?Q错误退回非0Q也可以使用make checkQ主要ؓ了防止makep|后直接installQ进而出C一些莫名其妙的错误。这里还介绍一U更方便快捷的安装方法,?amp;&安装命令连接v来,?./configure –prefix=**&&make&&sudo make installQ这P只有在前面的命o执行正确的情况下Q后面的d才会执行Q多方便Q?/p>

除此之外Q安装之前可以阅M源码包中的readme和install{文档,往往有所需软g及其下蝲地址Q还包括一些安装技巧和配置选项。另外,在configure前,先输入configure –helpQ可以查看有哪些选项可以d。还有几个关pd装成功的东西是ldconfig了,在安装时如果提示找不到某个库或者在~译时提C找不到**.so文gQ就要用到它了,最单的解决办法是sudo gedit /etc/ld.so.confQ在文g中加?*.so文g所在\径,再运行一下ldconfig可以了Q但是我对这个东西有阴媄Q不知道是因为用了虚拟机q是其他的原因,??ơ我在运行完ldconfig后,Ubuntu没办法打开MH口了,直接x重启更是进不去pȝ了,崩溃之,不知道有没有高手有解军_法。在q里提供一U代替ldconfig的办法,是export LD_LIBRARY_PATH=*.so文g地址:$LD_LIBRARY_PATHQ用它我p心多了,也就是麻烦点Q哥忍了QLpȝ崩溃强多了吧Q呵呵!其实Q在configure时碰到问题,你应该庆q,因ؓ你可以根据它很明昄提示扑ֈ~失的东西装上,在配|下pkgconfig和ldconfig基本上就可以搞定了,但是make的时候就没那么简单了?/p>

~译时提C最多的是**东西未找CQ要么是库文Ӟ要么是头文gQ库文g用上面的ldconfig基本上就可以搞定Q头文g的话需要配|包含的路径Q和库的cMQ命令如下:

export LD_INCLUDE_PATH=/usr/local/include:$LD_INCLUDE_PATH

在这个时候最重要的就是E定了Q@着丫的error往上找Q像"No such file or directory"q样的错误提C定就在附q,扑ֈ了,include之就可以咯!



SunRise_at 2012-06-05 09:36 发表评论
]]>
Linux学习?SVN命o详解 http://www.shnenglu.com/sunrise/archive/2012/05/29/176616.htmlSunRise_atSunRise_atTue, 29 May 2012 06:23:00 GMThttp://www.shnenglu.com/sunrise/archive/2012/05/29/176616.htmlhttp://www.shnenglu.com/sunrise/comments/176616.htmlhttp://www.shnenglu.com/sunrise/archive/2012/05/29/176616.html#Feedback0http://www.shnenglu.com/sunrise/comments/commentRss/176616.htmlhttp://www.shnenglu.com/sunrise/services/trackbacks/176616.html转自Q?font color="#000000" face="Verdana">http://blog.sina.com.cn/s/blog_76cd6de80100wml3.html
文章中讲的不是很详细Q做了部分修?br />在开发中Q除了在本机文g夹上q行svn更新外,在命令行中进行svn操作也非常关键,下面列D下网站摘抄的一些文档:
1?/strong>文件checkout到本地目?br />
svn checkout pathQpath是服务器上的目录Q?br />例如Qsvn checkout svn://192.168.1.1/pro/domain --usrname yu --password yu
写:svn co

2?/strong>往版本库中d新的文g
svn add file
例如Qsvn
 add test.php(dtest.php)
svn
 add *.php(d当前目录下所有的php文g)

3?/strong>改动的文g提交到版本库

svn commit -m LogMessage [-N] [--no-unlock] PATH(如果选择了保持锁Q就使用–no-unlock开?
例如Qsvn commit -m
 add test file for my test test.php
写:svn ci


4?/strong>加锁/解锁
svn lock -m LockMessage [--force] PATH
例如Qsvn lock -m
 lock test file test.php
svn unlock PATH

5?/strong>更新到某个版?br />
svn update -r m path
例如Q?br />svn update如果后面没有目录Q默认将当前目录以及子目录下的所有文仉更新到最新版本?br />svn update -r
 200 test.php(版本库中的文gtest.phpq原到版?00)
svn update test.php(更新Q于版本库同步。如果在提交的时候提C期的话,是因?strong style="font-weight: bold">冲突Q需要先updateQ修Ҏ?/strong>Q然后清?strong style="font-weight: bold">svn resolved
Q最后再提交commit)
写:svn up

6?/strong>查看文g或者目录状?br />
svn status path...Q目录下的文件和子目录的状态,正常状态不昄Q?br />?Q不在svn的控制中QMQ内容被修改QCQ发生冲H;AQ预定加入到版本库;KQ被锁定?br />2Q?strong style="font-weight: bold">svn status -v path(昄文g和子目录状?
W一列保持相同,W二列显C工作版本号Q第三和W四列显C最后一ơ修改的版本号和修改人?br />注:svn status、svn diff?svn revertq三条命令在没有|络的情况下也可以执行的Q原因是svn在本地的.svn中保留了本地版本的原始拷贝?br />写:svn st

7?/strong>删除文g
svn delete path -m delete test fle
例如Qsvn delete svn://
192.168.1.1/pro/domain/test.php -m delete test file
或者直接svn delete test.php 然后再svn ci -m ‘delete test file‘Q推荐用这U?br />写:svn (del, remove, rm)

8?/strong>Ud文g或者目录或文g更名
svn move -m “move test fle
例如Qsvn move
 -m “move test file” a.php  b.php 把当前目录下的a.php改名为b.php
svn move -m “move test file” address admin/address 把当前目录下得address目录Ud到当前目录下的admin/address?br />或者直接svn delete test.php 然后再svn ci -m ‘delete test file‘Q推荐用这U?br />写:svn (del, remove, rm)


9?/strong>查看日志
svn log path
例如Qsvn log test.php 昄q个文g的所有修改记录,及其版本L变化

10?/strong>查看文g详细信息
svn info path
例如Qsvn info test.php

11?/strong>比较差异
svn diff path(修改的文g与基版本比较)
例如Qsvn diff test.php
svn diff -r m:n path(对版本m和版本n比较差异)
例如Qsvn diff -r 200:201 test.php
写:svn di


12?/strong>两个版本之间的差异合ƈ到当前文?br />
svn merge -r m:n path
例如Qsvn merge -r
 200:205 test.phpQ将版本200?05之间的差异合q到当前文gQ但是一般都会生冲H,需要处理一下)

13?/strong>SVN 帮助
svn help
svn help ci


——————————————————————————

以上是常用命令,下面写几个不l常用的

——————————————————————————

14?/strong>版本库下的文件和目录列表

svn list path
昄path目录下的所有属于版本库的文件和目录
写:svn ls

15?/strong>创徏U_版本控制下的新目?/p>

svn mkdir: 创徏U_版本控制下的新目录?br />用法: 1、mkdir PATH…
2、mkdir URL…
创徏版本控制的目录?br />1、每一个以工作副本 PATH 指定的目录,都会创徏在本地端Qƈ且加入新?br />调度Q以待下一ơ的提交?br />2、每个以URL指定的目录,都会透过立即提交于仓库中创徏?br />在这两个情况下,所有的中间目录都必M先存在?br />如:svn mkdir https://192.168.1.13/svn/apps/ontology -m "mkdir ontology"

16?/strong>恢复本地修改

svn revert: 恢复原始未改变的工作副本文g (恢复大部份的本地修改)。revert:
用法: revert PATH…
注意: 本子命o不会存取|络Qƈ且会解除冲突的状c但是它不会恢复
被删除的目录

17?/strong>代码库URL变更

svn switch (sw): 更新工作副本至不同的URL?br />用法: 1、switch URL [PATH]
2、switch –relocate FROM TO [PATH...]

1、更C的工作副本,映射C个新的URLQ其行ؓ?#8220;svn update”很像Q也会将
服务器上文g与本地文件合q。这是将工作副本对应到同一仓库中某个分支或者标记的
Ҏ?br />2、改写工作副本的URL元数据,以反映单U的URL上的改变。当仓库的根URL变动
(比如Ҏ名或是主机名U变?Q但是工作副本仍旧对映到同一仓库的同一目录时?br />q个命o更新工作副本与仓库的对应关系?/span>

18?/strong>解决冲突

svn resolved: U除工作副本的目录或文g?#8220;冲突”状态?br />用法: resolved PATH…
注意: 本子命o不会依语法来解决冲突或是U除冲突标记Q它只是U除冲突?br />相关文gQ然后让 PATH 可以再次提交?/span>

19?/strong>输出指定文g或URL的内宏V?/p>svn cat 目标[@版本]…如果指定了版本,从指定的版本开始查找?br />svn cat -r PREV filename > filename (PREV 是上一版本,也可以写具体版本?q样输出l果是可以提交的)


SunRise_at 2012-05-29 14:23 发表评论
]]>
linux?run文g的安装与卸蝲http://www.shnenglu.com/sunrise/archive/2012/05/04/173646.htmlSunRise_atSunRise_atFri, 04 May 2012 03:07:00 GMThttp://www.shnenglu.com/sunrise/archive/2012/05/04/173646.htmlhttp://www.shnenglu.com/sunrise/comments/173646.htmlhttp://www.shnenglu.com/sunrise/archive/2012/05/04/173646.html#Feedback0http://www.shnenglu.com/sunrise/comments/commentRss/173646.htmlhttp://www.shnenglu.com/sunrise/services/trackbacks/173646.html.run文g的安装很单,只需要ؓ该文件增加可执行属性,卛_执行安装
?virtualbox 的安装文?virtualbox-3.1.6-59338-Linux_x86.runZQ只需要输入命令:
chmod +x  virtualBox-3.1.6-59338-Linux_x86.run
./virtualbox-3.1.6-59338-Linux_x86.run
卛_安装?/span>

卸蝲的方法网上说法大臛_两种Q?/span>
一U是说用 sh  virtualbox-3.1.6-59338-Linux_x86.run --uninstallQ但是对于我q个virtualbox安装文g行不?/span>
另一U是说进入到安装目录下,有个 uninstall 文gQ输?/uninstall卛_卸蝲Q但不知道安装到哪了
于是我就用locate virtualbox | grep uninstall 扑ֈq个文gQ执?/uninstallok?/span>


SunRise_at 2012-05-04 11:07 发表评论
]]>
ŷþþXXX| þþþ޾Ʒ˵| Ůþþþþjþ| þþAVɫۺ| 㽶þþƷۺ| ھƷþþþþþӰ鶹| Ʒþþþþ| Aݺݾþɫ| þþ뾫ƷպĦ| ھƷþ| vĻþ þһ ľþþþר | 97þù޾Ʒ| ŷսþþþþþþ| ٸþþþþþþþ| Ʒһþò| ƷŮþþþ| þerƷѹۿ2| þһ| þۺɫ99žak| þþƷƷʢۿ| 18պҹþó| þպƷһ| þþþþҹӰԺ | ߳þѹۿ| þĻר| 97Ƶþþ| ŷպĻþ| ƷþþþþþҹƬ | ŷִִþþ| պƷھþ| þҹӰ| ҹŷƷþþþþþ| þþƷѿ| ˾þav| ŷ޹Ʒþѿ| 2021¾þþӾƷ| þ޹ҹƷƬ| ޾ƷۺϾþ| 91þþƷƵ| vĻþ| þûɫƵ|