??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲自偷自偷在线制服,在线精品亚洲一区二区小说 ,久久亚洲AV成人出白浆无码国产http://www.tkk7.com/josson/category/23457.html天地生h,有一人应有一Z?人生在世,生一日当一日之?zh-cnSat, 15 Aug 2009 02:18:34 GMTSat, 15 Aug 2009 02:18:34 GMT60linux 问题记录.http://www.tkk7.com/josson/archive/2009/08/13/291058.htmljossonjossonThu, 13 Aug 2009 10:34:00 GMThttp://www.tkk7.com/josson/archive/2009/08/13/291058.htmlhttp://www.tkk7.com/josson/comments/291058.htmlhttp://www.tkk7.com/josson/archive/2009/08/13/291058.html#Feedback0http://www.tkk7.com/josson/comments/commentRss/291058.htmlhttp://www.tkk7.com/josson/services/trackbacks/291058.html
google了好一阵,才找到线索。主要由于我前晚写shell脚本调试的时候,误将一些系l文件的宿主为新用户了。后来新的会话怎么都登录不上去了,好在q有一个rootd的会话,扑ֈ/var/empty/sshdQ修改宿d权限?br />
chown -R root:root /var/empty/sshd
chmod 
700 /var/empty/sshd

2、su 切换用户Q输入密码L提示Q密码不正确?br />
也是权限问题Qroot切到其他账号时没有问题;其他账号之间切换是不行Q密码输入也正确。后来其?bin/su 文g的权限不正确Q调整如下解决问?
-rwsr-xr-x  1 root root 61144 Jul 30  2007 /bin/su



josson 2009-08-13 18:34 发表评论
]]>
Linux 环境apache对中文文件名的支?/title><link>http://www.tkk7.com/josson/archive/2009/03/13/259633.html</link><dc:creator>josson</dc:creator><author>josson</author><pubDate>Fri, 13 Mar 2009 13:37:00 GMT</pubDate><guid>http://www.tkk7.com/josson/archive/2009/03/13/259633.html</guid><wfw:comment>http://www.tkk7.com/josson/comments/259633.html</wfw:comment><comments>http://www.tkk7.com/josson/archive/2009/03/13/259633.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/josson/comments/commentRss/259633.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/josson/services/trackbacks/259633.html</trackback:ping><description><![CDATA[q日Q有同事遇到一个奇怪问题:在开发环境,apache能正常支持中文文件下载,但切换到试环境?04错误Q找不文Ӟ两个环境都是linuxpȝ。我起先怀疑的是linux下需要对apacheq行配置Q以支持中文名。但研究了一下两个环境的配置Q开发环境除apache版本高了点外Qƈ没有其他Ҏ配置。所以怀疑版本问题,又把开发环境的apache及配|同步到了测试环境,重启依然无效?br /> <br /> 折腾半天Q基本上可以判定q个问题应该与apache配置和版本无关了?br /> <br /> |上google了一把,有很多关于mod_encoding.so模块实现中文支持和IE览器中取消"发送UTF-8 URL"的设|,考虑到开发环境ƈ没有加入额外的moduleQ也没设|IE选项Q所以也没在意这些方案,况且q两个方案也不便于生产环境布|或实际应用?br /> <br /> 后来Q又h了SA和其他同学,q是没有l果。只能l摸索,查找原因。通过两个环境的反复比较,l于发现了问题所在:<br /> <br /> 通过 locale 查看了系l的字符集,开发机上是en_US.UTF-8Q而测试机上是zh_CN.GBKQ开发机上显C的中文文g名是qQ测试机上显C正常,但反而显CZؓq的开发机上能被下载,而测试机上显C正常的文g不能被下载。后来,测试环境的字符集也设ؓ:en_US.UTF-8Qƈ从svn重新q出了中文名的文Ӟ发现实可以被读取到?br /> <br /> 分析一下原因,ie客户是发?UTF-8 URL"到apacheQapache以utf-8~码的文件名查找相关目录下的文gQ如果此时中文文件是以GBK或其他字W集保存Ӟ无法找到匹配的文g。所以网上说的IE览器中取消"发送UTF-8 URL"的设|就有效的说法就可以解释了?br /> <br /> <strong>l论Qlinux环境下apache中文文g下蝲支持与该文g的字W集有关Q只要创建或从svnq出中文文g文gӞlinuxpȝ为UTF-8的字W集Q或中文文g名以UTF-8~码的文Ӟ卌被apache正确d?/strong>|上有资料说Qapache 2.x 以上版本x持中文文件名Q虽然未l验证,但至可以肯定apache 2.0.55?.0.63是没有问题的? <img src ="http://www.tkk7.com/josson/aggbug/259633.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/josson/" target="_blank">josson</a> 2009-03-13 21:37 <a href="http://www.tkk7.com/josson/archive/2009/03/13/259633.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux启动U别&Samba服务自启动设|?/title><link>http://www.tkk7.com/josson/archive/2009/01/07/250293.html</link><dc:creator>josson</dc:creator><author>josson</author><pubDate>Wed, 07 Jan 2009 03:14:00 GMT</pubDate><guid>http://www.tkk7.com/josson/archive/2009/01/07/250293.html</guid><wfw:comment>http://www.tkk7.com/josson/comments/250293.html</wfw:comment><comments>http://www.tkk7.com/josson/archive/2009/01/07/250293.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.tkk7.com/josson/comments/commentRss/250293.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/josson/services/trackbacks/250293.html</trackback:ping><description><![CDATA[<strong>1、LINUXpȝ启动U别</strong><br /> <br /> 查看/etc/inittab文gQ其主要内容如下Q?br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000"># </span><span style="color: #000000">0</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000"> halt (Do NOT set initdefault to </span><span style="color: #0000ff">this</span><span style="color: #000000">) <br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /># </span><span style="color: #000000">1</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000"> Single user mode <br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /># </span><span style="color: #000000">2</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000"> Multiuser, without NFS (The same as </span><span style="color: #000000">3</span><span style="color: #000000">, </span><span style="color: #0000ff">if</span><span style="color: #000000"> you </span><span style="color: #0000ff">do</span><span style="color: #000000"> not have networking) <br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /># </span><span style="color: #000000">3</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000"> Full multiuser mode <br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /># </span><span style="color: #000000">4</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000"> unused <br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /># </span><span style="color: #000000">5</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000"> X11 <br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /># </span><span style="color: #000000">6</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000"> reboot (Do NOT set initdefault to </span><span style="color: #0000ff">this</span><span style="color: #000000">) <br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /># <br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />id:</span><span style="color: #000000">5</span><span style="color: #000000">:initdefault:<br /> ... ...<br />  </span></div> <br /> 0Q停?不要讄为启动默认? <br /> 1Q单用户模式 <br /> 2Q多用户Q无NFS(如果您没有配|网l,该别与3一? <br /> 3Q完全多用户模式 <br /> 4Q不使用 <br /> 5QX11囑Ş模式 <br /> 6Q重?不要讄为启动默认?<br /> <br /> 如果惌pȝ不用囑Ş模式登陆可将id:5:initdefault: 中的5改ؓ3卛_?br /> <br /> <strong>2、Linuxq行U别<br /> </strong><br /> Linux 启动Ӟq行一个叫做init 的程序,然后由它来启动后面的dQ包括多用户环境Q网l等?br /> <br /> 那么Q到底什么是q行U别呢?单的_q行U就是操作系l当前正在运行的功能U别。这个别从1 ? Q具有不同的功能。这些别在/etc/inittab 文g里指定。这个文件是init E序L的主要文Ӟ最先运行的服务是那些放?etc/rc.d 目录下的文g?br /> <br /> 大多数的Linux 发行版本中,启动脚本攑֜/etc/rc.d/init.dQ这些脚本被ln 命o来连接到 /etc/rc.d/rcn.d 目录(q里的n 是q行U?-6)。如Q?etc/rc.d/rc5.d 下面的S10network 是q接?etc/rc.d/init.d下的network 脚本的。因此,我们可以知道Qrc5.d 下面的文件就是和q行U? 有关的?br /> <br /> <strong>3、Samba的自启动</strong><br /> <br /> samba安装完后Q默认是不会自启动的。通过查看/etc/rc.d/rcn.d/目录下的文g或通过chkconfig命o查询Q如Q?br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">[alisoft@kplan</span><span style="color: #000000">-</span><span style="color: #000000">dev8 </span><span style="color: #000000">~</span><span style="color: #000000">]$ ll </span><span style="color: #000000">/</span><span style="color: #000000">etc</span><span style="color: #000000">/</span><span style="color: #000000">rc.d</span><span style="color: #000000">/</span><span style="color: #000000">rc5.d<br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />ȝ?nbsp;</span><span style="color: #000000">272</span><span style="color: #000000"><br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><img alt="" src="http://www.tkk7.com/Images/dot.gif" /> <img alt="" src="http://www.tkk7.com/Images/dot.gif" /><br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />lrwxrwxrwx  </span><span style="color: #000000">1</span><span style="color: #000000"> root root </span><span style="color: #000000">22</span><span style="color: #000000">  8?nbsp;</span><span style="color: #000000">13</span><span style="color: #000000"> </span><span style="color: #000000">11</span><span style="color: #000000">:</span><span style="color: #000000">17</span><span style="color: #000000"> K30spamassassin </span><span style="color: #000000">-></span><span style="color: #000000"> ..</span><span style="color: #000000">/</span><span style="color: #000000">init.d</span><span style="color: #000000">/</span><span style="color: #000000">spamassassin<br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><strong><span style="color: #008000"><strong>lrwxrwxrwx  </strong><strong>1 root root 13  8?nbsp;18 21:59 K35smb -> ../init.d/</strong><strong>smb<br /> </strong></span></strong></span><span style="color: #000000"><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />lrwxrwxrwx  </span><span style="color: #000000">1</span><span style="color: #000000"> root root </span><span style="color: #000000">19</span><span style="color: #000000">  8?nbsp;</span><span style="color: #000000">13</span><span style="color: #000000"> </span><span style="color: #000000">11</span><span style="color: #000000">:</span><span style="color: #000000">17</span><span style="color: #000000"> K35vncserver </span><span style="color: #000000">-></span><span style="color: #000000"> ..</span><span style="color: #000000">/</span><span style="color: #000000">init.d</span><span style="color: #000000">/</span><span style="color: #000000">vncserver<br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />lrwxrwxrwx  </span><span style="color: #000000">1</span><span style="color: #000000"> root root </span><span style="color: #000000">17</span><span style="color: #000000">  8?nbsp;</span><span style="color: #000000">13</span><span style="color: #000000"> </span><span style="color: #000000">11</span><span style="color: #000000">:</span><span style="color: #000000">17</span><span style="color: #000000"> S10network </span><span style="color: #000000">-></span><span style="color: #000000"> ..</span><span style="color: #000000">/</span><span style="color: #000000">init.d</span><span style="color: #000000">/</span><span style="color: #000000">network<br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><img alt="" src="http://www.tkk7.com/Images/dot.gif" /> <img alt="" src="http://www.tkk7.com/Images/dot.gif" /></span></div> 文g开头的S 代表start 是启动服务QK代表kill。后面的数字10 是启动的顺序。例如,有S80postfix 文gQ?0 是序?10 以后Q表Cpostfix启动需先启动网l?etc/rc.d/rc5.d/K35smb QK 代表 kill。标准的Linuxq行U别? 或? QLinux启动?init ׃执行 K35smb 脚本?br /> <br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">[alisoft@kplan</span><span style="color: #000000">-</span><span style="color: #000000">dev8 </span><span style="color: #000000">~</span><span style="color: #000000">]$ </span><span style="color: #000000">/</span><span style="color: #000000">sbin</span><span style="color: #000000">/</span><span style="color: #000000">chkconfig </span><span style="color: #000000">--</span><span style="color: #000000">list </span><span style="color: #000000">|</span><span style="color: #000000"> grep smb<br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />smb             </span><span style="color: #000000">0</span><span style="color: #000000">:off  </span><span style="color: #000000">1</span><span style="color: #000000">:off  </span><span style="color: #000000">2</span><span style="color: #000000">:off  </span><span style="color: #000000">3</span><span style="color: #000000">:off  </span><span style="color: #000000">4</span><span style="color: #000000">:off  </span><span style="color: #000000">5</span><span style="color: #000000">:off  </span><span style="color: #000000">6</span><span style="color: #000000">:off</span></div> 0~6 表示q行U别。on 表示启动Qoff 表示关闭?br /> <br /> 要设|Samba自启动,需通过chkconfig命oq行讄Q?br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">[alisoft@kplan</span><span style="color: #000000">-</span><span style="color: #000000">dev8 </span><span style="color: #000000">~</span><span style="color: #000000">]</span><span style="color: #000000">/</span><span style="color: #000000">sbin</span><span style="color: #000000">/</span><span style="color: #000000">chkconfig </span><span style="color: #000000">--</span><span style="color: #000000">level </span><span style="color: #000000">35</span><span style="color: #000000"> smb on<br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />[alisoft@kplan</span><span style="color: #000000">-</span><span style="color: #000000">dev8 </span><span style="color: #000000">~</span><span style="color: #000000">]$ </span><span style="color: #000000">/</span><span style="color: #000000">sbin</span><span style="color: #000000">/</span><span style="color: #000000">chkconfig </span><span style="color: #000000">--</span><span style="color: #000000">list </span><span style="color: #000000">|</span><span style="color: #000000"> grep smb<br /> <img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />smb             </span><span style="color: #000000">0</span><span style="color: #000000">:off  </span><span style="color: #000000">1</span><span style="color: #000000">:off  </span><span style="color: #000000">2</span><span style="color: #000000">:off  </span><span style="color: #000000">3</span><span style="color: #000000">:on  </span><span style="color: #000000">4</span><span style="color: #000000">:off  </span><span style="color: #000000">5</span><span style="color: #000000">:on  </span><span style="color: #000000">6</span><span style="color: #000000">:off</span></div> <br /> Linuxpȝq行U别? 或?Ӟpȝ׃自启动Samba服务? <img src ="http://www.tkk7.com/josson/aggbug/250293.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/josson/" target="_blank">josson</a> 2009-01-07 11:14 <a href="http://www.tkk7.com/josson/archive/2009/01/07/250293.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>rsync + ssh ?完成服务器之间的扚w数据同步http://www.tkk7.com/josson/archive/2008/10/15/234473.htmljossonjossonWed, 15 Oct 2008 08:50:00 GMThttp://www.tkk7.com/josson/archive/2008/10/15/234473.htmlhttp://www.tkk7.com/josson/comments/234473.htmlhttp://www.tkk7.com/josson/archive/2008/10/15/234473.html#Feedback0http://www.tkk7.com/josson/comments/commentRss/234473.htmlhttp://www.tkk7.com/josson/services/trackbacks/234473.html
实现上述需求,关键有两点:1). 通过ssh信QdQ避免每ơ同步时要求输入密码Q?). 通过rsync命o实现服务器之间文件的同步。具体实现细节如下:

1. 完成单向Trusted SSH Authorized
首先在A产生public/private dsa key pairQ?br />
……………………………………………………………………………………………………
[root@kplan-test3 .ssh]# ssh-keygen -d
Generating public/private dsa key pair.
Enter file in which to save the key (
/root/.ssh/id_dsa):
Enter passphrase (empty 
for no passphrase):
Enter same passphrase again
:
Your identification has been saved in 
/root/.ssh/id_dsa.
Your public key has been saved in 
/root/.ssh/id_dsa.pub.
The key fingerprint is
:
f3
:47:3b:b0:2a:50:f8:77:7e:ca:29:85:e8:d9:05:9b root@kplan-test3
[root
@kplan-test3 .ssh]#
……………………………………………………………………………………………………

完成上述命o后,会在pȝ/root/.ssh目录生成两个文g:id_dsa与id_dsa.pub。现在复制id_dsa.pub到B服务器,q更名ؓ authorized_keys2
……………………………………………………………………………………………………
[root
@kplan-test3 .ssh]# scp id_dsa.pub 192.168.0.101:/root/.ssh/authorized_keys2
root@192.168.0.101's password:
id_dsa.pub 100% |*****************************************************| 612 00:00
[root@kplan-test3 .ssh]#
……………………………………………………………………………………………………

如果上述步骤利完成的话Q现在您可以执行”ssh 192.168.0.101”Q无需输入d密码Q即可登录到B服务器了?br />
2.使用rsync 做Remote syncH?br /> rsyncҎ简? rsync是unix-likepȝ下的数据镜像备䆾工具Q从命名上就可以看出来了remote sync。它的特性如下:
1、可以镜像保存整个目录树和文件系l?
2、可以很Ҏ做到保持原来文g的权限、时间等{?
3、无ȝD权限即可安装?
4、优化的程Q文件传输效率高?
5、可以用rcp、ssh{方式来传输文gQ当然也可以通过直接的socketq接?
6、支持匿名传输?

参数意义如下H?br /> -a, --archive
It is a quick way of saying you want recursion and want to preserve almost everything.
-v, --verbose
This option increases the amount of information you are given during the transfer.
-l, --links
When symlinks are encountered, recreate the symlink on the destination.
-R, --relative
Use relative paths. 保留相对路径...才不会让子目录跟 parent 挤在同一?..
--delete
是指如果Server端删除了一文gQ那客户端也相应把这一文g删除Q保持真正的一致?
-e ssh
建立起加密的q接?
3、同步脚?br /> 创徏脚本Q实现自动配|工作?br />
……………………………………………………………………………………………………
[root
@kplan-test3 backup]# vi install_env.sh
#!/bin/bash

WEBSERVER='kplan-test1 kplan-test2 kplan-test3'
echo 
"auto install envirment … ------------------------"
for webserver in $WEBSERVER
do
    echo 
"install server:$webserver's envirment."
    echo 
'transport file : /etc/profile & /etc/hosts'
    rsync 
---------e ssh --delete /etc/profile root@$webserver:/etc/profile
    rsync 
---------e ssh --delete /etc/hosts root@$webserver:/etc/hosts

    echo 
'run shell command : /home/init_env.sh'
    ssh 
--o StrictHostKeyChecking=no root@$webserver "/home/init_env.sh"
    ssh 
--o StrictHostKeyChecking=no  root@$webserver "rm -f /home/init_env.sh"
    echo 
" $webserver is end  ------------------------- "
done
sleep 1
clear
……………………………………………………………………………………………………

4、其?br /> 如果你想用来做自动备份,则在crontab中加入备份脚本即可。如在每??分做备䆾(?root目录下已有完成备份的脚本 backup.sh)Q?br />
……………………………………………………………………………………………………
[root
@kplan-test3 backup]# crontab -e
0 0 * * * /root/backup.sh
……………………………………………………………………………………………………





josson 2008-10-15 16:50 发表评论
]]>
Linux Shell~程?/title><link>http://www.tkk7.com/josson/archive/2008/07/21/216334.html</link><dc:creator>josson</dc:creator><author>josson</author><pubDate>Mon, 21 Jul 2008 05:14:00 GMT</pubDate><guid>http://www.tkk7.com/josson/archive/2008/07/21/216334.html</guid><wfw:comment>http://www.tkk7.com/josson/comments/216334.html</wfw:comment><comments>http://www.tkk7.com/josson/archive/2008/07/21/216334.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/josson/comments/commentRss/216334.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/josson/services/trackbacks/216334.html</trackback:ping><description><![CDATA[<p><font class="f14" id="zoom"><font color="#000000">  <strong>Shell基本语法</strong></font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  像高U程序设计语a一PShell也提供说明和使用变量的功能。对Shell来讲Q所有变量的取值都是一个字ԌShellE序采用$var的Ş式来引用名ؓvar的变量的倹{?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  Shell有以下几U基本类型的变量?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  Q?QShell定义的环境变量:</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  Shell在开始执行时已l定义了一些和pȝ的工作环境有关的变量Q用戯可以重新定义q些变量Q常用的Shell环境变量有:</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  HOME 用于保存注册目录的完全\径名?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  PATH 用于保存用冒号分隔的目录路径名,Shell按PATH变量中给出的序搜烦q些目录Q找到的W一个与命o名称一致的可执行文件将被执行?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  TERM l端的类型?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  UID 当前用户的识别字Q取值是由数位构成的字串?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  PWD 当前工作目录的绝对\径名Q该变量的取值随cd命o的用而变化?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  PS1 LC符Q在Ҏ用户下,默认的主提示W是#Q在普通用户下Q默认的LC符??/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  PS2 在Shell接收用户输入命o的过E中Q如果用户在输入行的末尾输入“”然后回RQ或者当用户按回车键时Shell判断出用戯入的命o没有l束Ӟ显C个辅助提C符Q提C用Ll输入命令的其余部分Q默认的辅助提示W是>?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  Q?Q用户定义的变量Q?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  用户可以按照下面的语法规则定义自q变量Q?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  变量?变量?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  要注意的一ҎQ在定义变量Ӟ变量名前不应加符?Q在引用变量的内Ҏ则应在变量名前加$Q在l变量赋值时Q等号两边一定不能留I格Q若变量中本w就包含了空|则整个字串都要用双引hh?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  在编写ShellE序ӞZ使变量名和命令名相区别,所有的变量名都用大写字母来表示?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  有时我们惌在说明一个变量ƈ对它讄Z个特定值后׃在改变它的值时Q可以用下面的命令来保证一个变量的只读性:</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  readonly 变量?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  在Q何时候,创徏的变量都只是当前Shell的局部变量,所以不能被Shellq行的其他命令或ShellE序所利用Q而export命o可以一个局部变量提供给Shell执行的其他命令用,其格式ؓQ?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  export 变量?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  也可以在l变量赋值的同时使用export命oQ?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  export 变量?变量?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  使用export说明的变量,在Shell以后q行的所有命令或E序中都可以讉K到?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  Q?Q位|参敎ͼ</font></font></p> <p><font class="f14" id="zoom"><font color="#000000"> 位置参数是一U在调用ShellE序的命令行中按照各自的位置军_的变量,是在E序名之后输入的参数。位|参C间用I格分隔QShell取第一个位|? 参数替换E序文g中的$1Q第二个替换$2Q依ơ类推?0是一个特D的变量Q它的内Ҏ当前q个ShellE序的文件名Q所以,$0不是一个位|参敎ͼ 在显C当前所有的位置参数时是不包?0的?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  Q?Q预定义变量Q?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  预定义变量和环境变量相类|也是在Shell一开始时定义了的变量。所不同的是Q用户只能根据Shell的定义来使用q些变量Q而不能重定义它。所有预定义变量都是?W和另一个符L成的Q常用的Shell预定义变量有Q?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  $# 位置参数的数量?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  $* 所有位|参数的内容?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  $? 命o执行后返回的状态?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  $$ 当前q程的进E号?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  $! 后台q行的最后一个进E号?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  $0 当前执行的进E名?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  其中Q??用于查上一个命令执行是否正。(在Linux中,命o退出状态ؓ0表示该命令正执行,M?DC命令出错。)</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  $$变量最常见的用途是用做暂存文g的名字以保证暂存文g不会重复?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  Q?Q参数置换的变量Q?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  Shell提供了参数置换功能以便用户可以根据不同的条g来给变量赋不同的倹{参数置换的变量?U,q些变量通常与某一个位|参数相联系Q根据指定的位置参数是否已经讄cd定变量的取|它们的语法和功能分别如下?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  a. 变量=${参数-word}Q如果设|了参数Q则用参数的值置换变量的|否则用word|换。即q种变量的值等于某一个参数的|如果该参数没有设|,则变量就{于word的倹{?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  b. 变量=${参数=word}Q如果设|了参数Q则用参数的值置换变量的|否则把变量设|成wordQ然后再用word替换参数的倹{注意,位置参数不能用于q种方式Q因为在ShellE序中不能ؓ位置参数赋倹{?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000"> c. 变量=${参数Qword}Q如果设|了参数Q则用参数的值置换变量的|否则显Cwordq从Shell中退出,如果省略了wordQ则昄标准? 息。这U变量要求一定等于某一个参数的倹{如果该参数没有讄Q就昄一个信息,然后退出,因此q种方式常用于出错指C?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  d. 变量=${参数+word}Q如果设|了参数Q则用word|换变量Q否则不q行|换?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  所有这4UŞ式中?#8220;参数”既可以是位置参数Q也可以是另一个变量,只是用位|参数的情况比较多?strong>ShellE序设计的流E控?/strong></font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  和其他高U程序设计语a一PShell提供了用来控制程序执行流E的命oQ包括条件分支和循环l构Q用户可以用q些命o创徏非常复杂的程序?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  与传l语a不同的是QShell用于指定条g值的不是布尔q算式,而是命o和字丌Ӏ?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  1Q测试命?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  test命o用于查某个条件是否成立,它可以进行数倹{字W和文g3个方面的试Q其试W和相应的功能分别如下?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  Q?Q数值测试:</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  -eq {于则ؓ真?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  -ne 不等于则为真?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  -gt 大于则ؓ真?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  -ge 大于{于则ؓ真?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  -lt 于则ؓ真?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  -le 于{于则ؓ真?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  Q?Q字串测试:</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  = {于则ؓ真?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  != 不相{则为真?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  -z字串 字串长度伪则为真?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  -n字串 字串长度不伪则ؓ真?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  Q?Q文件测试:</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  -e文g?如果文g存在则ؓ真?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  -r文g?如果文g存在且可d为真?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  -w文g?如果文g存在且可写则为真?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  -x文g?如果文g存在且可执行则ؓ真?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  -s文g?如果文g存在且至有一个字W则为真?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  -d文g?如果文g存在且ؓ目录则ؓ真?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  -f文g?如果文g存在且ؓ普通文件则为真?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  -c文g?如果文g存在且ؓ字符型特D文件则为真?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  -b文g?如果文g存在且ؓ块特D文件则为真?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  另外QLinuxq提供了与(Q)、或Q?oQ、非Q?aQ三个逻辑操作W,用于测试条件连接v来,其优先顺序ؓQ!最高,-aơ之Q?o最低?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  同时Qbash也能完成单的术q算Q格式如下:</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  $[expression]</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  例如Q?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  var1=2</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  var2=$[var1*10+1]</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  则var2的gؓ21?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  2Qif条g语句</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  ShellE序中的条g分支是通过if条g语句来实现的Q其一般格式ؓQ?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  if 条g命o?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  then</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  条g为真时的命o?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  else</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  条g为假时的命o?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  fi</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  3Qfor循环</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  for循环对一个变量的可能的值都执行一个命令序列。赋l变量的几个数值既可以在程序内以数值列表的形式提供Q也可以在程序以外以位置参数的Ş式提供。for循环的一般格式ؓQ?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  for变量?   [in数值列表]</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  do</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  若干个命令行</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  done</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  变量名可以是用户选择的Q何字Ԍ如果变量名是varQ则在in之后l出的数值将序替换循环命o列表中的$var。如果省略了inQ则变量var的取值将是位|参数。对变量的每一个可能的赋值都执行do和done之间的命令列表?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  4Qwhile和until循环</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  while和until命o都是用命令的q回状态值来控制循环的。While循环的一般格式ؓQ?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  while</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  若干个命令行1</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  do</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  若干个命令行2</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  done</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  只要while?#8220;若干个命令行1”中最后一个命令的q回状态ؓ真,while循环ql执行do...done之间?#8220;若干个命令行2”?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  until命o是另一U@环结构,它和while命o怼Q其格式如下Q?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  until</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">   若干个命令行1</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  do</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">   若干个命令行2</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  done</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  until循环和while循环的区别在于:while循环在条件ؓ真时l箋执行循环Q而until则是在条件ؓ假时l箋执行循环?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  Shellq提供了true和false两条命o用于创徏无限循环l构Q它们的q回状态分别是Mؓ0或Mؓ??/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  5Qcase条g选择</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  if条g语句用于在两个选项中选定一,而case条g选择为用h供了Ҏ字串或变量的g多个选项中选择一的ҎQ其格式如下Q?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  case string in</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  exp-1)</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  若干个命令行1</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  Q;</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  exp-2)</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">   若干个命令行2</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  Q;</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  ……</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  *)</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  其他命o?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  esac</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  Shell通过计算字串string的|其l果依次和运式exp-1, exp-2{进行比较,直到扑ֈ一个匹配的q算式ؓ止。如果找C匚w,则执行它下面的命令直到遇C对分?Q;)为止?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  在caseq算式中也可以用Shell的通配W(“*”?#8220;Q?#8221;?#8220;[ ]”Q。通常?* 作ؓcase命o的最后运式以便在前面找不到M相应的匹配项时执?#8220;其他命o?#8221;的命令?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  6Q无条g控制语句break和continue</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  break用于立即l止当前循环的执行,而contiune用于不执行@环中后面的语句而立卛_始下一个@环的执行。这两个语句只有攑֜do和done之间才有效?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  7Q函数定?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  在Shell中还可以定义函数。函数实际上也是pq条Shell命ol成的,因此它与ShellE序形式上是怼的,不同的是它不是一个单独的q程Q而是ShellE序的一部分。函数定义的基本格式为:</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  functionname</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  {</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">   若干命o?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  }</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  调用函数的格式ؓQ?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  functionname param1 param2…</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  Shell函数可以完成某些例行的工作,而且q可以有自己的退出状态,因此函数也可以作为if, while{控制结构的条g?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  在函数定义时不用带参数说明,但在调用函数时可以带有参敎ͼ此时Shell把q些参数分别赋予相应的位|参?1, $2, ...?*?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  8Q命令分l?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000"> 在Shell中有两种命o分组的方法:()和{}。前者当Shell执行()中的命o时将再创Z个新的子q程Q然后这个子q程L行圆括弧中的命o? 当用户在执行某个命o时不惌命oq行时对状态集合(如位|参数、环境变量、当前工作目录等Q的改变影响C面语句的执行Ӟ应该把q些命o攑֜圆括? 中,q样p保证所有的改变只对子进E生媄响,而父q程不受Mq扰。{}用于顺序执行的命o的输出结果用于另一个命令的输入Q管道方式)。当我们? 真正使用圆括弧和花括弧时Q如计算q算式的优先序Q,则需要在其前面加上{义符Q)以便让Shell知道它们不是用于命o执行的控制所用?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  9Q信?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  trap命o用于在ShellE序中捕捉信P之后可以?U反应方式:</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  Q?Q执行一D늨序来处理q一信号?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  Q?Q接受信L默认操作?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  Q?Q忽视这一信号?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  trap对上?U方式提供了3U基本Ş式:</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  W一UŞ式的trap命o在Shell接收Csignal list清单中数值相同的信号Ӟ执行双引号中的命o丌Ӏ?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  trap 'commands' signal-list</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  trap "commands" signal-list</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  Z恢复信号的默认操作,使用W二UŞ式的trap命oQ?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  trap signal-list</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  W三UŞ式的trap命o允许忽略信号Q?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  trap " " signal-list</font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  注意Q?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  Q?Q对信号11Q段q例Q不能捕捉,因ؓShell本n需要捕捉该信号去进行内存的转储?/font></font></p> <p><font class="f14" id="zoom"><font color="#000000">  Q?Q在trap中可以定义对信号0的处理(实际上没有这个信PQShellE序在其l止Q如执行exit语句Q时发出该信受? <p>  Q?Q在捕捉到signal-list中指定的信号q执行完相应的命令之后,如果q些命o没有ShellE序l止的话QShellE序l执行收Ch所执行的命令后面的命oQ这样将很容易导致ShellE序无法l止?/p> <p> 另外Q在trap语句中,单引号和双引h不同的。当ShellE序W一ơ碰到trap语句Ӟ把commands中的命o扫描一遍。此时若 commands是用单引hh的话Q那么Shell不会对commands中的变量和命令进行替换,否则commands中的变量和命令将用当时具? 的值来替换?strong>q行ShellE序的方?/strong></p> <p>  用户可以用Q何编辑程序来~写ShellE序。因? ShellE序是解释执行的Q所以不需要编译成目的E序。按照Shell~程的惯例,以bashZQ程序的W一行一般ؓ“#Q?bin/bash”Q其 ?# 表示该行是注释,叹号 Q? 告诉Shellq行叹号之后的命令ƈ用文档的其余部分作ؓ输入Q也是q行/bin/bashq让/bin/bashL行ShellE序的内宏V?/p> <p>  执行ShellE序的方法有3U?/p> <p>  1Qsh ShellE序文g?/p> <p>  q种Ҏ的命令格式ؓQ?/p> <p>  bash ShellE序文g?/p> <p>  q实际上是调用一个新的bash命o解释E序Q而把ShellE序文g名作为参C递给它。新启动的Shell去L定的文gQ可执行文g中列出的命oQ当所有的命o都执行完后结束。该Ҏ的优Ҏ可以利用Shell调试功能?/p> <p>  2Qsh</p> <p>  格式为:</p> <p>  bash< ShellE序?/p> <p>  q种方式是利用输入重定向,使Shell命o解释E序的输入取自指定的E序文g?/p> <p>  3Q用chmod命o使ShellE序成ؓ可执行的</p> <p>  一个文件能否运行取决于该文档的内容本n可执行且该文件具有执行权。对于ShellE序Q当用编辑器生成一个文件时Q系l赋予的许可权都?44(rw-r-r--)Q因此,当用户需要运行这个文件时Q只需要直接键入文件名卛_?/p> <p> 在这3U运行ShellE序的方法中Q最好按下面的方式选择Q当刚创Z个ShellE序Q对它的正确性还没有把握Ӟ应当使用W一U方式进行调试。当 一个ShellE序已经调试好时Q应使用W三U方式把它固定下来,以后只要键入相应的文件名卛_Qƈ可被另一个程序所调用?/p> <p>  4QbashE序的调?/p> <p>  在编E过E中隑օ会出错,有的时候,调试E序比编写程序花费的旉q要多,ShellE序同样如此?/p> <p>  ShellE序的调试主要是利用bash命o解释E序的选择V调用bash的Ş式是Q?/p> <p>  bash -选择ShellE序文g?/p> <p>  几个常用的选择ҎQ?/p> <p>  -e 如果一个命令失败就立即退出?/p> <p>  -n d命o但是不执行它们?/p> <p>  -u |换时把未设|的变量看做出错?/p> <p>  -v 当读入Shell输入行时把它们显C出来?/p> <p>  -x 执行命o时把命o和它们的参数昄出来?/p> <p>  上面的所有选项也可以在ShellE序内部?#8220;set -选择?#8221;的Ş式引用,?#8220;set +选择?#8221;则将止该选择v作用。如果只惛_E序的某一部分使用某些选择ҎQ则可以该部分用上面两个语句包围v来?/p> <p>  Q?Q未|变量退出和立即退?/p> <p> 未置变量退出特性允许用户对所有变量进行检查,如果引用了一个未赋值的变量q止ShellE序的执行。Shell通常允许未置变量的用,在这U情? 下,变量的gؓI。如果设|了未置变量退出选择,则一旦用了未置变量显C错误信息,q终止程序的q行。未|变量退出选择ؓ-u?/p> <p> 当Shellq行Ӟ若遇C存在或不可执行的命o、重定向p|或命令非正常l束{情冉|Q如果未l重新定向,该出错信息会昄在终端屏q上Q? ShellE序仍将l箋执行。要惛_错误发生时迫使ShellE序立即l束Q可以?e选项ShellE序的执行立即终止?/p> <p>  Q?QShellE序的跟t?/p> <p> 调试ShellE序的主要方法是利用Shell命o解释E序?v?x选项来跟t程序的执行?v选择Shell在执行程序的q程中,把它d? 每一个命令行都显C出来,?x选择Shell在执行程序的q程中把它执行的每一个命令在行首用一?加上命o名显C出来。ƈ把每一个变量和该变量所 取的g昄出来。因此,它们的主要区别在于:在执行命令行之前?vQ则昄出命令行的原始内容,而有-v时则昄出经q替换后的命令行的内宏V?/p> <p> 除了使用Shell?v?x选择以外,q可以在ShellE序内部采取一些辅助调试的措施。例如,可以在ShellE序的一些关键地方? echo命o把必要的信息昄出来Q它的作用相当于C语言中的printf语句Q这样就可以知道E序q行C么地方及E序目前的状态?strong>bash的内部命?/strong></p> <p> bash命o解释套装E序包含了一些内部命令。内部命令在目录列表时是看不见的Q它们由Shell本n提供。常用的内部命o有:echo, eval, exec, export, readonly, read, shift, wait和点(.)。下面简单介l其命o格式和功能?/p> <p>  1Qecho</p> <p>  命o格式Qecho arg</p> <p>  功能Q在屏幕上显C出由arg指定的字丌Ӏ?/p> <p>  2Qeval</p> <p>  命o格式Qeval args</p> <p>  功能Q当ShellE序执行到eval语句ӞShelld参数argsQƈ它们组合成一个新的命令,然后执行?/p> <p>  3Qexec</p> <p>  命o格式Qexec命o参数</p> <p>  功能Q当Shell执行到exec语句Ӟ不会d建新的子q程Q而是转去执行指定的命令,当指定的命o执行完时Q该q程Q也是最初的ShellQ就l止了,所以ShellE序中exec后面的语句将不再被执行?/p> <p>  4Qexport</p> <p>  命o格式Qexport变量?或:export变量?变量?/p> <p>  功能QShell可以用export把它的变量向下带入子ShellQ从而让子进E承父q程中的环境变量。但子Shell不能用export把它的变量向上带入父Shell?/p> <p>  注意Q不带Q何变量名的export语句显C出当前所有的export变量?/p> <p>  5Qreadonly</p> <p>  命o格式Qreadonly变量?/p> <p>  功能Q将一个用户定义的Shell变量标识Z可变。不带Q何参数的readonly命o显C出所有只ȝShell变量?/p> <p>  6Qread</p> <p>  命o格式Qread变量名表</p> <p>  功能Q从标准输入讑֤d一行,分解成若q字Q赋值给ShellE序内部定义的变量?/p> <p>  7Qshift语句</p> <p>  功能Qshift语句按如下方式重新命名所有的位置参数变量Q即$2成ؓ$1Q?3成ؓ$2…在程序中每用一ơshift语句Q都使所有的位置参数依次向左Ud一个位|,q位置参数$#?Q直到减?为止?/p> <p>  8Qwait</p> <p>  功能QShell{待在后台启动的所有子q程l束。wait的返回值L真?/p> <p>  9Qexit</p> <p>  功能Q退出ShellE序。在exit之后可有选择地指定一个数位作回状态?/p> <p>  10Q?#8220;.”Q点Q?/p> <p>  命o格式Q? ShellE序文g?/p> <p>  功能QShelld指定的ShellE序文gq依ơ执行文件中的所有语句?/p> </font></font></p> <img src ="http://www.tkk7.com/josson/aggbug/216334.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/josson/" target="_blank">josson</a> 2008-07-21 13:14 <a href="http://www.tkk7.com/josson/archive/2008/07/21/216334.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux的一些命?/title><link>http://www.tkk7.com/josson/archive/2008/07/21/216310.html</link><dc:creator>josson</dc:creator><author>josson</author><pubDate>Mon, 21 Jul 2008 03:33:00 GMT</pubDate><guid>http://www.tkk7.com/josson/archive/2008/07/21/216310.html</guid><wfw:comment>http://www.tkk7.com/josson/comments/216310.html</wfw:comment><comments>http://www.tkk7.com/josson/archive/2008/07/21/216310.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/josson/comments/commentRss/216310.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/josson/services/trackbacks/216310.html</trackback:ping><description><![CDATA[1、修改linuxpȝ默认?024个文件上限?br /> ?root/.bash_profile文g中加入:ulimit -n 4096<br /> <br /> 2、查看某个进E打开的文件数Q?br /> 先用ps -aux扑ֈpid,然后q行lsof -p %pid% | wc -l<br /> <br /> <p>3、查?0端口的连接数<br /> netstat -nat|grep -i “80″|wc -l <br /> </p> <p>4、查看系l内核版?br /> uname   -a <br /> </p> <p>5、查看Linux版本</p> d到服务器执行 lsb_release -a Q即可列出所有版本信?<br /> <br /> 6、查看目录空?br /> du -h --max-depth=2 | sort -n <img src ="http://www.tkk7.com/josson/aggbug/216310.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/josson/" target="_blank">josson</a> 2008-07-21 11:33 <a href="http://www.tkk7.com/josson/archive/2008/07/21/216310.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Mysql 自启动脚?/title><link>http://www.tkk7.com/josson/archive/2008/01/23/177212.html</link><dc:creator>josson</dc:creator><author>josson</author><pubDate>Wed, 23 Jan 2008 02:53:00 GMT</pubDate><guid>http://www.tkk7.com/josson/archive/2008/01/23/177212.html</guid><wfw:comment>http://www.tkk7.com/josson/comments/177212.html</wfw:comment><comments>http://www.tkk7.com/josson/archive/2008/01/23/177212.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/josson/comments/commentRss/177212.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/josson/services/trackbacks/177212.html</trackback:ping><description><![CDATA[     摘要: 1、命令控? 启动Q?usr/local/mysql/bin/mysqld-safe --user=mysql & 停止Q?usr/local/mysql/bin/mysqladmin -u root -p pwd shutdown 2、自启动sh脚本Qmysqld 存放?etc/init.d目录下,注意下面mysql数据所在\径) Code highl...  <a href='http://www.tkk7.com/josson/archive/2008/01/23/177212.html'>阅读全文</a><img src ="http://www.tkk7.com/josson/aggbug/177212.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/josson/" target="_blank">josson</a> 2008-01-23 10:53 <a href="http://www.tkk7.com/josson/archive/2008/01/23/177212.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SSH、SCP q程控制、文件传?/title><link>http://www.tkk7.com/josson/archive/2008/01/23/177208.html</link><dc:creator>josson</dc:creator><author>josson</author><pubDate>Wed, 23 Jan 2008 02:38:00 GMT</pubDate><guid>http://www.tkk7.com/josson/archive/2008/01/23/177208.html</guid><wfw:comment>http://www.tkk7.com/josson/comments/177208.html</wfw:comment><comments>http://www.tkk7.com/josson/archive/2008/01/23/177208.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/josson/comments/commentRss/177208.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/josson/services/trackbacks/177208.html</trackback:ping><description><![CDATA[1、SSH <br /> q程dq程服务器:ssh root@192.168.1.100Q按提示输入密码Q即可登录远E服务器q行操作?br /> <br /> 2、SCP<br /> <span lang="EN-US">scp</span> <span style="font-family: 宋体;">是</span> <span lang="EN-US">secure copy,</span> <span style="font-family: 宋体;">是用来进行远E文件拷贝?/span><span style="font-family: 宋体;">数据传输使用</span><span lang="EN-US">ssh1Q?/span><span style="font-family: 宋体;">q且?/span><span lang="EN-US">ssh1</span><span style="font-family: 宋体;">使用相同的认证方?/span>Q?span style="font-family: 宋体;">提供相同的安全保?/span>?span style="font-family: 宋体;">?/span><span lang="EN-US">rcp</span><span style="font-family: 宋体;">不同的是Q?/span><span lang="EN-US">scp</span><span style="font-family: 宋体;">会要求你输入密码</span>。命令格式如下:<br /> <p class="MsoNormal"> <strong><span lang="EN-US">scp </span><span style="font-family: 宋体;">本地用户?/span><span lang="EN-US">@IP</span><span style="font-family: 宋体;">地址</span><span lang="EN-US">:</span><span style="font-family: 宋体;">文g?/span><span lang="EN-US">1  </span><span style="font-family: 宋体;">q程用户?/span><span lang="EN-US">@IP</span><span style="font-family: 宋体;">地址</span><span lang="EN-US">:</span><span style="font-family: 宋体;">文g?/span><span lang="EN-US">2</span></strong></p> <p class="MsoNormal"><strong><span lang="EN-US">选项说明Q详l的可用 man scp</span></strong><strong><span lang="EN-US">查询</span></strong><strong><span lang="EN-US">Q:</span></strong></p> <p class="MsoNormal"> <span lang="EN-US">    -v </span> <span style="font-family: 宋体;">和大多数</span> <span lang="EN-US">linux</span> <span style="font-family: 宋体;">命o中的</span> <span lang="EN-US">-v</span> <span style="font-family: 宋体;">意思一?/span> <span lang="EN-US">,</span> <span style="font-family: 宋体;">用来昄q度</span> <span lang="EN-US">.</span> <span style="font-family: 宋体;">可以用来查看q接</span> <span lang="EN-US">,</span> <span style="font-family: 宋体;">认证</span> <span lang="EN-US">,</span> <span style="font-family: 宋体;">或是配置错误</span> <span lang="EN-US">.</span> </p> <p class="MsoNormal"> <span lang="EN-US">    -C </span> <span style="font-family: 宋体;">使能压羃选项</span> <span lang="EN-US">.</span> </p> <p class="MsoNormal"> <span lang="EN-US">    -P </span> <span style="font-family: 宋体;">选择端口</span> <span lang="EN-US">.</span> <span style="font-family: 宋体;">注意</span> <span lang="EN-US">-p</span> <span style="font-family: 宋体;">已经?/span> <span lang="EN-US">rcp</span> <span style="font-family: 宋体;">使用</span> <span lang="EN-US">.</span> </p> <p class="MsoNormal"> <span lang="EN-US">    -4 </span> <span style="font-family: 宋体;">使用</span> <span lang="EN-US">IPV4</span> <span style="font-family: 宋体;">地址</span> <span lang="EN-US">.</span> </p> <p class="MsoNormal"> <span lang="EN-US">    -6 </span> <span style="font-family: 宋体;">使用</span> <span lang="EN-US">IPV6</span> <span style="font-family: 宋体;">地址</span> <span lang="EN-US">.<o:p><br /> </o:p></span> </p> <p class="MsoNormal"> <span lang="EN-US"> <span>     </span>-r Recursively copy entire directories.</span> </p> <p class="MsoNormal"> </p> <p class="MsoNormal">注:ip地址和文件名之间?:"Q且两台服务器的ssh1版本不一致的话可能会有问题?br /> </p> <br /> <br /> <img src ="http://www.tkk7.com/josson/aggbug/177208.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/josson/" target="_blank">josson</a> 2008-01-23 10:38 <a href="http://www.tkk7.com/josson/archive/2008/01/23/177208.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux 抓包分析工具?/title><link>http://www.tkk7.com/josson/archive/2008/01/21/176774.html</link><dc:creator>josson</dc:creator><author>josson</author><pubDate>Mon, 21 Jan 2008 07:39:00 GMT</pubDate><guid>http://www.tkk7.com/josson/archive/2008/01/21/176774.html</guid><wfw:comment>http://www.tkk7.com/josson/comments/176774.html</wfw:comment><comments>http://www.tkk7.com/josson/archive/2008/01/21/176774.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/josson/comments/commentRss/176774.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/josson/services/trackbacks/176774.html</trackback:ping><description><![CDATA[tcpdump是一个Sniffer工具Q实际上是一个网l上的抓包工P同时q可以对抓到的包q行分析。一般系l都默认安装。相关介l及安装说明可参? <a title="Tcpdump的安装和使用" >Tcpdump的安装和使用?/a><br /> <br /> <br />     <strong>tcpdump命o说明Q?/strong><br /> tcpdump采用命o行方式,它的命o格式为:<br /> tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文g?]<br /> [ -i |络接口 ] [ -r 文g名] [ -s snaplen ]<br /> [ -T cd ] [ -w 文g?] [表达?]<br /> <br /> <strong>tcpdump的选项介绍:</strong><br /> -a    网l地址和广播地址转变成名字;<br /> -d    匹配信息包的代码以Z能够理解的汇~格式给出;<br /> -dd    匹配信息包的代码以c语言E序D늚格式l出Q?br /> -ddd    匹配信息包的代码以十进制的形式l出Q?br /> -e    在输打印出数据链路层的头部信息;<br /> -f    外部的Internet地址以数字的形式打印出来Q?br /> -l    使标准输出变为缓冲行形式Q?br /> -n    不把|络地址转换成名字;<br /> -t    在输出的每一行不打印旉戻I<br /> -v    输出一个稍微详l的信息Q例如在ip包中可以包括ttl和服务类型的信息Q?br /> -vv    输出详细的报文信息;<br /> -c    在收到指定的包的数目后,tcpdump׃停止Q?br /> -F    从指定的文g中读取表辑ּ,忽略其它的表辑ּQ?br /> -i    指定监听的网l接口;<br /> -r    从指定的文g中读取包(q些包一般通过-w选项产生)Q?br /> -w    直接包写入文g中,q不分析和打印出来;<br /> -T    监听到的包直接解释为指定的cd的报文,常见的类型有rpc Q远E过E?调用Q和snmpQ简单       |络理协议Q)<br /> <br />       -s      讄抓包大小限制Q默认抓包大限制在96个BYTEQ包括以太网帧)。修改参CؓQ?strong>-s 0</strong>? 则忽略包的大限Ӟ按包的长度实际长度抓取?br /> <br />     例:tcpdump <strong>-vv</strong> <strong>tcp port</strong> 5270 <strong>-c</strong> 100 <strong>-s</strong> 1500 <strong>-w</strong> /opt/sniffer.pack<br /> <img src ="http://www.tkk7.com/josson/aggbug/176774.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/josson/" target="_blank">josson</a> 2008-01-21 15:39 <a href="http://www.tkk7.com/josson/archive/2008/01/21/176774.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux: Too many open files问题?http://www.tkk7.com/josson/archive/2007/11/21/162128.htmljossonjossonWed, 21 Nov 2007 09:02:00 GMThttp://www.tkk7.com/josson/archive/2007/11/21/162128.htmlhttp://www.tkk7.com/josson/comments/162128.htmlhttp://www.tkk7.com/josson/archive/2007/11/21/162128.html#Feedback0http://www.tkk7.com/josson/comments/commentRss/162128.htmlhttp://www.tkk7.com/josson/services/trackbacks/162128.html
1、相兛_令:
ulimit –a //查看当前讄
ulimit –n 2048 //卌?048Q按实际需要设|?br />
2、用L境参数文仉|:
?etc/profile中加入如下内容:
if [ $SHELL = "/bin/ksh" ]; then 
ulimit 
-16384 ulimit -65536 
else 
ulimit 
-16384 -65536 
fi


josson 2007-11-21 17:02 发表评论
]]>
vi命ohttp://www.tkk7.com/josson/archive/2007/07/05/128273.htmljossonjossonThu, 05 Jul 2007 02:52:00 GMThttp://www.tkk7.com/josson/archive/2007/07/05/128273.htmlhttp://www.tkk7.com/josson/comments/128273.htmlhttp://www.tkk7.com/josson/archive/2007/07/05/128273.html#Feedback0http://www.tkk7.com/josson/comments/commentRss/128273.htmlhttp://www.tkk7.com/josson/services/trackbacks/128273.htmlvi filename :打开或新建文Ӟq将光标|于W一行首
vi +n filename Q打开文gQƈ光标置于第n行首
vi + filename Q打开文gQƈ光标置于最后一行首
vi +/pattern filenameQ打开文gQƈ光标置于第一个与pattern匚w的串?br>vi -r filename Q在上次正用vi~辑时发生系l崩溃,恢复filename
vi filename....filename Q打开多个文gQ依ơ编?br>
Ud光标cd?br>h Q光标左UM个字W?br>l Q光标右UM个字W?br>spaceQ光标右UM个字W?br>BackspaceQ光标左UM个字W?br>k或Ctrl+pQ光标上UM?br>j或Ctrl+n Q光标下UM?br>Enter Q光标下UM?br>w或W Q光标右UM个字臛_?br>b或B Q光标左UM个字臛_?br>e或E Q光标右UM个字j臛_?br>) Q光标移臛_?br>( Q光标移臛_?br>}Q光标移x落开?br>{Q光标移x落结?br>nGQ光标移至第n行首
n+Q光标下Un?br>n-Q光标上Un?br>n$Q光标移至第n行尾
H Q光标移臛_q顶?br>M Q光标移臛_q中间行
L Q光标移臛_q最后行
0Q(注意是数字零Q光标移臛_前行?br>$Q光标移臛_前行?br>
屏幕Lcd?br>Ctrl+uQ向文g首翻半屏
Ctrl+dQ向文g半屏
Ctrl+fQ向文g一?br>CtrlQbQ向文g首翻一?br>nzQ将Wn行滚臛_q顶部,不指定n时将当前行滚臛_q顶部?br>
插入文本cd?br>i Q在光标?br>I Q在当前行首
aQ光标后
AQ在当前行尾
oQ在当前行之下新开一?br>OQ在当前行之上新开一?br>rQ替换当前字W?br>RQ替换当前字W及其后的字W,直至按ESC?br>sQ从当前光标位置处开始,以输入的文本替代指定数目的字W?br>SQ删除指定数目的行,q以所输入文本代替?br>ncw或nCWQ修Ҏ定数目的?br>nCCQ修Ҏ定数目的?br>
删除命o
ndw或ndWQ删除光标处开始及其后的n-1个字
doQ删臌?br>d$Q删臌?br>nddQ删除当前行及其后n-1?br>x或XQ删除一个字W,x删除光标后的Q而X删除光标前的
Ctrl+uQ删除输入方式下所输入的文?br>
搜烦及替换命?:
/patternQ从光标开始处向文件尾搜烦pattern
?patternQ从光标开始处向文仉搜烦pattern
nQ在同一方向重复上一ơ搜索命?br>NQ在反方向上重复上一ơ搜索命?br>Qs/p1/p2/gQ将当前行中所有p1均用p2替代
Qn1,n2s/p1/p2/gQ将Wn1至n2行中所有p1均用p2替代
Qg/p1/s//p2/gQ将文g中所有p1均用p2替换

选项讄
allQ列出所有选项讄情况
termQ设|终端类?br>ignoranceQ在搜烦中忽略大写
listQ显C制表位(Ctrl+I)和行标志($)
numberQ显C?br>reportQ显C由面向行的命o修改q的数目
terseQ显C简短的警告信息
warnQ在转到别的文g时若没保存当前文件则昄NO write信息
nomagicQ允许在搜烦模式中,使用前面不带“\\”的特D字W?br>nowrapscanQ禁止vi在搜索到达文件两端时Q又从另一端开?br>mesgQ允许vi昄其他用户用write写到自己l端上的信息

最后行方式命o
Qn1,n2 co n3Q将n1行到n2行之间的内容拯到第n3行下
Qn1,n2 m n3Q将n1行到n2行之间的内容U至到第n3行下
Qn1,n2 d Q将n1行到n2行之间的内容删除
Qw Q保存当前文?br>Qe filenameQ打开文gfilenameq行~辑
QxQ保存当前文件ƈ退?br>QqQ退出vi
Qq!Q不保存文gq出vi
Q?commandQ执行shell命ocommand
Qn1,n2 w!commandQ将文g中n1行至n2行的内容作ؓcommand的输入ƈ执行之,若不?br>定n1Qn2Q则表示整个文件内容作为command的输?br>Qr!commandQ将命ocommand的输出结果放到当前行 ?br>
 

1.交换两个字符位置

xp
2.上下两行调换
ddp
3.把文件内容反?br>:g/^/m0/ (未通过)

4.上下两行合ƈ
J
5.删除所有行
dG
6.从当前位|删除到行尾
d$
7.从当前位|复制到行尾
y$ 如果要粘贴到其他地方 p 可以了


׃vi 是徏立在 EX 上的 所?当键?: 时就来到?EX 命o状?br>8.
:ab string strings
例如 ":ab usa United States of America" ,
当你在文见里插入 usa ?br>United States of America p出来?br>9.
:map keys new_seq
定义你当?键盘命o
10.
:set [all]
vi or ex 的编辑状?br>?昄每行 :set nu
11.
在命令状态下Qnyy表示拯从光标行L下n行内容,p表示paste,可刚复制的内容粘贴在光标处的
下面?br>
12.
单个字符替换用rQ覆盖多个字W用RQ用多个字符替换一个字W用sQ整行替换用S

13.

:%s/old_word/new_word/g
q个指o是于在整个文件中替换特定字符?br>
14.光标控制

k:上移 nk 上移n?br>j:下移 nj 下移n?br>

光标移到第n行,按下 mk
光标移到第m行,按下 "ay'k
卛_Wn到m的行存到a寄存器,以此cLQbQc........寄存器等

q样可以将你常用的需要复用的内容_脓C同的寄存器中以备?br>

想粘贴到某处Q直接将光标Ud某地Q按?‘ap 卛_,以此cLQbQc........寄存器等

在当前屏q中
H 跛_W一?br>M 跛_中间一?br>L 跛_最后一?br>
15.
?-2 删除命o
删除命o操作
d l 删除当前字符Q与x命o功能相同Q?br>d 0 删除到某一行的开始位|?br>d ^ 删除到某一行的W一个字W位|(不包括空格或TA B字符Q?br>d w 删除到某个单词的l尾位置
d 3 w 删除到第三个单词的结位|?br>d b 删除到某个单词的开始位|?br>d W 删除到某个以I格作ؓ分隔W的单词的结位|?br>d B 删除到某个以I格作ؓ分隔W的单词的开始位|?br>d 7 B 删除到前?个以I格作ؓ分隔W的单词的开始位|?br>dQ?删除到某个语句的l尾位置
d 4Q?删除到第四个语句的结位|?br>dQ?删除到某个语句的开始位|?br>d } 删除到某个段落的l尾位置
d { 删除到某个段落的开始位|?br>d 7 { 删除到当前段落v始位|之前的W?个段落位|?br>d d 删除当前?br>d /t e x t 删除从文本中出现“ t e x t”中所指定字样的位|,一直向前直C一个该字样所出现?br>位置Q但不包括该字样Q之间的内容
d fc 删除从文本中出现字符“c”的位|,一直向前直C一个该字符所出现的位|(包括
该字W)之间的内?br>d tc 删除当前行直C一个字W?#8220; c”所出现位置之间的内?br>D 删除到某一行的l尾
d $ 删除到某一行的l尾
5 d d 删除从当前行所开始的5行内?br>d L 删除直到屏幕上最后一行的内容
d H 删除直到屏幕上第一行的内容
d G 删除直到工作~存区结内容
d 1 G 删除直到工作~存区开始的内容

修改命o操作
c l 更改当前字符
c w 修改到某个单词的l尾位置
c 3 w 修改到第三个单词的结位|?br>c b 修改到某个单词的开始位|?br>c W 修改到某个以I格作ؓ分隔W的单词的结位|?br>c B 修改到某个以I格作ؓ分隔W的单词的开始位|?br>c 7 B 修改到前?个以I格作ؓ分隔W的单词的开始位|?br>c 0 修改到某行的l尾位置
cQ?修改到某个语句的l尾位置
c 4Q?修改到第四个语句的结位|?br>cQ?修改到某个语句的开始位|?br>c } 修改到某个段落的l尾位置
c { 修改到某个段落的开始位|?br>c 7 { 修改到当前段落v始位|之前的W?个段落位|?br>c tc 修改当前行直C一个字Wc所出现位置之间的内?br>C 修改到某一行的l尾
c c 修改当前?br>5 c c 修改从当前行所开始的5行内?br>

.重复上一ơ修改!


?-4 替换命o
替换命o操作
s 当前字W替换ؓ一个或多个字符
S 当前行替换Z个或多个字符
5 s 从当前字符开始的5个字W替换ؓ一个或多个字符


vi替换使用规则Q?br>:g/s1/s/s2/s3/g
W一个g表示Ҏ一个包括s1的行都进行替换,W二个g表示Ҏ一行包括s1的行所有的s2都用s3替换
s表示替换Qs2是要被替换的字符Ԍ他可以和s1相同Q如果相同的话用//代替Q,s3是替换字W串


16.

fx
往右移动到 x 字符?br>Fx
往左移动到 x 字符?br>tx
往右移动到 x 字符?br>Tx
往左移动到 x 字符?br>Q注意:以上四个命o中,其中x是键入的字符Q?br>;
分号Q配?f ?t 使用Q重复一?br>,
逗号Q配?f ?t 使用Q反方向重复一?br>

17. vi 环境选项 Solaris ksh

noautoindent nomodelines noshowmode
autoprint nonumber noslowopen
noautowrite nonovice tabstop=8
nobeautify nooptimize taglength=0
directory=/var/tmp paragraphs=IPLPPPQPP LIpplpipnpbtags=tags /usr/lib/tags
noedcompatible prompt tagstack
noerrorbells noreadonly term=vt100
noexrc redraw noterse
flash remap timeout
hardtabs=8 report=5 ttytype=vt100
noignorecase scroll=11 warn
nolisp sections=NHSHH HUuhsh+c window=23
nolist shell=/bin/ksh wrapscan
magic shiftwidth=8 wrapmargin=0
mesg noshowmatch nowriteany


For C-Shell:
setenv EXINIT "set nu"
For Bourne or Korn Shell:
EXINIT="set nu"; export EXINIT
For Korn Shell Only (alternate method):
typeset -x EXINIT="set nu"
?.profile 里设|?vi 的环境选项 , 以上均测试过


18.标记文本

  mchar   用字母char标记当前光标的位|?br>  `char   U至char所标记?br>  'char   U至char标记所在行的开头处
  "     U至当前行上一ơ所在位|(在光标移动之后)――一个双引号
  ''    U至当前行上W一ơ所在位|的行的开头处(在光标移动之?――两个单引号


19.
同时vi多个文gӞCTRL-SHIFT-6回到上一个文Ӟ在本ơvi的文件和上次vi的文件之间切换?br>但是我发C个BUGQ在用CTRL-SHIFT-6切换C一个文件后Q用:args查看多文件vi状态时Q?br>屏幕底部仍然昄目前vi的是刚才的文件?br>(在HP-UX,Solaris,AIX上通过)

也可以?
:e#
q行切换

20.
sco 下VI 要在文本前同L字符加用
%s/^/要加的内?g 要在文本后同L字符?br>%s/$/要加的内?g

21.
如何L文本中的 ^M 回车?不必用binary传回dascii传回来的方式Q用shell或者unix语句实现?br>
cat filename |tr -d '\015' >newfile
不同的unixpȝq存在一些其他不同的命o,?doscp
sed 也可以实现这个功?

dos2unix filename filename2
反之
unix2dos filename filename2

在vi 中用:$s/^M//g
^是crtl-V crtl-M


22.如何?#8220;unix命o?#8221;下将一个文件的某字W串用另一个串换掉

sed 's/string1/string2/gp' file1 > file2

23.?etc/hosts下所有的地址都ping 2?br>
1 #/usr/bin/sh
2 #grad /etc/hosts and ping each address
3 cat /etc/hosts|grep -v '^#' | while read LINE
4 do
5 ADDR=`awk '{print $1}'`
6 for MACHINE in $ADDR
7 do
8 ping $MACHINE -n 2
9 done
10 done

josson 2007-07-05 10:52 发表评论
]]>
Linux (debian) ssh 安装.http://www.tkk7.com/josson/archive/2007/07/05/128272.htmljossonjossonThu, 05 Jul 2007 02:51:00 GMThttp://www.tkk7.com/josson/archive/2007/07/05/128272.htmlhttp://www.tkk7.com/josson/comments/128272.htmlhttp://www.tkk7.com/josson/archive/2007/07/05/128272.html#Feedback0http://www.tkk7.com/josson/comments/commentRss/128272.htmlhttp://www.tkk7.com/josson/services/trackbacks/128272.html
2、启?停止服务Q?etc/init.d/ssh start|stop|restart


josson 2007-07-05 10:51 发表评论
]]>
Debian 修改IP地址或DNShttp://www.tkk7.com/josson/archive/2007/06/20/125359.htmljossonjossonWed, 20 Jun 2007 08:05:00 GMThttp://www.tkk7.com/josson/archive/2007/06/20/125359.htmlhttp://www.tkk7.com/josson/comments/125359.htmlhttp://www.tkk7.com/josson/archive/2007/06/20/125359.html#Feedback0http://www.tkk7.com/josson/comments/commentRss/125359.htmlhttp://www.tkk7.com/josson/services/trackbacks/125359.html// 动态DHCP获得

# 启动pȝȀz设?br># Loop回环地址
auto lo
iface lo inet loopback

# 启动pȝȀz设?br># |卡eth0讄为DHCPcd
auto eth0
iface eth0 inet dhcp

// 静态Static获得

# 启动pȝȀz设?br># Loop回环地址
auto lo
iface lo inet loopback

# 启动pȝȀz设?br># |卡eth0讄为Staticcd
auto eth0
iface eth0 inet static

# 指定IP地址、子|掩码、广播、网?br>address 192.168.0.1
netmask 255.255.255.0 
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1

# 指定DNS服务器地址
dns-nameservers 202.103.0.117
dns-search somedomain.org

========================


DNS服务器配|文Ӟ /etc/resolv.conf

// 必须讄.否则无法讉KMURL

nameserver 202.103.0.117
nameserver 211.95.193.97



josson 2007-06-20 16:05 发表评论
]]>
վ֩ģ壺 þsmȤ| ޾ƷþþþAPP| ޳AV߹ۿ| ޾Ʒ| ޾ƷƵ| 鶹69Ƶ| Ļ߾ƷƵѹۿ| ۺһ| Ƶ77777| Ļ | ɫ͵͵ݺۺ| ɫַѴȫ| վ| ޾ƷVŷ޾ƷVպƷ| ߿Ƭ| Ʒѿþþ㽶| Ļ| ˳ۺ | ¸߳60Ƶ | þþþùƷ| ޾ƷҳĻ| 222wwwƵ| Ƶ| һƷ| պӰ| Ļ߹ۿձ| ޹Ʒۺһ| Ѹavһ| VAһ| һëƬѲ| ŷۺϾƷ˵| ޾ñĻ| ձ˵ɫվ| ձvaһ| 2017| 97seۺ| ѹۿƵ| Ůһһ鴤Ƶ | ޹Ʒ߹ۿ| ѲƵ| ҹaëƬƵ|