458.html
来自「著名的linux英雄站点的文档打包」· HTML 代码 · 共 679 行 · 第 1/4 页
HTML
679 行
</td>
</tr>
<tr>
<td noWrap>
<div align="center">
<input maxlength=100 size=30 name=keyword2>
</div>
</td>
</tr></tbody>
</table>
</form>
</TD>
<TD rowSpan=2><IMG src="images/header_r1_c7.gif" tppabs="http://www.linuxhero.com/docs/images/header_r1_c7.gif" width=26 border=0 name=header_r1_c7></TD>
<TD><IMG height=83 src="images/spacer.gif" tppabs="http://www.linuxhero.com/docs/images/spacer.gif" width=1 border=0></TD></TR>
<TR>
<TD background="images/bgline.gif" tppabs="http://www.linuxhero.com/docs/images/bgline.gif"><IMG height=22
src="images/header_r2_c1.gif" tppabs="http://www.linuxhero.com/docs/images/header_r2_c1.gif" width=296 border=0
name=header_r2_c1></TD>
<TD background="images/bgline.gif" tppabs="http://www.linuxhero.com/docs/images/bgline.gif" colSpan=5>
<DIV align=right><FONT class=normalfont>当前位置:
<A href="index.html" tppabs="http://www.linuxhero.com/docs/index.html">本站首页</A>
<font color="#FF6699">>></font>
<A href="type4.html" tppabs="http://www.linuxhero.com/docs/type4.html">shell</A> | <A href="copyright.html" tppabs="http://www.linuxhero.com/docs/copyright.html">版权说明</A></font></DIV>
</TD>
<TD><IMG height=22 src="images/spacer.gif" tppabs="http://www.linuxhero.com/docs/images/spacer.gif" width=1
border=0></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=10 cellPadding=0 width="100%" bgColor=#ffffff
border=0>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=3 width="100%" border=0>
<TR>
<TD vAlign=top align=middle width="60%">
<TABLE cellSpacing=0 cellPadding=0 width="100%"
background="images/back.gif" tppabs="http://www.linuxhero.com/docs/images/back.gif" border=0>
<TBODY>
<TR>
<TD vAlign=top width="80%">
<DIV align=center>
<FORM action="search.html" tppabs="http://www.linuxhero.com/docs/search.html" method=get>
</FORM>
<TABLE cellSpacing=0 cellPadding=0 width="95%"
border=0><TBODY>
<TR>
<TD background="images/bgi.gif" tppabs="http://www.linuxhero.com/docs/images/bgi.gif"
height=30></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=3 width="95%"
align=center border=0>
<TBODY>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=3 width="100%"
border=0>
<TBODY>
<TR>
<TD vAlign=top>
<p><FONT class=normalfont><B><font color=blue>ASH Shell的脚本编程</font></B></FONT><BR><FONT class=smallfont color=#ff9900>2004-04-23 15:18 pm</FONT><BR><FONT class=normalfont>作者:作者<br>来自:Linux知识宝库<br>联系方式:无名<br><br>BASH Shell的脚本编程<br>
报告人 bjchenxu (ChinaUnix/linux版)<br>
<br>
第一篇:超级工具/terminals,xterms 和 shells<br>
shell是一个全功能的编程环境。其背景知识如下。<br>
<br>
DEC公司推出的 PDP-11 ,体积小(被称为 mini)而且价格低(10000$),在大学中引起<br>
了巨大的反响。为了方便移植,1969 年,Ken Thompson 开始写后来成为 Unix(与MULTICS相<br>
对)的第一行代码。后来, Dennis Ritchie为这个新的操作系统设计了一种新的编程语言-- <br>
C 语言。<br>
虽然 Unix 的效率不及原来的操作系统,但有三个突出的优点:<br>
1. 可以任意移植到其他机器<br>
2. 其中的 C 语言大大简化了编程<br>
3. free。<br>
<br>
终端(terminals)<br>
Unix是可以在许多种机器上运行的操作系统,但人们又如何使用这些机器呢?他们是通过<br>
哑终端来连接到这些机器,也就是用键盘、显示器及足够的 electronics(电子元件)组成的<br>
机器与中央计算机(central computer)相连。在这些终端上,用户可以敲字符(teletypy),<br>
这就是字符串'tty'表示终端设备文件,和'getty'命令的名称来历。<br>
为了避免键盘布局的混乱,人们创建了一个含有所有不同终端特性的(capability)文件,<br>
这就是'termcap',参见'/etc/termcap'。linux 终端大多数用'vt100'或'linux'作为终端类型。<br>
<br>
xterms<br>
在八十年代初期,产生了X Window System 。九十年代早期,产生了XFree86 。<br>
X Window 中一个很大的好处是可以运行多个虚拟(virtual)终端。甚至在 X Window 下就<br>
有这么个应用程序--'xterm'。您将发现'xterm'和'virtual terminal'在很多情况下都是一样<br>
的。其他的终端模拟器(terminal emulator),如 rxvt、konsole、aterm、eterm、wterm 等等。<br>
终端模拟器(又称为虚拟终端)通过伪(pseudo) tty 设备-- pty 与系统相连,并且使用<br>
自己的显示标准--xterm 。这导致不同的终端模拟器可能在一些按键或程序上存在细小的差别,<br>
这取决于模拟器多大程度上遵守了'xterm'的显示标准。<br>
<br>
shells<br>
shell是用户和linux(或者更准确的说,是你和Linux内核)之间的接口程序。 你<br>
在提示符下输入的每个命令都由shell先解释然后传给linux内核。<br>
为了在终端中运行程序,需要 shell 。shell 是操作系统的一部分,用来与用户打交道,<br>
并且可以用来协调各个命令。<br>
第一个真正的 Unix shell -- 'sh',亦称为'Bourne shell',诞生于 1975 年, 作者是<br>
Steve Bourne 。很快,出现了其他 shell ,如基于原始'Bourne shell'的'ksh'、'zsh',后<br>
者常用作专属 Unixes 系统中的标准 shell ;也有一些从 C 语言中衍生出来的 shell , 如<br>
'csh'或'tcsh'。<br>
在 linux 中,标注的 shell 是'bash',即 the GNU Bourne-Again Shell 。这个 shell<br>
功能非常强大,压缩的 man page 就有 50 KB 。<br>
<br>
Shell 起步<br>
首先,有一点小说明:在平常应用中,建议您不要用'root'帐号运行 shell , 如果您还<br>
是新手,这一点尤其要注意。作为普通用户,不管您有意还是无意,都无法破坏系统;但如果<br>
是'root',那就不同了,只要敲几个字母,就可能导致灾难性后果。<br>
当您登入系统或打开一个 xterm 窗口,首先看到的是提示符(prompt)。Red Hat linux <br>
的标准提示符包括了您的用户名、登入的主机名(没有设置的话,是'localhost')、 当前所<br>
在的目录(working directory)、提示符号:<br>
[tom@belbo tom]$<br>
我以用户名'tom'登入名为'belbo'的主机,当前在我的 home 目录--'/home/tom'中。<br>
'root'的提示符:<br>
[root@belbo root]#<br>
除了不同的用户名外,提示符号由'$'变成了'#'。根据 Bourne shell 的传统,普通用户<br>
的提示符以'$'结尾,而超级用户用'#'。<br>
提示符的每个部分都可以定制,您在后面将有更深的了解。<br>
要运行命令的话,您只要在提示符后敲进命令,然后在按 <ENTER> 键。shell将在其路径<br>
中(详情见后)搜索这个命令,找到以后就运行,并在终端里输出相应的结果(如果有的话),<br>
命令结束后,再给出新的提示符:<br>
[tom@belbo tom]$ whoami<br>
tom<br>
[tom@belbo tom]$<br>
当您敲 ENTER 时,光标(cursor)在哪里并不要紧,因为 shell 总是会整行地读取。<br>
<br>
基本的命令有:'ls'(list directory ,列出目录内容)、'cp'(copy ,复制)、'mv'<br>
(move / rename ,移动/重命名),'cd '(change directory ,改变目录),这些命令后<br>
面都可以跟上一帮可选项,这方面 man page 有详细的介绍(man ls, man mv 等等)。<br>
下面简单介绍一下几个术语(terminology)。<br>
命令可能带一些可选项(options)、参数(arguments):<br>
mv -i file dir<br>
其中'-i'是命令'mv'的一个可选项,而'file'和'dir'则是参数。 所有可选项在该命令的<br>
man page 都中有详细的介绍(此例中用 man mv),而参数则由您提供。可选项决定命令如何<br>
工作,而参数则用于确定命令作用的目标。<br>
<br>
第二篇:自动补齐/命令行的历史记录/编辑命令行/可用的 Shell 快捷方式<br>
Unix (及后继者 linux)在命令行下面诞生,因此,Unix 中的命令行有许多非常实用的<br>
功能。<br>
<br>
自动补齐<br>
如何用'cd'(改变目录,change directory)最快地从您当前所在的 home 目录跳到<br>
'/usr/src/redhat/'呢?<br>
cd /u<TAB>sr<TAB>r<TAB><br>
这称为'命令行自动补齐'(automatic command line completion), 这在平常应用中是不<br>
可缺少的。让我们仔细看看这个例子:<br>
cd /u<TAB><br>
扩展成了 cd /usr/ ,很简单吧。下面的<br>
cd /u<TAB>sr<TAB><br>
扩展为 cd /usr/src/ 。<br>
如果您只敲了cd /u<TAB>s<TAB>, '/usr'下匹配的('cd /u*/s*')三个子目录将列出供<br>
您选择:'/usr/sbin'、'/usr/share'和'/usr/src'。<br>
因此,<TAB> 键可以很方便地用于根据前几个字母,来查找匹配的文件或子目录。比如,<br>
ls /usr/bin/zip<TAB> 将列出所有'/usr/bin'下面,以字符串'zip'开头的文件或子目录。当<br>
然,完成这类任务还有更厉害的命令,但这个方法确实很管用。<br>
另外,碰到长文件名时就显得特别方便。假设您要安装一个名为<br>
'boomshakalakwhizbang-4.6.4.5-i586.rpm'的 RPM 包,您输入 rpm -i boom<TAB> ,如果目<br>
录下没有其他文件能够匹配,那 shell 就会自动帮忙补齐。<br>
cd /u<TAB>sr<TAB>l<TAB><br>
将扩展成 cd /usr/src/linux ,并等待继续。'/usr/src'中有两个匹配的目录:<br>
'/usr/src/linux-[...]'、'/usr/src/linux'。如何告诉 shell 您想要后面的那个呢? 只要<br>
跟一个斜线(/ ,slash),就可以选择后面的那个了。<br>
假如您不确定是'/usr/src/linux/Documentation'还是'/usr/src/linux/documentation'。<br>
而您知道,linux 是区分大小写的。如果已经仔细读过前面部分的话,您想到可以用:<br>
cd /u<TAB>sr<TAB>l<TAB>/d<TAB><br>
扩展成了'/usr/src/linux/drivers/',因此应该是'Documentation'(大写的'D')。<br>
这种补齐对命令也有效:<br>
[tom@belbo tom]$ gre<TAB><br>
grecord grefer grep<br>
[tom@belbo tom]$ gre<br>
在这里 shell 将列出所有以字符串'gre'开头的已知命令。<br>
<br>
命令行的历史记录<br>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?