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">&gt;&gt;</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>
    要运行命令的话,您只要在提示符后敲进命令,然后在按 &lt;ENTER&gt; 键。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&lt;TAB&gt;sr&lt;TAB&gt;r&lt;TAB&gt;<br>
    这称为'命令行自动补齐'(automatic command line completion), 这在平常应用中是不<br>
可缺少的。让我们仔细看看这个例子:<br>
    cd /u&lt;TAB&gt;<br>
    扩展成了 cd /usr/ ,很简单吧。下面的<br>
    cd /u&lt;TAB&gt;sr&lt;TAB&gt;<br>
    扩展为 cd /usr/src/ 。<br>
    如果您只敲了cd /u&lt;TAB&gt;s&lt;TAB&gt;, '/usr'下匹配的('cd /u*/s*')三个子目录将列出供<br>
您选择:'/usr/sbin'、'/usr/share'和'/usr/src'。<br>
    因此,&lt;TAB&gt; 键可以很方便地用于根据前几个字母,来查找匹配的文件或子目录。比如,<br>
ls /usr/bin/zip&lt;TAB&gt; 将列出所有'/usr/bin'下面,以字符串'zip'开头的文件或子目录。当<br>
然,完成这类任务还有更厉害的命令,但这个方法确实很管用。<br>
    另外,碰到长文件名时就显得特别方便。假设您要安装一个名为<br>
'boomshakalakwhizbang-4.6.4.5-i586.rpm'的 RPM 包,您输入 rpm -i boom&lt;TAB&gt; ,如果目<br>
录下没有其他文件能够匹配,那 shell 就会自动帮忙补齐。<br>
    cd /u&lt;TAB&gt;sr&lt;TAB&gt;l&lt;TAB&gt;<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&lt;TAB&gt;sr&lt;TAB&gt;l&lt;TAB&gt;/d&lt;TAB&gt;<br>
    扩展成了'/usr/src/linux/drivers/',因此应该是'Documentation'(大写的'D')。<br>
    这种补齐对命令也有效:<br>
    [tom@belbo tom]$ gre&lt;TAB&gt;<br>
    grecord grefer grep<br>
    [tom@belbo tom]$ gre<br>
    在这里 shell 将列出所有以字符串'gre'开头的已知命令。<br>
<br>
    命令行的历史记录<br>

⌨️ 快捷键说明

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