??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品免费久久,国产成人精品久久二区二区,亚洲欧洲精品成人久久奇米网http://www.shnenglu.com/aaxron/category/17909.html记录修行的印? zh-cnSat, 19 Dec 2015 17:37:12 GMTSat, 19 Dec 2015 17:37:12 GMT60linux route命o使用http://www.shnenglu.com/aaxron/archive/2013/03/07/198261.html天下天下Thu, 07 Mar 2013 06:12:00 GMThttp://www.shnenglu.com/aaxron/archive/2013/03/07/198261.htmlhttp://www.shnenglu.com/aaxron/comments/198261.htmlhttp://www.shnenglu.com/aaxron/archive/2013/03/07/198261.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/198261.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/198261.html
linux route命o使用

转自
:http://linux008.blog.51cto.com/2837805/550596

说明Qroute命o是打印和操作ip路由?br />描述Qroute操作Z内核ip路由表,它的主要作用是创Z个静态\p指定一个主机或者一个网l通过一个网l接口,如eth0。当使用
"add"或?/span>"del"参数Ӟ路由表被修改Q如果没有参敎ͼ则显C\p当前的内宏V?br />参数说明Qadd:d一条新路由?br /> del:删除一条\由?br /> -net:目标地址是一个网l?br /> -host:目标地址是一个主机?br /> netmask:当添加一个网l\由时Q需要用网l掩码?br /> gw:路由数据包通过|关。注意,你指定的|关必须能够辑ֈ?br /> metricQ设|\p数?br />实例Q?br /> 1、route add -net 192.168.2.0 netmask 255.255.255.0 dev eth0
 d一条到?92
.168.2.0|络的\由,指定|络掩码?55.255.255.0,数据包通过|络接口eth0?br />
 
2、route add -net 192.57.66.0 netmask 255.255.255.0 gw 192.168.2.1
 d一条到?92
.57.66.0|络的\由,指定|络掩码?55.255.255.0,数据包通过|关地址192.168.2.1?br />
 
3、route add -host 192.57.66.200 gw 192.168.2.1
 所有去往192
.57.66.200L的数据包发往|关地址192.168.2.1?br />
 
4、route add default gw 192.168.1.1
 d一条默认网养I所有的数据包将被{发到192
.168.1.1?br />
路由表内容说明:
查看路由 
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric 
Ref Use Iface
192.57.66.200 192.168.1.1 255.255.255.255 UGH 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
DestinationQ目标网l或L?br />GatewayQ网兛_址?br />GenmaskQ目标网l的|络掩码?/span>"255.255.255.255"表示一个主机?/span>"0.0.0.0"表示|关?br />FlagsQ标记?br />U、\p启用?br />H、目标是一个主?br />G、用网兟?br />


天下 2013-03-07 14:12 发表评论
]]>
shell遍历文g?/title><link>http://www.shnenglu.com/aaxron/archive/2012/08/06/186419.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Mon, 06 Aug 2012 01:54:00 GMT</pubDate><guid>http://www.shnenglu.com/aaxron/archive/2012/08/06/186419.html</guid><wfw:comment>http://www.shnenglu.com/aaxron/comments/186419.html</wfw:comment><comments>http://www.shnenglu.com/aaxron/archive/2012/08/06/186419.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.shnenglu.com/aaxron/comments/commentRss/186419.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/aaxron/services/trackbacks/186419.html</trackback:ping><description><![CDATA[<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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">filelist</span><span style="color: #000000">=</span><span style="color: #000000">`ls -A`<br /></span><span style="color: #0000ff">for</span><span style="color: #000000"> filename in </span><span style="color: #800080">$filelist</span><span style="color: #000000"><br /></span><span style="color: #0000ff">do</span><span style="color: #000000"><br />  your</span><span style="color: #000000">-</span><span style="color: #000000">command </span><span style="color: #800080">$filename</span><span style="color: #000000"> </span><span style="color: #000000">></span><span style="color: #000000"> ${filename}</span><span style="color: #000000">.</span><span style="color: #000000">new<br />done</span></div><img src ="http://www.shnenglu.com/aaxron/aggbug/186419.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/aaxron/" target="_blank">天下</a> 2012-08-06 09:54 <a href="http://www.shnenglu.com/aaxron/archive/2012/08/06/186419.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>理解login shell和non-login shellhttp://www.shnenglu.com/aaxron/archive/2012/07/31/185719.html天下天下Tue, 31 Jul 2012 01:38:00 GMThttp://www.shnenglu.com/aaxron/archive/2012/07/31/185719.htmlhttp://www.shnenglu.com/aaxron/comments/185719.htmlhttp://www.shnenglu.com/aaxron/archive/2012/07/31/185719.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/185719.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/185719.html
用户交互式login的时候,׃初始化profile相关的脚本,q就是所谓的login shell?br />
当在已经存在的shell里面启动另外一个shell的时候,比如使用"bash"或?su"Q启动的q个新shell׃初始化rc相关 的脚本。这个shellq为non-login shell?br />
login shell会执行的脚本?/etc/profile和~/.bash_profile?br />non-login shell会执行的脚本通常?etc/bashrc Q在debian/ubuntu上是/etc/bash.bashrcQ和~/.bashrc?br />
在tty下loginq去Q得到的是一个login shell。之后用bash或者su命o得到的是non-login shell?br />而在debian/ubuntu下的GNOME用terminal启动出来的shell是non-login shell。退non-login shell的话Q只需要exit卛_?br />
login shell d /etc/profile ?~/.bash_profile , q且?先读?profile 后读?.bash_profile, 2个文件必读,
至于 bash.bashrc ?.bashrc 则看 profile ?.bash_profile 是否明确指定诅R?

天下 2012-07-31 09:38 发表评论
]]>
单Makefile的编?/title><link>http://www.shnenglu.com/aaxron/archive/2011/10/12/158144.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Wed, 12 Oct 2011 09:01:00 GMT</pubDate><guid>http://www.shnenglu.com/aaxron/archive/2011/10/12/158144.html</guid><wfw:comment>http://www.shnenglu.com/aaxron/comments/158144.html</wfw:comment><comments>http://www.shnenglu.com/aaxron/archive/2011/10/12/158144.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/aaxron/comments/commentRss/158144.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/aaxron/services/trackbacks/158144.html</trackback:ping><description><![CDATA[<div><div><div><span style="color: red; font-size: 18pt;">指定目标</span></div><br />all<br />q个伪目标是所有目标的目标Q其功能一般是~译所有的目标?br /><br />clean<br />q个伪目标功能是删除所有被make创徏的文件?br /><br />install<br />q个伪目标功能是安装已编译好的程序,其实是把目标执行文件拷贝到指定的目标中厅R?br /><br />print<br />q个伪目标的功能是例出改变过的源文g?br /><br />tar<br />q个伪目标功能是把源E序打包备䆾。也是一个tar文g?br /><br />dist<br />q个伪目标功能是创徏一个压~文Ӟ一般是把tar文g压成Z文g。或是gz文g?br /><br />TAGS<br />q个伪目标功能是更新所有的目标Q以备完整地重编译用?br /><br />check和test<br />q两个伪目标一般用来测试makefile的流E?/div><br /><br /><div><span style="color: red; font-size: 18pt;">自动化变?/span></div><br />$@<br />表示规则中的目标文g集。在模式规则中,如果有多个目标,那么Q?@是匚w于目标中模式定义的集合?br /><br />$^<br />所有的依赖目标的集合。以I格分隔。如果在依赖目标中有多个重复的,那个q个变量会去除重复的依赖目标Q只保留一份?br /><div><br />$?<br />所有比目标新的依赖目标的集合。以I格分隔?/div><br />$+<br />q个变量很像$^Q也是所有依赖目标的集合。只是它不去除重复的依赖目标?br /><br />$%<br />当规划的目标文g是库文gӞ$%表示规则中的目标成员名?br />例如Q如果一个目标是foo.a(bar.o)Q那么,$%是bar.oQ?@是foo.a?br />如果目标不是函数库文ӞUnix下是[.a]QWindows下是[.lib]Q,那么其gؓI?br /><br />$<<br />依赖目标中的W一个目标名字。如果依赖目标是以模式(?Q定义的Q那?<是W合模式的一pd的文仉。注意,其是一个一个取出来的?br /></div><br /><br /><div><span style="color: red; font-size: 18pt;">例子:</span></div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">CCLD    </span><span style="color: #000000; ">=</span><span style="color: #000000; "> g</span><span style="color: #000000; ">++</span><span style="color: #000000; "> </span><span style="color: #000000; ">-</span><span style="color: #000000; ">Wall </span><span style="color: #000000; ">-</span><span style="color: #000000; ">g </span><span style="color: #000000; ">-</span><span style="color: #000000; ">o<br />CC    </span><span style="color: #000000; ">=</span><span style="color: #000000; "> g</span><span style="color: #000000; ">++</span><span style="color: #000000; "> </span><span style="color: #000000; ">-</span><span style="color: #000000; ">Wall </span><span style="color: #000000; ">-</span><span style="color: #000000; ">c <br />OBJS </span><span style="color: #000000; ">=</span><span style="color: #000000; "> SocketServer</span><span style="color: #000000; ">.</span><span style="color: #000000; ">o<br />TARGETS </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #800000; ">0928</span><span style="color: #000000; "><br /><br /></span><span style="color: #000000; ">.</span><span style="color: #000000; ">PHONY</span><span style="color: #000000; ">:</span><span style="color: #000000; ">all<br />all</span><span style="color: #000000; ">:</span><span style="color: #000000; ">$(TARGETS)<br /><br /><br />SocketServer</span><span style="color: #000000; ">.</span><span style="color: #000000; ">o</span><span style="color: #000000; ">:</span><span style="color: #000000; ">SocketServer</span><span style="color: #000000; ">.</span><span style="color: #000000; ">cpp<br />    $(CC) $</span><span style="color: #000000; ">^</span><span style="color: #000000; "><br />    <br /></span><span style="color: #800000; ">0928</span><span style="color: #000000; ">:</span><span style="color: #000000; ">$(OBJS) main</span><span style="color: #000000; ">.</span><span style="color: #000000; ">cpp<br />    $(CCLD) $@ $</span><span style="color: #000000; ">^</span><span style="color: #000000; "><br />    </span><span style="color: #800080; ">@echo</span><span style="color: #000000; "> make success<br />    <br /></span><span style="color: #000000; ">.</span><span style="color: #000000; ">PHONY</span><span style="color: #000000; ">:</span><span style="color: #000000; ">clean<br />clean</span><span style="color: #000000; ">:</span><span style="color: #000000; "><br />    </span><span style="color: #008000; ">#</span><span style="color: #008000; ">rm -rf ${OBJS}</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">    rm </span><span style="color: #000000; ">-</span><span style="color: #000000; ">rf </span><span style="color: #000000; ">*.</span><span style="color: #000000; ">o<br />    rm </span><span style="color: #000000; ">-</span><span style="color: #000000; ">rf $(TARGETS)<br /><br /></span></div><img src ="http://www.shnenglu.com/aaxron/aggbug/158144.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/aaxron/" target="_blank">天下</a> 2011-10-12 17:01 <a href="http://www.shnenglu.com/aaxron/archive/2011/10/12/158144.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>shell脚本中一些特D符?/title><link>http://www.shnenglu.com/aaxron/archive/2011/09/08/155359.html</link><dc:creator>天下</dc:creator><author>天下</author><pubDate>Thu, 08 Sep 2011 08:02:00 GMT</pubDate><guid>http://www.shnenglu.com/aaxron/archive/2011/09/08/155359.html</guid><wfw:comment>http://www.shnenglu.com/aaxron/comments/155359.html</wfw:comment><comments>http://www.shnenglu.com/aaxron/archive/2011/09/08/155359.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/aaxron/comments/commentRss/155359.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/aaxron/services/trackbacks/155359.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">shell脚本中一些特D符?br /><br /></span><span style="color: #800000; ">1</span><span style="color: #000000; ">、{} 大括P<br />用法一Q通配W扩?br /><br />代码</span><span style="color: #000000; ">:</span><span style="color: #000000; "><br />    ls my_{finger</span><span style="color: #000000; ">,</span><span style="color: #000000; ">toe}s<br />q条命o相当于如下命令的l合Q?br />    ls my_fingers my_toes<br />    <br />    </span><span style="color: #0000FF; ">mkdir</span><span style="color: #000000; "> {userA</span><span style="color: #000000; ">,</span><span style="color: #000000; ">userB</span><span style="color: #000000; ">,</span><span style="color: #000000; ">userC}</span><span style="color: #000000; ">-</span><span style="color: #000000; ">{home</span><span style="color: #000000; ">,</span><span style="color: #000000; ">bin</span><span style="color: #000000; ">,</span><span style="color: #000000; ">data}<br /><br />我们得?nbsp;userA</span><span style="color: #000000; ">-</span><span style="color: #000000; ">home</span><span style="color: #000000; ">,</span><span style="color: #000000; "> userA</span><span style="color: #000000; ">-</span><span style="color: #000000; ">bin</span><span style="color: #000000; ">,</span><span style="color: #000000; "> userA</span><span style="color: #000000; ">-</span><span style="color: #000000; ">data</span><span style="color: #000000; ">,</span><span style="color: #000000; "> userB</span><span style="color: #000000; ">-</span><span style="color: #000000; ">home</span><span style="color: #000000; ">,</span><span style="color: #000000; "> userB</span><span style="color: #000000; ">-</span><span style="color: #000000; ">bin</span><span style="color: #000000; ">,</span><span style="color: #000000; ">userB</span><span style="color: #000000; ">-</span><span style="color: #000000; ">data</span><span style="color: #000000; ">,</span><span style="color: #000000; ">userC</span><span style="color: #000000; ">-</span><span style="color: #000000; ">home</span><span style="color: #000000; ">,</span><span style="color: #000000; "> userC</span><span style="color: #000000; ">-</span><span style="color: #000000; ">bin</span><span style="color: #000000; ">,</span><span style="color: #000000; "> userC</span><span style="color: #000000; ">-</span><span style="color: #000000; ">dataQ这几个目录<br />用法二:可用于语句块的构造,语句之间用回车隔开。如果你惛_某些使用单个语句的地方(比如在AND或OR列表中)使用多条语句Q你可以把它们括在花括号{}中来构造一个语句块?br /><br />代码</span><span style="color: #000000; ">:</span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; ">grep</span><span style="color: #000000; "> </span><span style="color: #000000; ">-</span><span style="color: #000000; ">v </span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; font-weight: bold; ">$cdcatnum</span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; "> </span><span style="color: #800080; ">$strack_file</span><span style="color: #000000; "> </span><span style="color: #000000; ">></span><span style="color: #000000; "> </span><span style="color: #800080; ">$temp_file</span><span style="color: #000000; "><br />    cat </span><span style="color: #800080; ">$temp_file</span><span style="color: #000000; "> </span><span style="color: #000000; ">></span><span style="color: #000000; "> </span><span style="color: #800080; ">$strack_file</span><span style="color: #000000; "><br />    echo<br />    cat </span><span style="color: #000000; ">-</span><span style="color: #000000; ">n file1<br /><br /><br />(注:以上大括号中的四句命令够成了一个语句块)<br />用法三:参数扩展<br /><br />代码</span><span style="color: #000000; ">:</span><span style="color: #000000; "><br />    ${name</span><span style="color: #000000; ">:-</span><span style="color: #000000; ">default} 使用一个默认|一般是I|来代曉K些空的或者没有赋值的变量nameQ?br />    ${name</span><span style="color: #000000; ">:=</span><span style="color: #000000; ">default}使用指定值来代替I的或者没有赋值的变量nameQ?br />    ${name</span><span style="color: #000000; ">:?</span><span style="color: #000000; ">message}如果变量为空或者未赋|那么׃昄出错误信息ƈ中止脚本的执行同时返回退出码1?br />    ${</span><span style="color: #008000; ">#</span><span style="color: #008000; ">name} l出name的长?/span><span style="color: #008000; "><br /></span><span style="color: #000000; ">    ${name</span><span style="color: #800080; ">%word</span><span style="color: #000000; ">} 从name的尾部开始删除与word匚w的最部分,然后q回剩余部分<br />    ${name</span><span style="color: #000000; ">%</span><span style="color: #800080; ">%word</span><span style="color: #000000; ">} 从name的尾部开始删除与word匚w的最镉K分,然后q回剩余部分<br />    ${name</span><span style="color: #008000; ">#</span><span style="color: #008000; ">word} 从name的头部开始删除与word匚w的最部分,然后q回剩余部分</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">    ${name</span><span style="color: #008000; ">#</span><span style="color: #008000; ">#word} 从name的头部开始删除与word匚w的最镉K分,然后q回剩余部分</span><span style="color: #008000; "><br /></span><span style="color: #000000; "><br /><br />Q注Qname为变量名Qword匚w的字W串Q?br />用法三在处理字符串和未知变量Ӟ是很有用的?br /><br /></span><span style="color: #800000; ">2</span><span style="color: #000000; ">、[] 中括P<br />用法一Q通配W扩展:<br />允许匚wҎ号中M一个单个字W?br /><br />代码</span><span style="color: #000000; ">:</span><span style="color: #000000; "><br />    ls </span><span style="color: #000000; ">/</span><span style="color: #000000; ">[eh][to][cm]</span><span style="color: #000000; ">*</span><span style="color: #000000; "><br /><br /><br />相当于执?nbsp;ls </span><span style="color: #000000; ">/</span><span style="color: #000000; ">etc </span><span style="color: #000000; ">/</span><span style="color: #000000; ">homeQ若?/span><span style="color: #000000; ">/</span><span style="color: #000000; ">eom目录Q就相当于会执行ls </span><span style="color: #000000; ">/</span><span style="color: #000000; ">etc </span><span style="color: #000000; ">/</span><span style="color: #000000; ">home </span><span style="color: #000000; ">/</span><span style="color: #000000; ">eomQ?br />注:在mkdir命o下不能扩?br />用法二:用于条g判断W号Q?br />[]W号可理解ؓ指向test命o的一个Y链接Q所以其用法可完全参照testQ将test位置替换为[便可?br /><br />代码</span><span style="color: #000000; ">:</span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> [ </span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; font-weight: bold; ">$?</span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; "> </span><span style="color: #000000; ">!=</span><span style="color: #000000; "> </span><span style="color: #800000; ">0</span><span style="color: #000000; "> ] {h?nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> test </span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; font-weight: bold; ">$?</span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; "> </span><span style="color: #000000; ">!=</span><span style="color: #000000; "> </span><span style="color: #800000; ">0</span><span style="color: #000000; "><br />    then echo </span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; font-weight: bold; ">Executes error</span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; "><br /><br /><br /><br /></span><span style="color: #800000; ">3</span><span style="color: #000000; ">、`command` 反引P<br />`command`?(command)的含义相同,都是q回当前执行命o的结?br /><br />代码</span><span style="color: #000000; ">:</span><span style="color: #000000; "><br /></span><span style="color: #008000; ">#</span><span style="color: #008000; ">!/bin/sh</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> file in $(ls f</span><span style="color: #000000; ">*.</span><span style="color: #000000; ">sh);</span><span style="color: #0000FF; ">do</span><span style="color: #000000; "><br />    lpr </span><span style="color: #800080; ">$file</span><span style="color: #000000; "><br />done<br /></span><span style="color: #0000FF; ">exit</span><span style="color: #000000; "> </span><span style="color: #800000; ">0</span><span style="color: #000000; "><br /><br /><br />该例实现了扩展f</span><span style="color: #000000; ">*.</span><span style="color: #000000; ">shl出所有匹配模式的文g的名字?br /><br /></span><span style="color: #800000; ">4</span><span style="color: #000000; ">?/span><span style="color: #000000; font-weight: bold; ">'</span><span style="color: #000000; font-weight: bold; ">string</span><span style="color: #000000; font-weight: bold; ">'</span><span style="color: #000000; "> 单引?nbsp;?nbsp;</span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; font-weight: bold; ">string</span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; "> 双引?br />双引P如果惛_定义的变量中加入I格Q就必须使用单引h双引P<br />单、双引号的区别在于双引号转义Ҏ字符而单引号不{义特D字W?br /><br />代码</span><span style="color: #000000; ">:</span><span style="color: #000000; "><br />    $ heyyou</span><span style="color: #000000; ">=</span><span style="color: #000000; ">home<br />    $ echo </span><span style="color: #000000; font-weight: bold; ">'</span><span style="color: #000000; font-weight: bold; ">$heyyou</span><span style="color: #000000; font-weight: bold; ">'</span><span style="color: #000000; "><br />    $ </span><span style="color: #800080; ">$heyyou</span><span style="color: #000000; "> Q?/span><span style="color: #800080; ">$没有转义</span><span style="color: #000000; ">Q?br />    eg</span><span style="color: #000000; ">:</span><span style="color: #000000; "> $ heyyou</span><span style="color: #000000; ">=</span><span style="color: #000000; ">home<br />    $ echo </span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; font-weight: bold; ">$heyyou</span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; "><br />    $ home Q很明显Q?/span><span style="color: #800080; ">$转义了输Zheyyou变量的?/span><span style="color: #000000; ">Q?br /><br /><br /><br /></span><span style="color: #800000; ">5</span><span style="color: #000000; ">?</span><span style="color: #008000; ">#</span><span style="color: #008000; "> 它的作用是告诉你引用变量的L量是多少Q?/span><span style="color: #008000; "><br /></span><span style="color: #000000; "><br />代码</span><span style="color: #000000; ">:</span><span style="color: #000000; "><br />    $$ 它的作用是告诉你shell脚本的进E号Q?br />    $</span><span style="color: #000000; ">*</span><span style="color: #000000; "> 以一个单字符串显C所有的脚本传递的参数。等价于$</span><span style="color: #800000; ">1</span><span style="color: #000000; "> $</span><span style="color: #800000; ">2</span><span style="color: #000000; "> $</span><span style="color: #800000; ">3</span><span style="color: #000000; "><img src="http://www.shnenglu.com/Images/dot.gif" alt="" /><img src="http://www.shnenglu.com/Images/dot.gif" alt="" />.</span><span style="color: #000000; ">Q?br />    $@ ?</span><span style="color: #000000; ">*</span><span style="color: #000000; ">基本cMQ参见序?Q,但在数组赋值时有些不同Q?br />    $</span><span style="color: #000000; ">?</span><span style="color: #000000; "> 前一个命令的退出码Q?br />    $</span><span style="color: #000000; ">-</span><span style="color: #000000; "> 昄shell使用的当前选项Q?br />    $</span><span style="color: #000000; ">!</span><span style="color: #000000; "> 最后一个后台运行的q程ID受?br /><br /><br /><br /></span><span style="color: #800000; ">6</span><span style="color: #000000; ">?((</span><span style="color: #000000; "><img src="http://www.shnenglu.com/Images/dot.gif" alt="" /></span><span style="color: #000000; ">))语法Q对括号内的表达式求?br /><br />代码</span><span style="color: #000000; ">:</span><span style="color: #000000; "><br />    </span><span style="color: #008000; ">#</span><span style="color: #008000; ">!/bin/sh</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">    x</span><span style="color: #000000; ">=</span><span style="color: #800000; ">0</span><span style="color: #000000; "><br />    hile [ </span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; font-weight: bold; ">$x</span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; "> </span><span style="color: #000000; ">-</span><span style="color: #000000; ">ne </span><span style="color: #800000; ">10</span><span style="color: #000000; "> ];</span><span style="color: #0000FF; ">do</span><span style="color: #000000; "><br />    echo </span><span style="color: #800080; ">$x</span><span style="color: #000000; "><br />    x</span><span style="color: #000000; ">=</span><span style="color: #000000; ">$((</span><span style="color: #800080; ">$x</span><span style="color: #000000; ">+</span><span style="color: #800000; ">1</span><span style="color: #000000; ">))<br />    done<br />    </span><span style="color: #0000FF; ">exit</span><span style="color: #000000; "> </span><span style="color: #800000; ">0</span><span style="color: #000000; "><br /><br /><br /><br /></span><span style="color: #800000; ">7</span><span style="color: #000000; ">、shell中几U特D的参数变量的引?br /><br />代码</span><span style="color: #000000; ">:</span><span style="color: #000000; "><br />    $</span><span style="color: #800000; ">1</span><span style="color: #000000; ">?</span><span style="color: #800000; ">2</span><span style="color: #000000; ">?</span><span style="color: #800000; ">3</span><span style="color: #000000; ">……${</span><span style="color: #800000; ">10</span><span style="color: #000000; ">}?{</span><span style="color: #800000; ">11</span><span style="color: #000000; ">}?{</span><span style="color: #800000; ">12</span><span style="color: #000000; ">}…… Q表C本传入的的各个参敎ͼ注意当需表示两位C后的参数时数字要用花括号括v?br />    $@ 列出所有的参数Q各参数用空格隔开<br />    $</span><span style="color: #000000; ">*:</span><span style="color: #000000; "> 列出所有的参数Q各参数用环境变量IFS的第一个字W隔开<br /><br /><br /><br /></span><span style="color: #800000; ">8</span><span style="color: #000000; ">、命令列表:<br />AND列表 statement1 </span><span style="color: #000000; ">&&</span><span style="color: #000000; "> statement2 </span><span style="color: #000000; ">&&</span><span style="color: #000000; "> statement3 </span><span style="color: #000000; ">&&</span><span style="color: #000000; "> …</span><span style="color: #000000; ">:</span><span style="color: #000000; ">只有在前面所有的命o都执行成功的情况下才执行后一条命?br />OR列表 statement1 </span><span style="color: #000000; ">||</span><span style="color: #000000; "> statement2 </span><span style="color: #000000; ">||</span><span style="color: #000000; "> statement3 </span><span style="color: #000000; ">||</span><span style="color: #000000; "> …</span><span style="color: #000000; ">:</span><span style="color: #000000; ">允许执行一pd命o直到有一条命令成功ؓ止,其后所有命令将不再被执?br /></span><span style="color: #008000; ">#</span><span style="color: #008000; ">!/bin/sh</span><span style="color: #008000; "><br /></span><span style="color: #000000; "><br />代码</span><span style="color: #000000; ">:</span><span style="color: #000000; "><br />    touch file_one<br />    rm </span><span style="color: #000000; ">-</span><span style="color: #000000; ">f file_two<br />    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> [ </span><span style="color: #000000; ">-</span><span style="color: #000000; ">f file_one ] </span><span style="color: #000000; ">&&</span><span style="color: #000000; "> echo </span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; font-weight: bold; ">hello</span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; "> </span><span style="color: #000000; ">&&</span><span style="color: #000000; "> [ </span><span style="color: #000000; ">-</span><span style="color: #000000; ">f file_two ] </span><span style="color: #000000; ">&&</span><span style="color: #000000; "> echo </span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; font-weight: bold; "> there</span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; "><br />    then<br />    echo </span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; font-weight: bold; ">in if</span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; ">else</span><span style="color: #000000; "><br />    echo </span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; font-weight: bold; ">in else</span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; "><br />    fi<br />    </span><span style="color: #0000FF; ">exit</span><span style="color: #000000; "> </span><span style="color: #800000; ">0</span><span style="color: #000000; "><br /><br /><br />上例的输ZؓQ?br /><br />代码</span><span style="color: #000000; ">:</span><span style="color: #000000; "><br />    hello<br />    in </span><span style="color: #0000FF; ">else</span><span style="color: #000000; "><br /><br /><br />关于AND列表与OR列表Q在逻辑判断中很使用Q下面就举一个其最常用的例子:<br /><br />代码</span><span style="color: #000000; ">:</span><span style="color: #000000; "><br />    [ condition ] </span><span style="color: #000000; ">&&</span><span style="color: #000000; "> command </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> true </span><span style="color: #000000; ">||</span><span style="color: #000000; "> command </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> false</span><span style="color: #000000; ">:</span><span style="color: #000000; "><br /><br /><br />当条件ؓ真时Q执行commandfor true </span><span style="color: #000000; ">,</span><span style="color: #000000; ">当条件ؓ假时Q执行command </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> false<br /><br /></span><span style="color: #800000; ">9</span><span style="color: #000000; ">?/span><span style="color: #000000; ">:</span><span style="color: #000000; "> 冒号Q内建空指oQ返回gؓ0<br /><br />代码</span><span style="color: #000000; ">:</span><span style="color: #000000; "><br />$ </span><span style="color: #000000; ">:</span><span style="color: #000000; "><br />$ echo $</span><span style="color: #000000; ">?</span><span style="color: #000000; "><br />$ </span><span style="color: #800000; ">0</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">:</span><span style="color: #000000; "> (该语句结构可实现一个无限@?<br /><br /><br /><br /></span><span style="color: #800000; ">10</span><span style="color: #000000; ">? 分号</span><span style="color: #000000; ">:</span><span style="color: #000000; "> ?nbsp;shell 中,担Q</span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; font-weight: bold; ">q箋指o</span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; ">功能的符号就?/span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; font-weight: bold; ">分号</span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; "><br /><br />代码</span><span style="color: #000000; ">:</span><span style="color: #000000; "><br />    cd </span><span style="color: #000000; ">~/</span><span style="color: #000000; ">backup ; </span><span style="color: #0000FF; ">mkdir</span><span style="color: #000000; "> startup ; cp </span><span style="color: #000000; ">~/.*</span><span style="color: #000000; "> startup</span><span style="color: #000000; ">/.</span><span style="color: #000000; "><br /><br /></span><span style="color: #800000; ">11</span><span style="color: #000000; ">?/span><span style="color: #008000; ">#</span><span style="color: #008000; "> 井号Q表C符号后面的是注解文字,不会被执行;</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">代码</span><span style="color: #000000; ">:</span><span style="color: #000000; "><br />    </span><span style="color: #000000; ">*</span><span style="color: #000000; "> 匚w文g名中的Q何字W,包括字符Ԍ<br />    </span><span style="color: #000000; ">?</span><span style="color: #000000; "> 匚w文g名中的Q何单个字W?br />    </span><span style="color: #000000; ">~</span><span style="color: #000000; "> 代表使用者的 home 目录<br /><br /></span><span style="color: #800000; ">12</span><span style="color: #000000; ">?/span><span style="color: #000000; ">\</span><span style="color: #000000; "> 反斜U:<br />攑֜指o前,有取?nbsp;aliasesQ别名) 的作用;<br />攑֜ҎW号前,则该ҎW号的作用消失;<br />攑֜指o的最末端Q表C指令连接下一行(使得回RW无效,只v换行作用Q?br /><br /></span><span style="color: #800000; ">13</span><span style="color: #000000; ">?/span><span style="color: #000000; ">!</span><span style="color: #000000; "> 感叹P<br />通常它代表反逻辑的作用,譬如条g侦测中,?nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; "> 来代?/span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; font-weight: bold; ">不等?/span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; "><br /><br /></span><span style="color: #800000; ">14</span><span style="color: #000000; ">?/span><span style="color: #000000; ">**</span><span style="color: #000000; "> ơ方q算Q两个星号在q算时代?nbsp;</span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; font-weight: bold; ">ơ方</span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; "> 的意?br />代码</span><span style="color: #000000; ">:</span><span style="color: #000000; "><br />    let </span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; font-weight: bold; ">sus=2**3</span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; "><br />    echo </span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; font-weight: bold; ">sus = $sus</span><span style="color: #000000; font-weight: bold; ">"</span><span style="color: #000000; "><br />    $ sus </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #800000; ">8</span><span style="color: #000000; "> </span><span style="color: #000000; ">-</span></div><img src ="http://www.shnenglu.com/aaxron/aggbug/155359.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/aaxron/" target="_blank">天下</a> 2011-09-08 16:02 <a href="http://www.shnenglu.com/aaxron/archive/2011/09/08/155359.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>shell~程W记http://www.shnenglu.com/aaxron/archive/2011/09/08/155357.html天下天下Thu, 08 Sep 2011 07:54:00 GMThttp://www.shnenglu.com/aaxron/archive/2011/09/08/155357.htmlhttp://www.shnenglu.com/aaxron/comments/155357.htmlhttp://www.shnenglu.com/aaxron/archive/2011/09/08/155357.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/155357.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/155357.html脚本不是复杂的程?/span>,它是按行解释?/span>,脚本的第一行L?/span>#!/bin/sh开?
q行代码通知书shell使用pȝ上的Bourne shell解析?

shell语法
test 命o
1.条g试
test命o用于试字符?/span>,文g状态和数字.

工作原理
test 命o最短的定义可能是评C个表辑ּQ如果条件ؓ真,则返回一?nbsp;
0 倹{如果表辑ּ不ؓ真,q回?

test一般有两种格式
:

test 条g表达?br />?br />[ 条g表达?nbsp;]

使用Ҏh
,要注意在条g两边加上I格.

文gq算W?br />利用q些q算W,您可以在E序中根据对文gcd的评估结果执行不同的操作Q?br />
-b file 如果文gZ个块Ҏ文gQ则为真
-c file 如果文gZ个字W特D文Ӟ则ؓ?br />-d file 如果文gZ个目录,则ؓ?br />-e file 如果文g存在Q则为真
-f file 如果文gZ个普通文Ӟ则ؓ?br />-g file 如果讄了文件的 SGID 位,则ؓ?br />-G file 如果文g存在且归该组所有,则ؓ?br />-k file 如果讄了文件的_着位,则ؓ?br />-O file 如果文g存在q且归该用户所有,则ؓ?br />-p file 如果文gZ个命名管道,则ؓ?br />-r file 如果文g可读Q则为真
-s file 如果文g的长度不为零Q则为真
-S file 如果文gZ个套接字Ҏ文gQ则为真
-t fd    如果 fd 是一个与l端相连的打开的文件描q符Qfd 默认?nbsp;1Q,则ؓ?br />-u file 如果讄了文件的 SUID 位,则ؓ?br />-w file 如果文g可写Q则为真
-x file 如果文g可执行,则ؓ?br />
字符串比较运符
如标题所C,q组函数比较字符串的倹{您可以查它们是否存在、是否相同或者是否不同?br />string 试以判断字W串是否不ؓI?br />
-n string 试以判断字W串是否不ؓI;
-z string 试以判断字W串是否为空Q?br />string1 = string2 试以判?nbsp;string1 是否?nbsp;string2 相同
string1 
!= string2 试以判?nbsp;string1 是否?nbsp;string2 不同

整数比较q算W?br />正如字符串比较运符验证字符串相{或不同一P整数比较q算W对数字执行相同的功能?br />如果变量的值匹配则表达式测试ؓ真,如果不匹配,则ؓ假。整数比较运符不处理字W串Q正如字W串q算W不处理数字一PQ?br />
-eq    {于
-ge    大于或等?br />-gt    大于
-le    于或等?br />-lt    于
-ne    不等?br />?/span>:
# [ 2 -gt 3 ]
# echo $?

1

# [ 2 -lt 3 ]
# echo $?

0

布尔q算W?br />布尔q算W在几乎每种语言中的工作方式都相?nbsp;— 包括 shell 脚本。在 nutshell 中,它们查多个条件ؓ真或为假Q或者针对假的条件而不是真的条仉取操作。与 test 搭配使用的运符?/span>:
!    条g?br />-a    条g?br />-o    条g?br />


控制l构
无论什么编E语a都离不开条g判断。SHELL也不例外?br />条g分支

if语句

语法1
:
if 条g表达?br />    then    命o
fi

语法2
:
if 条g表达? then
    
do something here
elif 条g表达?nbsp;then
    
do another thing here
else
    
do something else here
fi

使用if?/span>,必须then部分攑֜新行,否则会报?/span>.
如果要不分行
,必须使用命o分隔W?/span>.
$ vi testsh.sh
#!/bin/sh
if
cat 111-tmp.txt | grep ting1
then
echo found
else
echo "no found"
fi

$ vi testsh.sh
#!/bin/sh
cat 111-tmp.txt | grep ting1
if [ $? -eq 0 ]
then
echo $?
echo found
else
echo $?
echo "no found"
fi

#!/bin/sh

#函数
gw()
{
echo "do function gw()"
return 0
}

if gw
then
        echo "run succeed"
        echo "run succeed"
else
        echo "run failed"
        echo "run failed"
fi

说明Q?br />if 命o/函数 0为真Q走then
if 多条指o,q些命o之间相当?#8220;and”Q与Q?br />



case语句
case命o可类比C语言的switch
/case语句Qesac表示case语句块的l束?br />每个匚w分支可以有若q条命oQ末ֿM;;l束Q执行时扑ֈW一个匹配的分支q执行相应的命oQ然后直接蟩到esac之后Q不需要像C语言一Lbreak跛_?br />?/span>:
#! /bin/sh
echo "Is it morning? Please answer yes or no."
read YES_OR_NO
case 
"$YES_OR_NO" in
yes
|y|Yes|YES)
  echo 
"Good Morning!";;
[nN]
*)
  echo 
"Good Afternoon!";;
*)
  echo 
"Sorry, $YES_OR_NO not recognized. Enter yes or no."
  
exit 1;;
esac
exit 0


for语句
for 变量?nbsp;in 列表
do
    命o1
    命o2
done

Shell脚本的for循环l构和C语言很不一P它类似php~程语言的foreach循环。例如:
#!/bin/sh
for FRUIT in apple banana pear; do
  echo 
"I like $FRUIT"
done

while/do/done
while的用法和C语言cM。比如一个验证密码的脚本Q?br />
#!/bin/sh
echo "Enter password:"
read TRY
while [ "$TRY" != "secret" ]; do
  echo 
"Sorry, try again"
  
read TRY
done


位置参数和特D变?br />$
0    相当于C语言main函数的argv[0]
$
1?2    q些UCؓ位置参数QPositional ParameterQ,相当于C语言main函数的argv[1]、argv[2]
$
#    参数个数,不包括程序自w?相当于C语言main函数的argc-1
$@    表示参数列表"$1" "$2" Q例如可以用在for循环中的in后面?br />$?    上一条命令的Exit Status
$$    当前Shell的进E号

位置参数可以用shift命o左移?br />比如shift 3表示原来?4现在变成$
1Q原来的$5现在变成$2{等Q原来的$1?2?3丢弃Q?0不移动。不带参数的shift命o相当于shift 1?br />

函数

和C语言cMQShell中也有函数的概念Q但是函数定义中没有q回g没有参数列表。例如:

#!/bin/sh

foo(){ echo 
"Function foo is called";}
echo 
"-=start=-"
foo
echo 
"-=end=-"

注意函数体的左花括号{和后面的命o之间必须有空格或换行Q如果将最后一条命令和双括号}写在同一行,命o末尾必须?受?br />
在定义foo()函数时ƈ不执行函C中的命oQ就像定义变量一P只是lfooq个名字一个定义,到后面调用foo函数的时候(注意Shell中的函数调用不写括号Q才执行函数体中的命令。Shell脚本中的函数必须先定义后调用Q一般把函数定义都写在脚本的前面Q把函数调用和其它命令写在脚本的最后(cMC语言中的main函数Q这才是整个脚本实际开始执行命令的地方Q?br />
Shell函数没有参数列表q不表示不能传参敎ͼ事实上,函数像是迷你脚本,调用函数时可以传L个参敎ͼ在函数内同样是用$
0?1?2{变量来提取参数Q函C的位|参数相当于函数的局部变量,改变q些变量q不会媄响函数外面的$0?1?2{变量。函C可以用return命oq回Q如果return后面跟一个数字则表示函数的Exit Status?br />
until语句
  until循环执行一pd命o直至条g为真时停止。注?/span>,q里是直到条件是真时才停?br />until格式为:
until 条g
  命o1
  

done


i
=0
until [ $i -gt 3 ]
do
    i
=`expr "$i" + 1`
    
#i=$(($i + 1))
    echo $i
done


天下 2011-09-08 15:54 发表评论
]]>
þþþù| þۺϸϾþúݺݺ97ɫ| þۺŷ| պƷþþþþþõӰ| ޹Ʒþþ| ˾þƵ| 69ƷþþþAPP| þ99Ʒ99þ| ɫ99þþþø߳ۺӰԺ| þˬˬ| ɫۺϾþ88ɫۺ| þþŷղ| þþƷĻ | þþƷav鶹ɫ| þۺ| þۺϳDž| ŷպƷþþþ| þҹ³˿Ƭ| þֻǾƷ23| ҹƷþþþþӰriav| ŷ˾þþƷ| þۺۺϾþ97ɫ| Ʒþþ| þþþþþŮú| ƷþþþþĻ| þþƷ| ھƷþþþþòӰԺ| þùŷպƷ| þԭavapp| ձƷһþþ| 99þþƷþþþþ崿| þþƷ޾Ʒɫ| Ժձһձþ| ŷ츾BBBþþ| ھƷþþþþþþõӰ| vaþþþͬ | ޹Ʒľþþ | þav߳avav紵| һĻþ| 99þþƷۺһ| 97þþþ|