⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0320bash.htm

📁 鸟哥的linux私房菜
💻 HTM
📖 第 1 页 / 共 5 页
字号:
[root@linux ~]# <span class=term_command>12name=VBird</span>
-bash: 12name=VBird: command not found  <span class=term_note>&lt;==萤幕会显示错误!因为不能以数字开头!</span>
[root@linux ~]# <span class=term_command>name = VBird</span>  <span class=term_note>&lt;==还是错误!因为有空白!</span>
[root@linux ~]# <span class=term_command>name=VBird</span>    <span class=term_note>&lt;==OK 的啦!</span>

<span class=term_hd>范例二∶承上题,若变数内容为 VBird's name 呢?</span>
[root@linux ~]# <span class=term_command>name=VBird's name</span>  
<span class=term_say># 因为单引号可以将 Enter 这个特殊字符取消,所以,您可以继续在下一行输入内容~
# 不过,这与我们要达到的功能不同,所以,算是失败的啦!</span>
[root@linux ~]# <span class=term_command>name="VBird's name"</span>  <span class=term_note>&lt;==OK 的啦!</span>
[root@linux ~]# <span class=term_command>name=VBird\'s\ name</span>
<span class=term_say># 利用反斜线 (\) 跳脱特殊字元,例如单引号与空白键,这也是 OK 的啦!</span>

<span class=term_hd>范例三∶我要在 PATH 这个变数当中『累加』:/home/dmtsai/bin 这个目录</span>
[root@linux ~]# <span class=term_command>PATH=$PATH:/home/dmtsai/bin</span>
[root@linux ~]# <span class=term_command>PATH="$PATH":/home/dmtsai/bin</span>
<span class=term_say># 上面这两种格式在 PATH 里头的设定都是 OK 的!但是底下的例子就不见得棉!</span>

<span class=term_hd>范例四∶呈范例三,我要将 name 的内容多出 "yes" 呢?</span>
[root@linux ~]# <span class=term_command>name=$nameyes</span>  
<span class=term_say># 知道了吧?如果没有双引号,那么变数成了啥?name 的内容是 $nameyes 这个变数!
# 呵呵!我们可没有设定过 nameyes 这个变数呐!所以,应该是底下这样才对!</span>
[root@linux ~]# <span class=term_command>name="$name"yes</span>
[root@linux ~]# <span class=term_command>name=${name}yes</span>

<span class=term_hd>范例五∶如何让我刚刚设定的 name=VBird 可以用在下个 shell 的程序?</span>
[root@linux ~]# <span class=term_command>name=VBird</span>
[root@linux ~]# <span class=term_command>bash      </span>  <span class=term_note>&lt;==进入到所谓的子程序</span>
[root@linux ~]# <span class=term_command>echo $name</span>  <span class=term_note>&lt;==嘿嘿!并没有刚刚设定的内容喔!</span>
[root@linux ~]# <span class=term_command>exit      </span>  <span class=term_note>&lt;==离开刚刚的子程序</span>
[root@linux ~]# <span class=term_command>export name</span>
[root@linux ~]# <span class=term_command>bash      </span>  <span class=term_note>&lt;==进入到所谓的子程序</span>
[root@linux ~]# <span class=term_command>echo $name</span>  <span class=term_note>&lt;==出现了设定值了!</span>
[root@linux ~]# <span class=term_command>exit      </span>  <span class=term_note>&lt;==离开刚刚的子程序</span>
<span class=term_say># 什么是『子程序』呢?就是说,在我目前这个 shell 的情况下,
# 去启用另一个新的 shell ,新的那个 shell 就是子程序啦!在一般的状态下,
# 父程序的自订变数是无法在子程序内使用的。但是透过 export 将变数变成
# 环境变数后,就能够在子程序底下应用了!很不赖吧!至于程序的相关概念,
# 我们会在『<a href="0440processcontrol.php">程序与资源管理</a>』章节当中提到的喔!</span>

<span class=term_hd>范例六∶如何进入到您目前核心的模组目录?</span>
[root@linux ~]# <span class=term_command>cd /lib/modules/`uname -r`/kernel</span>
<span class=term_say># 每个作业系统核心版本都不相同,以 FC4 为例,他的预设核心版本是 
# 2.6.11-1.1369_FC4 所以,他的模组目录在 /lib/modules/2.6.11-1.1369_FC4/kernel 。
# 因为每个 distributions 的这个值都不相同,但是我们却可以利用 uname -r 这个指令
# 先取得版本资讯,所以棉,就可以透过上面指令当中的内含指令 `uname -r` 
# 先取得版本输出到 cd .. 那个指令当中,就能够顺利的进入目前核心的驱动程式所放置
# 的目录棉!很方便吧!</span>

<span class=term_hd>范例七∶取消刚刚设定的 name 这个变数内容</span>
[root@linux ~]# <span class=term_command>unset name</span>
</pre></td></tr></table>

		根据上面的案例你可以试试看!就可以了解变数的设定棉!这个是很重要的呦!请勤加练习!!
		其中,较为重要的一些特殊符号的使用棉!例如单引号、双引号、跳脱字元、钱字号、quote
		符号等等,底下的例题想一想吧!<br><br>

<table border=1 width=90% cellspacing=0 cellpadding=5><tr><td>
例题二∶在变数的设定当中,单引号与双引号的用途有何不同?<br>
答∶<ul>单引号与双引号的最大不同在于<span class=text_import2>双引号仍然可以保有变数的内容,但单引号内仅能是一般字元
	,而不会有特殊符号。</span>我们以底下的例子做说明∶假设您定义了一个变数, name=VBird ,现在想以 
	name 这个变数的内容定义出 myname 显示 VBird its me 这个内容,要如何订定呢?
<ul><span class=text_import2><br><font face="细明体">
[root@linux ~]# name=VBird<br>
[root@linux ~]# echo $name<br>
VBird<br>
[root@linux ~]# myname="$name its me"<br>
[root@linux ~]# echo $myname<br>
VBird its me<br>
[root@linux ~]# myname='$name its me'<br>
[root@linux ~]# echo $myname<br>
$name its me</ul><br></span></font>
	发现了吗?没错!使用了单引号的时候,那么 $name 将失去原有的变数内容,
	仅为一般字元的显示型态而已!这里必需要特别小心在意!</ul>
</td></tr></table><br>

<table border=1 width=90% cellspacing=0 cellpadding=5><tr><td>
例题三∶在指令下达的过程中, quote ( ` ) 这个符号代表的意义为何?<br>
答∶<ul>在一串指令中,在 ` 之内的指令将会被先执行,而其执行出来的结果将做为外部的输入资讯!例如 
	uname -r 会显示出目前的核心版本,而我们的核心版本在 /lib/modules 里面,因此,你可以先执行 
	uname -r 找出核心版本,然后再以『 cd 目录』到该目录下,当然也可以执行如同上面范例六的执行内容棉。
	<br><br>另外再举个例子,我们也知道, locate 指令可以列出所有的相关档案档名,但是,
	如果我想要知道各个档案的权限呢?举例来说,我想要知道每个 crontab 相关档名的权限∶
	<ul><br><span class=text_import2><font face="细明体">
	[root@linux ~]# ls -l `locate crontab`</ul><br></span></font>
	如此一来,先以 locate 将档名资料都列出来,再以 ls 指令来处理的意思啦!了了吗? ^_^</ul>
</td></tr></table><br>
	</div>

	<hr><a name="variable_use"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>变数的用途</span><br>
	<div class=block2>
		我们知道 PATH 这个变数是我们在执行指令的时候,所需要具备的指令搜寻目录资料,
		没有他,我们就得要使用绝对路径来下达指令才行。当然,还有很多变数都有他特别的意义存在。
		除此之外,『<span class=text_import2>我为何需要设定变数</span>』呢?
		要跟大家介绍这个『变数』,当然是因为他有相当程度的意义存在的啊!
		底下就跟大家介绍一下,鸟哥设定变数的时机喔!

		<ul><span class=text_import1>我的案例一</span>∶最简单的例子就是
			『<span class=text_import2>简化路径名称</span>』棉!以鸟哥为例,我的工作在
			Unix 系统之下进行一些数值模式的模拟工作,偏偏由于资料量太大,
			为了怕日后忘记这个目录的内容与主要的意义,所以我的档名都取的很长,
			偏偏在执行模式的过程中,常常会切换目录!我哩ㄌㄟ,光是打那几行路径名称就快要疯掉了!
			所以我就设定那几行目录名称成为一个四个字元的变数,如此一来我只要输入『
			cd $VARI 』这个指令,嘿嘿!马上就移动到该路径下了!很方便吧!当然变数的意义还不止于此,
			不过这是最简单的实例说明棉!</ul>

		<ul><span class=text_import1>我的案例二</span>∶另外一个常常需要变数的咚咚是在
			scripts 里面,例如我写的一个侦测登录档的小程式 logfile.sh 这个咚咚,
			由于里头常常需要用到『储存路径』,偏偏可能每个人的存取路径都不太一样,
			而如果要修改存取路径的话,嘿嘿!好几十行要同时修改呢!还可能会改错!
			那么我只要定义一个变数,然后后续的所有资料都使用这个变数的内容!嘿嘿!
			那么只要大家修改了这个变数的内容(只要一行),后续的动作就不需要修正了!这个动作常在程式或者是
			script 当中看到的!</ul>

		所以棉,有很多的时候为了方便或者是使用于 scripts 的意义,我们必须要设定变数!
		当然棉,如果是跟系统终端机环境有关的设定值,很多也是利用变数来帮助达成的~
		底下我们就来谈一谈所谓的『环境变数』吧!<br><br>
	</div>

	<hr><a name="variable_environ"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>环境变数的功能</span><br>
	<div class=block2>
		环境变数可以帮我们达到很多功能~包括家目录的变换啊、提示字元的显示啊、执行档搜寻的路径啊等等的,
		还有很多很多啦!那么,既然环境变数有那么多的功能,问一下,目前我的 shell 环境中,
		有多少变数啊?!呵呵!我们可以利用两个指令来查阅,分别是 env 与 export 呢!<br><br>

		<hr><li><span class=text_import1>一些环境变数的说明∶ env </span></li>
		<div class=block2>

<a name="env"></a><table class="term"><tr><td class="term"><pre>
<span class=term_hd>范例一∶列出目前的 shell 环境下的所有环境变数与其内容。</span>
[root@linux ~]# <span class=term_command>env</span>
HOSTNAME=linux.dmtsai.tw   <span class=term_note>&lt;== 这部主机的主机名称</span>
SHELL=/bin/bash            <span class=term_note>&lt;== 目前这个环境下,使用的 Shell 是哪一个程式?</span>
TERM=xterm                 <span class=term_note>&lt;== 这个终端机使用的环境是什么类型</span>
HISTSIZE=1000              <span class=term_note>&lt;== 这个就是『记录指令的笔数』在 FC4 预设可记录 1000 笔</span>
USER=root                  <span class=term_note>&lt;== 使用者的名称啊!</span>
LS_COLORS=no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:
or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=0
0;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=
00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;3
1:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00
;35:*.xpm=00;35:*.png=00;35:*.tif=00;35: <span class=term_note>&lt;== 一些颜色显示</span>
ENV=/root/.bashrc          <span class=term_note>&lt;== 使用的个人环境设定档</span>
MAIL=/var/spool/mail/root  <span class=term_note>&lt;== 这个使用者所取用的 mailbox 位置</span>
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin:
/root/bin                  <span class=term_note>&lt;== 不再多讲啊!是执行档指令搜寻路径</span>
INPUTRC=/etc/inputrc       <span class=term_note>&lt;== 与键盘按键功能有关。可以设定特殊按键!</span>
PWD=/root                  <span class=term_note>&lt;== 目前使用者所在的工作目录 (利用 pwd 取出!)</span>
LANG=en_US.UTF-8           <span class=term_note>&lt;== 这个与语系有关,底下会再介绍!</span>
HOME=/root                 <span class=term_note>&lt;== 这个使用者的家目录啊!</span>
_=/bin/env                 <span class=term_note>&lt;== 上一次使用的指令的最后一个参数(或指令本身)</span>
</pre></td></tr></table>

		env 是 environment (环境) 的简写啊~
		上面的例子当中,是列出来所有的环境变数。当然,如果使用 export 也会是一样的内容~
		只不过, export 还有其他额外的功能就是了,我们等一下再提这个 export 指令。
		那么上面这些变数有些什么功用呢?<a name="variable_environ_im"></a>底下我们就一个一个来分析分析!<ul>

		<li><span class=text_import1>HOME</span> ∶ 代表使用者的家目录。还记得我们可以使用 cd ~ 
			去到使用者的家目录吗?或者利用 cd 就可以直接回到使用者家目录了。那就是取用这个功能啦~
			有很多程式都可能会取用到这个变数的值喔!</li><br>
		<li><span class=text_import1>SHELL</span> ∶ 告知我们,目前这个环境使用的 SHELL 是哪支程式?
			如果是 bash 的话,预设是 /bin/bash 的啦!</li><br>
		<li><span class=text_import1>HISTSIZE</span> ∶ 这个与『历史命令』有关,亦即是,
			我们曾经下达过的指令可以被系统记录下来,而记录的『笔数』则是由这个值来设定的。</li><br>
		<li><span class=text_import1>ENV</span> ∶ 这个使用者所使用的个人化环境设定档的读取档案。</li><br>
		<li><span class=text_import1>MAIL</span> ∶ 当我们使用 mail 这个指令在收信时,系统会去读取的邮件信箱档案 
			(mailbox)。</li><br>
		<li><span class=text_import1>PATH</span> ∶ 就是执行档搜寻的路径啦~目录与目录中间以冒号(:)分隔,
			由于档案的搜寻是依序由 PATH 的变数内的目录来查询,所以,目录的顺序也是

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -