﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-城市猎人-文章分类-linux</title><link>http://www.blogjava.net/sailor/category/34633.html</link><description>在一网情深的日子里，谁能说得清是苦是甜，只知道确定了就义无反顾</description><language>zh-cn</language><lastBuildDate>Sun, 19 Oct 2008 13:07:24 GMT</lastBuildDate><pubDate>Sun, 19 Oct 2008 13:07:24 GMT</pubDate><ttl>60</ttl><item><title>shell编程基础（三）</title><link>http://www.blogjava.net/sailor/articles/235311.html</link><dc:creator>sailor</dc:creator><author>sailor</author><pubDate>Sun, 19 Oct 2008 08:39:00 GMT</pubDate><guid>http://www.blogjava.net/sailor/articles/235311.html</guid><wfw:comment>http://www.blogjava.net/sailor/comments/235311.html</wfw:comment><comments>http://www.blogjava.net/sailor/articles/235311.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sailor/comments/commentRss/235311.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sailor/services/trackbacks/235311.html</trackback:ping><description><![CDATA[三、shell程序基础<br />
&nbsp;&nbsp;&nbsp;&nbsp;shell程序就是一个包含若干行shell或linux命令的文件。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;执行shell程序文件有3种方法：<br />
&nbsp;&nbsp;&nbsp;&nbsp;#chmod +x file<br />
&nbsp;&nbsp;&nbsp;&nbsp;#sh file<br />
&nbsp;&nbsp;&nbsp;&nbsp;#.file<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;在编写shell时，第一行一定要指明系统需要哪种shell解释自己shell程序<br />
&nbsp;&nbsp;&nbsp;&nbsp;#!/bin/bash、#!/bin/csh、#!/bin/tcsh<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;1、变量表达式<br />
<br />
&nbsp;&nbsp;&nbsp;格式：test conditions&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;字符串操作符<br />
&nbsp;&nbsp;&nbsp;&nbsp;str1 == str2<br />
&nbsp;&nbsp;&nbsp;&nbsp;str1 != str2<br />
&nbsp;&nbsp;&nbsp;&nbsp;-n str<br />
&nbsp;&nbsp;&nbsp; -z str<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;整数操作符<br />
&nbsp;&nbsp;&nbsp;&nbsp;int1 -eq int2<br />
&nbsp;&nbsp;&nbsp;&nbsp;int1 -ge int2<br />
&nbsp;&nbsp;&nbsp;&nbsp;int1 -le&nbsp; int2<br />
&nbsp;&nbsp;&nbsp;&nbsp;int1 -gt&nbsp;int2<br />
&nbsp;&nbsp;&nbsp;&nbsp;int1 -lt int2<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;文件操作符<br />
&nbsp;&nbsp;&nbsp;&nbsp;-d file<br />
&nbsp;&nbsp;&nbsp;&nbsp;-f file<br />
&nbsp;&nbsp;&nbsp;&nbsp;-r file<br />
&nbsp;&nbsp;&nbsp;&nbsp;-s file<br />
&nbsp;&nbsp;&nbsp;&nbsp;-w file<br />
&nbsp;&nbsp;&nbsp;&nbsp;-x fiel<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;逻辑操作符<br />
&nbsp;&nbsp;&nbsp;&nbsp;!expr<br />
&nbsp;&nbsp;&nbsp;&nbsp;expr1 -a expr2<br />
&nbsp;&nbsp;&nbsp;&nbsp;expr1&nbsp;-o expr2<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;2、shell中的符号<br />
&nbsp;&nbsp;&nbsp;&nbsp;1)单引号：单引号的字符作为普通字符出现<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;2)双引号：由双引号括起来的字符，除$, \\，', "外，其余字符为普通字符。<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;3)反引号：<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"><span style="color: #008080">1</span><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">$today</span><span style="color: #000000">=</span><span style="color: #000000">`date`<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />$echo&nbsp;Today&nbsp;</span><span style="color: #0000ff">is</span><span style="color: #000000">&nbsp;$today<br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
</span><span style="color: #008080">4</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Today&nbsp;</span><span style="color: #0000ff">is</span><span style="color: #000000">&nbsp;Mon&nbsp;Apr&nbsp;</span><span style="color: #000000">15</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">16</span><span style="color: #000000">:</span><span style="color: #000000">20</span><span style="color: #000000">:</span><span style="color: #000000">13</span><span style="color: #000000">&nbsp;CST&nbsp;</span><span style="color: #000000">2008</span><span style="color: #000000"><br />
</span><span style="color: #008080">5</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />$</span></div>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;4)注释符：#<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;5)通配符：通配符用于模式匹配，如文件名匹配，路径名匹配，字符串查找等。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<p>&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">匹配文件名中任何字符串，包括空格串<br />
&nbsp;&nbsp;</span>?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">匹配文件名中的任何单个字符</span></p>
<p>&nbsp;&nbsp;&nbsp; [...]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">匹配&#8220;［］&#8221;中所包括的任何字符</span></p>
<p>&nbsp;&nbsp;&nbsp; [!...]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">匹配&#8220;［］&#8221;中非感叹号&#8220;！&#8221;之后的字符</span></p>
<p><span style="font-family: 宋体">&nbsp; 如［！</span>0<span style="font-family: 宋体">－</span>9<span style="font-family: 宋体">］表示非数字开头的字符串<br />
</span></p>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;3、bash介绍<br />
&nbsp;&nbsp;&nbsp;&nbsp;shell是一个命令语言解释器。shell是用户和linux内核之间的接口程序。在提示符下输入的每个命令都由shell先解释然后传给linux内核。<br />
&nbsp;&nbsp;&nbsp;&nbsp;shell在用户成功地登陆进入系统后启动，并始终作为用户与系统内核的交互手段直至退出系统。系统上的每位用户都有一个默认的shell。每个用户的shell由系统中的password文件指定。该文件的路径是/etc/password<br />
&nbsp;&nbsp;&nbsp;&nbsp;
<p>&nbsp;&nbsp;&nbsp;&nbsp;1)、bash命令概要<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alias:&nbsp;设置alias别名<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bg:&nbsp;是一个被挂起的进程在后台继续进行<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cd:&nbsp;改变当前目录<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;export：使变量的值对当前shell的所有子进程都可见&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fc:&nbsp;用来编辑历史命令列表里的命令<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fg:&nbsp;使一个被挂机的进程在前台继续进行<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;help:&nbsp;显示bash内部命令的帮助信息<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kill:&nbsp;终止某个进程<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pwd:&nbsp;显示当前工作目录<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unalias:删除已定义的别名</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;2)、bash变量<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EDITOR、FCEDIT:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bash fc命令的默认编辑器<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HISTORY：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 用于存储历史命令文件<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HISTSIZE：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 历史命令列表的大小<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HOME：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当前用户的用户目录<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OLDPWD：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 前一个工作目录<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PATH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bash寻找可执行文件的搜索路径<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PS1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 命令行的一级提示符<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PS2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 命令行的二级提示符<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PWD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当前目录<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SECONDS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当前shell开始后所流逝的秒数</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;3)、输入重定向<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;输入重定向用于改变一个命令的输入源。一些命令需要在命令行里输入足够的信息才能工作。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;4)、输出重定向<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;输出冲定向使用户能把一个命令的输出重定向到一个文件里，而不是屏幕上。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;5)、管道<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;管道可以把一系列命令连接起来。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;6)、提示符<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bash有两级用户提示符。第一级是经常看到的bash在等待命令输入时的提示符。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;7)、把bash shell的提示符改为指定的字符串。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当bash期待输入更多的信息以完成命令时，显示第二级提示符。默认的第二级提示符是&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;8)、用户化配置bash<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;为了保存这些用户化配置，必须把他们保存到一个bash的初始化文件里。用户能把任何想每次进入bash都执行的命令放到初始化文件建立。bash的初始化文件叫做profile。每个使用bash的用户都有一个.profile文件在他的用户目录。bash在每次启动时都读取该文件，并执行所有包含的命令。</p>
<p><br />
&nbsp;</p>
<br />
<img src ="http://www.blogjava.net/sailor/aggbug/235311.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sailor/" target="_blank">sailor</a> 2008-10-19 16:39 <a href="http://www.blogjava.net/sailor/articles/235311.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Shell编程基础（二）</title><link>http://www.blogjava.net/sailor/articles/235216.html</link><dc:creator>sailor</dc:creator><author>sailor</author><pubDate>Sat, 18 Oct 2008 13:40:00 GMT</pubDate><guid>http://www.blogjava.net/sailor/articles/235216.html</guid><wfw:comment>http://www.blogjava.net/sailor/comments/235216.html</wfw:comment><comments>http://www.blogjava.net/sailor/articles/235216.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sailor/comments/commentRss/235216.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sailor/services/trackbacks/235216.html</trackback:ping><description><![CDATA[二、Shell基本语法<br />
&nbsp;&nbsp;&nbsp;&nbsp;shell程序采用$var的形式来引用名为var的变量的值。<br />
&nbsp;&nbsp;&nbsp;&nbsp;Shell有以下几种基本类型的变量：<br />
&nbsp;&nbsp;&nbsp;&nbsp;shell定义的环境变量；<br />
&nbsp;&nbsp;&nbsp;&nbsp;用户自定义变量；<br />
&nbsp;&nbsp;&nbsp;&nbsp;位置参数；<br />
&nbsp;&nbsp;&nbsp;&nbsp;预定义变量；<br />
&nbsp;&nbsp;&nbsp;&nbsp;参数置换变量；<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;1、shell定义的环境变量<br />
&nbsp;&nbsp;&nbsp;&nbsp;shell在开始执行时就已经定义了一些和系统工作环境相关的变量，用户还可以重新定义这些变量。<br />
&nbsp;&nbsp;&nbsp;&nbsp;HOME&nbsp;&nbsp;&nbsp; 用于保存注册目录的完全路径名；<br />
&nbsp;&nbsp;&nbsp;&nbsp;PATH&nbsp;&nbsp;&nbsp;&nbsp; 用于保存用冒号分割的目录路径名；<br />
&nbsp;&nbsp;&nbsp;&nbsp;TERM&nbsp;&nbsp;&nbsp;&nbsp;终端类型；<br />
&nbsp;&nbsp;&nbsp;&nbsp;UID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当前用户的识别字，它取的是由数位构成的字符串；<br />
&nbsp;&nbsp;&nbsp;&nbsp;PWD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当前绝对路径<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;2、用户自定义变量<br />
&nbsp;&nbsp;&nbsp;&nbsp;语法：变量名=变量值<br />
&nbsp;&nbsp;&nbsp;&nbsp;在定义变量时，变量名前不需要加$，在引用变量时则在变量名前加$;<br />
&nbsp;&nbsp;&nbsp;&nbsp;在给变量赋值时，等号两边一定不能留有空格，若变量本身包含有空格，则整个字符串加&#8220;&#8221;；<br />
&nbsp;&nbsp;&nbsp;&nbsp;变量名用大写字母表示，变量名由字母和下划线组策划那个，变量名第一个字符不能是数字。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;$SUN=sun<br />
&nbsp;&nbsp;&nbsp;&nbsp;$echo ${SUN}day<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;在应用shell变量时，可以在变量名字两边$后面加上{}，以便更清楚地显示给shell。<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;${variable:-value}<br />
&nbsp;&nbsp;&nbsp;&nbsp;variable是一个变量值，value是变量替换使用的默认值。<br />
<br />
&nbsp;&nbsp;&nbsp;<strong>&nbsp;第一种赋值：默认赋值</strong><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"><span style="color: #008080">1</span><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">$echo&nbsp;Hello&nbsp;$UNAME<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;结果显示：Hello<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"><span style="color: #008080">1</span><img id="Codehighlighter1_13_28_Open_Image" onclick="this.style.display='none'; Codehighlighter1_13_28_Open_Text.style.display='none'; Codehighlighter1_13_28_Closed_Image.style.display='inline'; Codehighlighter1_13_28_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_13_28_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_13_28_Closed_Text.style.display='none'; Codehighlighter1_13_28_Open_Image.style.display='inline'; Codehighlighter1_13_28_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: #000000">$echo&nbsp;Hello&nbsp;$</span><span id="Codehighlighter1_13_28_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_13_28_Open_Text"><span style="color: #000000">{UNAME:&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">Sailor}</span></span></div>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;结果显示：Hello Sailor<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>第二种赋值：不但使用默认值进行替换，而且将默认值赋值给该变量<br />
</strong>&nbsp;&nbsp;&nbsp;&nbsp;${var:=value}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo hello ${uname:=sailor}<br />
&nbsp;&nbsp;&nbsp;&nbsp;显示结果：hello sailor<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo $uname<br />
&nbsp;&nbsp;&nbsp;&nbsp;显示结果：sailor<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>第三种变量赋值：只有当变量已赋值时才用制定替换形式：</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;${var:+value}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;$ERROPT=a<br />
&nbsp;&nbsp;&nbsp;&nbsp;$echo ${ERROPT:+'Error tracking is active'}<br />
&nbsp;&nbsp;&nbsp;&nbsp;显示结果：Error tracking is active<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>还可以用错误检查的条件进行变量替换</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;${var:?message}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;3、位置参数&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;$#&nbsp;&nbsp;&nbsp;&nbsp;位置参数的数量<br />
&nbsp;&nbsp;&nbsp;&nbsp;$*&nbsp;&nbsp;&nbsp;&nbsp;位置参数的内容<br />
&nbsp;&nbsp;&nbsp;&nbsp;$?&nbsp;&nbsp;&nbsp;&nbsp;命令执行后返回的状态<br />
&nbsp;&nbsp;&nbsp;&nbsp;$!&nbsp;&nbsp;&nbsp;&nbsp;后台运行的最后一个进程号<br />
&nbsp;&nbsp;&nbsp;&nbsp;$0&nbsp;&nbsp;&nbsp;&nbsp;当前执行的进程名<br />
&nbsp;&nbsp;&nbsp;&nbsp;$$&nbsp;&nbsp;&nbsp;&nbsp;当前进程的进程号<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;4、参数置换的变量<br />
&nbsp;&nbsp;&nbsp;&nbsp;变量=${参数-word}：如果设置了参数，则用参数的值置换变量的值，否则用word置换。<br />
&nbsp;&nbsp;&nbsp;&nbsp;变量=${参数=word}：如果设置了参数，则用参数的值置换变量的值，否则把变量置换成word，然后再用word替换参数的值。<br />
&nbsp;&nbsp;&nbsp;&nbsp;变量=${参数?word}：如果设置了参数，则用参数的值置换变量的值，否则就显示word并从shell中退出，如果省略了word，就显示标准信息。<br />
&nbsp;&nbsp;&nbsp;&nbsp;变量=${参数+word}：如果设置了参数，就用word置换变量，否则不进行置换。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;5、位置参数<br />
&nbsp;&nbsp;&nbsp;&nbsp;位置参数是一种在调用shell程序的命令行中按照各自的位置决定的变量，是在程序名之后输入的参数。位置参数之间用空格分隔，shell取第一个位置参数替换程序文件中的$1，取第二个替换S2，然后依次类推。
<img src ="http://www.blogjava.net/sailor/aggbug/235216.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sailor/" target="_blank">sailor</a> 2008-10-18 21:40 <a href="http://www.blogjava.net/sailor/articles/235216.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Windows XP下使用VMWare安装Fedora8(F8)及VMWare Tools全过程图解(转载)</title><link>http://www.blogjava.net/sailor/articles/229061.html</link><dc:creator>sailor</dc:creator><author>sailor</author><pubDate>Mon, 15 Sep 2008 14:55:00 GMT</pubDate><guid>http://www.blogjava.net/sailor/articles/229061.html</guid><wfw:comment>http://www.blogjava.net/sailor/comments/229061.html</wfw:comment><comments>http://www.blogjava.net/sailor/articles/229061.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sailor/comments/commentRss/229061.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sailor/services/trackbacks/229061.html</trackback:ping><description><![CDATA[<h2>Windows XP下使用VMWare安装Fedora8(F8)及VMWare Tools全过程图解</h2>
<div class="t_msgfont" id="postmessage_406969">一.VMWare下Fedora Core 8(FC8)<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%B0%B2%D7%B0">安装</span>过程完整图解.<br />
首先准备Fedora8 32位ISO镜像安装<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%CE%C4%BC%FE">文件</span>(DVD或CD版均可,我采用的DVD版本),另外当然要有VMWare了,我采用的是VMWare Workstation 6.02 build-59824.废话少说,看图解.<br />
1.VMWare菜单&#8221;File&#8221;-&#8221;New&#8221;-&#8221;Virtual Machine&#8221;,下一步.选择&#8221;Custom&#8221;,自定义.下一步<br />
<img height="345" alt="" src="http://photo9.hexun.com/p/2007/1129/150169/b_39D1437B01F41CC3278CC3BB339F0E9E.jpg" width="400" border="0" /><br />
<br />
2.选择<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%D0%E9%C4%E2%BB%FA">虚拟机</span>的版本<br />
<img height="345" alt="" src="http://photo9.hexun.com/p/2007/1129/150169/b_84DE7D4885B6B449FF03062EAB13D206.jpg" width="400" border="0" /><br />
3.选linux,other linux 2.6.x kernel,别选错了64位版本<br />
<img height="345" alt="" src="http://photo9.hexun.com/p/2007/1129/150169/b_FBF4F1178850A9A07445DA52673F5D91.jpg" width="400" border="0" /><br />
4.虚拟机名字,虚拟机文件存放路径.<br />
<img height="345" alt="" src="http://photo9.hexun.com/p/2007/1129/150169/b_60D7FC3F3DFD977659632B4028C162EA.jpg" width="400" border="0" /><br />
5.处理器个数,我双核的,所以选了2个,当然选一个也可以.<br />
<img height="341" alt="" src="http://photo9.hexun.com/p/2007/1129/150169/b_B8A52113A35B7F59FAF49508F25E81B0.jpg" width="400" border="0" /><br />
6.物理<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%C4%DA%B4%E6">内存</span>使用限制,我2G<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%C4%DA%B4%E6">内存</span>,所以设定了900M左右,可根据个人情况,自己决定.<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%BD%A8%D2%E9">建议</span><span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%C9%E8%D6%C3">设置</span>大点,不然FC8安装过程可能比较慢.<br />
<img height="338" alt="" src="http://photo9.hexun.com/p/2007/1129/150169/b_D6E823EC9366E72C7D1DA64C8CFF0F9C.jpg" width="400" border="0" /><br />
7.虚拟机和物理主机的联网方式,我选择的第一个,桥接,第二个是NAT,第三个host-only,具体选择根据<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%CD%F8%C2%E7">网络</span>环境和个人喜好.<br />
<img height="342" alt="" src="http://photo9.hexun.com/p/2007/1129/150169/b_91B88C9A41D0A6D618715EB63DA1CB80.jpg" width="400" border="0" /><br />
8.选择虚拟<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%D3%B2%C5%CC">硬盘</span>的接口类型,SCSI-LSI<br />
<img height="341" alt="" src="http://photo9.hexun.com/p/2007/1129/150169/b_3EC8D0ED27A1F328E66F943839F78A74.jpg" width="400" border="0" /><br />
9.创建一个新的虚拟硬盘.<br />
<img height="339" alt="" src="http://photo9.hexun.com/p/2007/1129/150169/b_D901ED2AEB476E29E4019EAE123278FD.jpg" width="400" border="0" /><br />
10.设置磁盘大小,建议6G以上.两个复选框,,第一个是立即分配磁盘空间,建议不选,(就是说立即把你硬盘上的6G空间划分出来,如果不选,则随着数据的写入慢慢增大),第二个是针对非NTFS格式的<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%B7%D6%C7%F8">分区</span>,把文件划分为2G一个.根据个人情况.<br />
<img height="340" alt="" src="http://photo9.hexun.com/p/2007/1129/150169/b_C42CD3CE0F0E4A4C5F11D6D24D52EA68.jpg" width="400" border="0" /><br />
11.虚拟磁盘文件名,完成创建.<br />
<img height="340" alt="" src="http://photo9.hexun.com/p/2007/1129/150169/b_3AE34C8CF741F601C83BB4833D5AF42B.jpg" width="400" border="0" /><br />
12.右键点击虚拟机名称,&#8221;Setting&#8221;,载入安装文件ISO镜像.&#8221;CD-ROM&#8221;&#8211;&#8221;Use ISO Image&#8221;,选择好路径.<br />
<img height="345" alt="" src="http://photo9.hexun.com/p/2007/1129/150169/b_56414E1A9D6F699CD54BA423DD230189.jpg" width="400" border="0" /><br />
13.启动虚拟机,选择第一项,安装.<br />
<img height="300" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_0944CA4DBD1D39C05649464078F72F80.jpg" width="400" border="0" /><br />
14.检查<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%B9%E2%C5%CC">光盘</span>文件完整性,建议SKIP忽略.<br />
<img height="221" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_328FAEDBE153C12153C75AC2E0889E84.jpg" width="400" border="0" /><br />
15.<br />
<img height="299" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_B6AC949A17D2BB1E86E0F82508E7A976.jpg" width="400" border="0" /><br />
16.简体<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%D6%D0%CE%C4">中文</span><br />
<img height="300" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_728626F692C783CA436D21D8C6A56E5D.jpg" width="400" border="0" /><br />
17.美式键盘<br />
<img height="300" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_65FA39F57ADF84A1AC869F952093F6B7.jpg" width="400" border="0" /><br />
18.提示磁盘需要格式化,是<br />
<img height="300" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_C1216B834AFD38673FD2E51F5853A829.jpg" width="400" border="0" /><br />
19.默认即可,如果需要自己修改分区大小,勾选&#8221;检验和修改分区方案&#8221;<br />
<img height="301" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_F4322CE4A8ACA28CBF5F22C53EC9BA8D.jpg" width="400" border="0" /><br />
20.提示会重建分区,是.<br />
<img height="299" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_2D0391C978FE5EB7874C84AE1BCBA905.jpg" width="400" border="0" /><br />
21.联网方式,自己根据情况设置,也可以安装完后再设置.<br />
<img height="300" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_BF2552EFC1DC9B59A5883E6CE7BB6A44.jpg" width="400" border="0" /><br />
22.选择时区,用鼠标点地图上中国上海的位置即可.<br />
<img height="300" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_479FDA2CA8956D57D44C8C86DA41883F.jpg" width="400" border="0" /><br />
23.设置<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=root">root</span>用户<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%C3%DC%C2%EB">密码</span><br />
<img height="298" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_E00422080DF245E4F316E114D412B7E8.jpg" width="400" border="0" /><br />
24.设置需要安装的<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%C8%ED%BC%FE">软件</span>包,建议选择&#8221;现在定制&#8221;<br />
<img height="299" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_D015993657D4D9D89BD1E370588BC1FB.jpg" width="400" border="0" /><br />
25.&#8221;开发&#8221;类的&#8221;开发工具&#8221;和&#8221;开发库&#8221;选择上,不然可能无法安装VMWare Tools,(牵扯到编译器和kernel与开发源码)<br />
<img height="299" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_2FFDCC12C482DA77836423F83505D146.jpg" width="400" border="0" /><br />
26.检查<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%C8%ED%BC%FE%B0%FC">软件包</span>依赖关系<br />
<img height="298" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_A0F83E6F4A0362754C54BFB16D6F3389.jpg" width="400" border="0" /><br />
27.开始安装<br />
<img height="300" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_42933035D0799BD3443C60A2F373CDB9.jpg" width="400" border="0" /><br />
28.分区,格式化<br />
<img height="300" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_51A21D97264ACF849DCCE81B6CDA2889.jpg" width="400" border="0" /><br />
29.安装软件包<br />
<img height="300" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_6E83682DC8D24A7840A99EAF611CE3FE.jpg" width="400" border="0" /><br />
30.安装完成,重新引导.<br />
<img height="300" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_DA0D12CDCD517F20196F0ADBC409A9BD.jpg" width="400" border="0" /><br />
31.需要进行几个设置<br />
<img height="302" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_D8B5B51EE72C36A111407B2D863DF556.jpg" width="400" border="0" /><br />
32.许可协议<br />
<img height="300" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_982D163578FE2FA679EA6BF2AEA5E2AE.jpg" width="400" border="0" /><br />
33.防火墙<br />
<img height="300" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_CC38D4A5D117BC09BCBC2A2F9FA36A53.jpg" width="400" border="0" /><br />
34.安全防御,和上面的防火墙功能根据个人情况设置,可以进<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%CF%B5%CD%B3">系统</span>更改<br />
<img height="304" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_4953BB74B738B50A4A8514F95C5F90A5.jpg" width="400" border="0" /><br />
35.时间日期设置<br />
<img height="299" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_1ED3F5B40951775F78E116005316D13F.jpg" width="400" border="0" /><br />
36.默认<br />
<img height="301" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_09B348414DA5687CCA557D12A19810C5.jpg" width="400" border="0" /><br />
37.是否确认不发送<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%C5%E4%D6%C3">配置</span>文件.<br />
<img height="298" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_6C9F91F84C31F3BB7D93841F564D2A7F.jpg" width="400" border="0" /><br />
38.创建日常使用用户<br />
<img height="301" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_3B9A51B41C978ACB33FEDAA8FB0C5511.jpg" width="400" border="0" /><br />
39.安装完毕,登录.<br />
<img height="300" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_8D148FF2EB232524BF09DF8F00591142.jpg" width="400" border="0" /><br />
二.VMWare Tools的安装<br />
1.启动Fedora8,以root用户登录,VMWare菜单&#8221;VM&#8221;&#8211;&#8221;Install VMWare Tools&#8221;,会弹出窗口,里面有两个文件,一个是<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=rpm">rpm</span>包,一个是tar.gz压缩包,然后copy到tmp目录,解压,进入目录,看到如下图所示.<br />
<img height="121" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_85D1F772B6E0F09ACC71787E74F003DB.jpg" width="400" border="0" /><br />
2.双击VMWare-install.pl<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%D4%CB%D0%D0">运行</span>,在弹出的提示窗口选择&#8221;在<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%D6%D5%B6%CB">终端</span>中<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%D4%CB%D0%D0">运行</span>&#8221;,然后按照默认的提示一路回车就可以,直到出现一个提示是&#8221;no&#8221;的选择项(其他都是路径和yes),输入yes回车即可,然后就会出现选择分辨率的选项,根据自己的显示器最佳分辨率进行选择,我选的7 1280*1024,然后就安装完毕了,reboot系统,大功告成.<br />
<img height="130" alt="" src="http://photo9.hexun.com/p/2007/1129/150170/b_C50024096EAB37B56BF2DF2B8E568D8D.jpg" width="400" border="0" /><br />
看下安装好后用PrtSc键抓下来的全屏图片.<br />
<img alt="" src="http://www.popob.cn/wp-content/uploads/2007/11/fedora8.thumbnail.jpg" onload="attachimg(this, 'load')" border="0" /><br />
后记:<br />
1.双核CPU,如果设定采用两个CPU,会加大CPU的负荷,只适用一个的话,会降低CPU的使用.<br />
2.选IDE硬盘还是SCSI硬盘的问题,早在FC5,FC6时代,如果选SCSI硬盘,安装时很多人会提示找不到硬盘,IDE则没有问题,而昨天测试FC8会自动加载SCSI的<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%C7%FD%B6%AF">驱动</span>,不想以前的版本,需要手动操作.反正我选了SCSI,安装顺利.<br />
3.SCSI硬盘选bus还是lsi的问题,网上的说法是bus稳定,lsi好,具体自己琢磨.实际上在IDE硬盘上虚拟,差别不大.<br />
4.安装时软件包的选择问题.FC8的安装包选择和以前版本有些变化,软件包选择不够细致,建议选上开发工具和开发库,免去不能安装VMWare Tools的痛苦.以前版本安装起来都不太顺利,关键是kernel和kernel-devel版本号不一致,编译时无法通过.为什么不一致呢?就是安装时没有安装源码包,网上流行的办法是通过<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=yum">yum</span>来更新一致,实际上,只需要安装光盘里的rpm包就可以了,安装光盘里的版本是一致的,方便快捷而且不需要联网更新.<br />
5.安装VMWare Tools时,<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%B3%CC%D0%F2">程序</span>会自动在CD-ROM上挂载镜像,直接copy,解压,安装即可,别用那么多<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%C3%FC%C1%EE">命令</span>了,麻烦.装完后在CD-ROM上弹出就可以了.<br />
6.安装后如果启动时出现不能挂载hgfs(虚拟机<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%B2%D9%D7%F7%CF%B5%CD%B3">操作系统</span>和物理主机共享文件)的错误,只需要在菜单&#8221;VM&#8221;&#8211;&#8221;Setting&#8221;&#8211;&#8221;Option&#8221;选项卡,找到&#8221;Shared Folders&#8221;,Enable即可.</div>
<img src ="http://www.blogjava.net/sailor/aggbug/229061.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sailor/" target="_blank">sailor</a> 2008-09-15 22:55 <a href="http://www.blogjava.net/sailor/articles/229061.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>