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

📄 linux shell简介.htm

📁 linuxSir 网站的精华文章
💻 HTM
📖 第 1 页 / 共 5 页
字号:
      <UL><A 
        href="http://www.linuxsir.org/main/?q=node/135#2.1">一、自动补齐;</A><BR><A 
        href="http://www.linuxsir.org/main/?q=node/135#2.2">二、命令行的历史记录</A><BR><A 
        href="http://www.linuxsir.org/main/?q=node/135#2.3">三、可用的 Shell 快捷方式</A> 
      </UL>
      <P><A 
      href="http://www.linuxsir.org/main/?q=node/135#3"><B>第三篇:命令的排列/命令的任务调度/命令的替换</B></A></P>
      <UL><A 
        href="http://www.linuxsir.org/main/?q=node/135#3.1">一、命令的排列</A><BR><A 
        href="http://www.linuxsir.org/main/?q=node/135#3.2">二、命令的任务调度</A><BR><A 
        href="http://www.linuxsir.org/main/?q=node/135#3.3">三、命令的替换</A> </UL>
      <P><A 
      href="http://www.linuxsir.org/main/?q=node/135#4"><B>第四篇:文件名匹配/输出重定向</B></A></P>
      <UL><A 
        href="http://www.linuxsir.org/main/?q=node/135#4.1">一、文件名匹配</A><BR><A 
        href="http://www.linuxsir.org/main/?q=node/135#4.2">二、引用 shell 
        的特殊字符</A><BR><A 
        href="http://www.linuxsir.org/main/?q=node/135#4.3">三、输出重定向</A>
        <P></P>
        <UL><A 
          href="http://www.linuxsir.org/main/?q=node/135#4.31">1、在多个命令间重定向</A><BR><A 
          href="http://www.linuxsir.org/main/?q=node/135#4.32">2、重定向至文件</A> 
      </UL></UL>
      <P><A href="http://www.linuxsir.org/main/?q=node/135#5"><B>第五篇:bash 
      配置文件/提示符/改变 $PATH</B></A></P>
      <UL><A href="http://www.linuxsir.org/main/?q=node/135#5.1">一、bash 
        配置文件</A><BR><A 
        href="http://www.linuxsir.org/main/?q=node/135#5.2">二、提示符</A><BR><A 
        href="http://www.linuxsir.org/main/?q=node/135#5.3">三、改变 $PATH</A> </UL>
      <P><A href="http://www.linuxsir.org/main/?q=node/135#6"><B>第六篇:命令的别名、Shell 
      函数/从这里出发/Shell 常见问题</B></A></P>
      <UL><A href="http://www.linuxsir.org/main/?q=node/135#6.1">一、命令的别名、Shell 
        函数</A>
        <P></P>
        <UL><A 
          href="http://www.linuxsir.org/main/?q=node/135#6.11">1、命令的别名</A><BR><A 
          href="http://www.linuxsir.org/main/?q=node/135#6.12">2、Shell 函数</A> 
</UL>
        <P><A href="http://www.linuxsir.org/main/?q=node/135#6.2">二、从这里出发</A> 
        </P></UL>
      <P><A 
      href="http://www.linuxsir.org/main/?q=node/135#7"><B>关于本文</B></A><BR><A 
      href="http://www.linuxsir.org/main/?q=node/135#8"><B>相关文档</B></A></P>
      <P><FONT 
      color=blue><B><BR>+++++++++++++++++++++++++++++++++++++++++++++++++++++<BR>正文<BR>+++++++++++++++++++++++++++++++++++++++++++++++++++++<BR></B></FONT></P>
      <P><FONT id=0 size=4><B>版权信息</B></FONT></P>
      <P>本文的内容来源于 MUO 的 Basics 部分,其原始英文版可以从这里获得<A 
      href="http://www.mandrakeuser.org/docs/">http://www.mandrakeuser.org/docs/</A>。中文版来自吴晓光的CMUO 
      <A 
      href="http://dummy.linux.net.cn/~xgwu/cmuo/">http://dummy.linux.net.cn/~xgwu/cmuo/</A>。MUO 
      是 Mandrake Linux( http://www.mandrakelinux.com/ 
      )为用户提供的入门手册,其内容实用并且实时更新,非常适合初学者做入门参考。与常见的各种Linux教程不同,MUO介绍给Linux初学者的是学习Linux的方法而非对某个系统的描述,这对各种有着千差万别的Linux发行版的学习尤为重要。</P>
      <P>本文编译整理时对相关章节做了相应的删改处理,去掉了针对Mandrake Linux的部分内容。</P>
      <P><FONT id=00 size=4><B>前言</B></FONT><BR>使用 Shell</P>
      <P>以下将介绍并解释基本的 shell 命令和机制。</P>
      <P><FONT id=1 size=4><B>第一篇:超级工具/Terminals,xterms 和 Shells</B></FONT></P>
      <P><FONT id=1.1 size=4><B><BR>一、超级工具<BR></B></FONT></P>
      <P>您或许听过这样的论调:命令行(the mommand 
      line)早就已经过时了,那东西神秘兮兮的,等等。有些人甚至觉得操作系统中应该没有这些命令才好。</P>
      <P>事实是上,您可以不懂任何 shell ,就能使用 Linux 。您启动系统后可以直接进入 X Window ,最后在 X Window 
      下关机。<BR>我坚信,用 Linux 而不懂 shell ,就象开车只会用头档(first 
      gear)一样。当然,最初看起来,直接而简单,在大多数情况下都管用。但速度慢,而且无法真正体验驾驶的乐趣。</P>
      <P>对,命令行很有趣。就象用一大堆收集到的积木,竟可以完成许多意想不到的创举,一些极其复杂的工作,只需几行命令就可以解决。这是因为,在 Unix 
      中,shell 可不是简单的命令解释器(典型的有 Windows 中的 DOS ),而是一个全功能的编程环境。<BR>这并不意味着 shell 
      非常容易学通,您知道,好事多磨,这还是要花点工夫的。;-) 但请相信我,这绝对值得。您在很短时间内,就能被一大帮门外汉吹捧为 Unix 
      wizard(奇才) 。*grin*<BR><FONT id=1.2 size=4><B><BR>二、为了说明 shell 
      ,这里需要一些背景知识。<BR></B></FONT><BR><FONT id=1.21 size=3><B><BR>1、Terminals, 
      xterms 与 Shells<BR></B></FONT></P>
      <P>追溯到 Unix 诞生的那个年代,当时还没有现在流行的"个人计算机"。被称为计算机的机器,还是吞吐磁带与 magnetic memory 
      (用术语'core'来表示系统 memory)的庞然大物。DEC 公司(现在的 Compaq)推出的 PDP-11 ,体积小(被称为 
      mini)而且价格底,在大学中引起了巨大的反响,很多学校直到那时才买得起一台计算机(PDP-11 物美价廉,只有 10000$)。</P>
      <P>这些机器的操作系统由汇编语言、机器语言写成,所以运行起来效率很高,但都无法移植(unportable)。每家计算机公司都给自己的机器配上独有的操作系统,然后再销售。</P>
      <P>这种笨拙的作法很快就被人们意识到了,于是就开始兴建一个可以在不同品牌机器上运行的操作系统。1969 年,Ken Thompson 
      开始写后来成为 Unix 的第一行代码。(Thompson 曾经参加了一个项目:MULTICS,Unix 是与这有关的一个玩笑词) 
      其实,Dennis Ritchie 为这个新的操作系统设计了一种新的编程语言-- C 语言后,事情才真正开始。</P>
      <P>虽然 Unix 的效率不及原来的操作系统,但有三个突出的优点:可以任意移植到其他机器,其中的 C 语言大大简化了编程,而且这些都 free 
      。很快,全美国的大学都忙着开始为机器安装 Unix 。<BR><FONT id=1.22 
      size=3><B><BR>2、终端(Terminals)<BR></B></FONT></P>
      <P>Unix 是可以在许多种机器上运行的操作系统,但人们又如何使用这些机器呢?他们是通过哑终端来连接到这些机器,也就是用键盘、显示器及足够的 
      electronics (电子元件)组成的机器与中央计算机(central 
      computer)相连。在这些终端上,用户可以敲字符(teletypy),这就是字符串'tty'表示终端设备文件,和'getty'命令的名称来历。</P>
      <P>您可能会问,现在这些东西都在哪儿。 
      这些终端的厂家无法达成一项最终标准,这导致每种牌子的终端都有各自的键盘布局、各自的在屏幕上显示字符的方法、发送或接收什么信号表示什么字符、控制代码等等。</P>
      <P>为了避免这些混乱,就创建了一个含有所有不同终端特性的(capability)文件,这就是'termcap'。用一个工具打开'/etc/termcap'瞧瞧,可别吓着了 
      ;-) 。</P>
      <P>Linux 终端大多数用'vt100'或'linux'作为终端类型。<BR><FONT id=1.23 
      size=3><B><BR>3、xterms<BR></B></FONT></P>
      <P>在八十年代初期,产生了一个 Unix 的图形子系统-- the X Window System 。九十年代早期,为了更好地实现基于 Intel 
      的 Unix 类系统上(如FreeBSD、NetBSD、Linux)的应用,产生了一个系统分支-- XFree86 。</P>
      <P>X Window 中一个很大的好处是可以运行多个虚拟(virtual)终端。甚至在 X Window 
      下就有这么个应用程序--'xterm'。您将发现'xterm'和'virtual terminal'在很多情况下都是一样的。有的地方说'打开一个 
      xterm',其实您不是非要用'xterm'程序,其他的终端模拟器(terminal emulator),如 
      rxvt、konsole、aterm、eterm、wterm 等等,一样有效。</P>
      <P>终端模拟器(又称为虚拟终端)通过伪(pseudo) tty 设备-- pty 与系统相连,并且使用自己的显示标准-- xterm 
      。这导致不同的终端模拟器可能在一些按键或程序上存在细小的差别,这取决于模拟器多大程度上遵守了'xterm'的显示标准。<BR><FONT 
      id=1.24 size=3><B><BR>4、Shells<BR></B></FONT></P>
      <P>为了在终端中运行程序,需要 shell 。shell 是操作系统的一部分,用来与用户打交道,并且可以用来协调各个命令。</P>
      <P>第一个真正的 Unix shell -- 'sh',亦称为'Bourne shell',诞生于 1975 年,作者是 Steve Bourne 
      。很快,出现了其他 shell ,如基于原始'Bourne shell'的'ksh'、'zsh',后者常用作专属 Unixes 系统中的标准 
      shell ;也有一些从 C 语言中衍生出来的 shell ,如'csh'或'tcsh'。</P>
      <P>在 Linux 中,标注的 shell 是'bash',即 the GNU Bourne-Again Shell (有点玩笑的味道……)。这个 
      shell 功能非常强大(甚至有人觉得太庞大了),压缩的 man page 就有 50 KB 。<BR><FONT id=1.3 
      size=4><B><BR>三、Shell 起步<BR></B></FONT></P>
      <P>首先,有一点小说明:在平常应用中,建议您不要用'root'帐号运行 shell 
      ,如果您还是新手,这一点尤其要注意。作为普通用户,不管您有意还是无意,都无法破坏系统;但如果是'root',那就不同了,只要敲几个字母,就可能导致灾难性后果。</P>
      <P>当您登入系统或打开一个 xterm 窗口,首先看到的是提示符(prompt)。Red Hat Linux 
      的标准提示符包括了您的用户名、登入的主机名(没有设置的话,是'localhost')、当前所在的目录(working 
      directory)、提示符号:<BR>
      <DIV class=codeblock><CODE>[tom@belbo 
      tom]$</CODE></DIV><BR>我以用户名'tom'登入名为'belbo'的主机,当前在我的 home 
      目录--'/home/tom'中。'root'的提示符:<BR>
      <DIV class=codeblock><CODE>[root@belbo 
      root]#</CODE></DIV><BR>除了不同的用户名外,提示符号由'$'变成了'#'。根据 Bourne shell 
      的传统,普通用户的提示符以'$'结尾,而超级用户用'#'。
      <P></P>
      <P>提示符的每个部分都可以定制,您在后面将有更深的了解。</P>
      <P>要运行命令的话,您只要在提示符后敲进命令,然后在按 <ENTER>键。shell 
      将在其路径中(详情见后)搜索这个命令,找到以后就运行,并在终端里输出相应的结果(如果有的话),命令结束后,再给出新的提示符:<BR>
      <DIV class=codeblock><CODE>[tom@belbo tom]$ whoami<BR>tom<BR>[tom@belbo 
      tom]$</CODE></DIV>
      <P></P>
      <P>顺带指出,当您敲 ENTER 时,光标(cursor)在哪里并不要紧,因为 shell 总是会整行地读取。</P>
      <P>基本的命令有:'ls'(list directory ,列出目录内容)、'cp'(copy ,复制)、'mv'(move / rename 
      ,移动/重命名),'cd '(change directory ,改变目录),这些命令后面都可以跟上一帮可选项,这方面 man page 
      有详细的介绍(man ls, man mv 等等)。<BR>在您动身前往 shell 
      领地前,这里有几个术语(terminology)的简短说明。命令可能带一些可选项(options)、参数(arguments):<BR>
      <DIV class=codeblock><CODE>mv -i file dir</CODE></DIV>
      <P></P>
      <P>其中'-i'是命令'mv'的一个可选项,而'file'和'dir'则是参数。所有可选项在该命令的 man page 都中有详细的介绍(此例中用 
      man mv),而参数则由您提供。可选项决定命令如何工作,而参数则用于确定命令作用的目标。</P>
      <P>到目前为止,介绍得有点象许多人厌恶轻视的 DOS shell ,但伴随着下面的介绍,您将会有新的体验。</P>
      <P><FONT id=2 size=4><B><BR>第二篇:自动补齐/命令行的历史记录/编辑命令行/可用的 Shell 
      快捷方式</B></FONT></P>
      <P>Unix (及后继者 Linux)在命令行下面诞生,因此,Unix 
      中的命令行有许多非常实用的功能。在本篇中,我们将来作一些了解。<BR><FONT id=2.1 
      size=4><B><BR>一、自动补齐;<BR></B></FONT></P>
      <P>如何用'cd'(改变目录,change directory)最快地从您当前所在的 home 
      目录跳到'/usr/src/redhat/'呢?<BR>
      <DIV class=codeblock><CODE>cd 
      /u&lt;TAB&gt;sr&lt;TAB&gt;r&lt;TAB&gt;</CODE></DIV><BR>这称为'命令行自动补齐'(automatic 
      command line completion),这在平常应用中是不可缺少的。让我们仔细看看这个例子:<BR>
      <DIV class=codeblock><CODE>cd /u&lt;TAB&gt;</CODE></DIV><BR>扩展成了 cd /usr/ 
      ,很简单吧。下面的<BR>
      <DIV class=codeblock><CODE>cd /u&lt;TAB&gt;sr&lt;TAB&gt;</CODE></DIV>
      <P></P>
      <P>扩展为 cd /usr/src/ 。如果您只敲了cd /u<TAB>s<TAB>,'/usr'下匹配的('cd 
      /u*/s*')三个子目录将列出供您选择:'/usr/sbin'、'/usr/share'和'/usr/src'。</P>
      <P>因此,<TAB> 键可以很方便地用于根据前几个字母,来查找匹配的文件或子目录。比如,ls /usr/bin/zip<TAB> 
      将列出所有'/usr/bin'下面,以字符串'zip'开头的文件或子目录。当然,完成这类任务还有更厉害的命令,但这个方法确实很管用。</P>
      <P>另外,碰到长文件名时就显得特别方便。假设您要安装一个名为'boomshakalakwhizbang-4.6.4.5-i586.rpm'的 
      RPM 包,您输入 rpm -i boom<TAB> ,如果目录下没有其他文件能够匹配,那 shell 
      就会自动帮忙补齐。<BR><CODE><BR>cd /u<TAB>sr<TAB>l<TAB><BR></CODE></P>
      <P>将扩展成 cd /usr/src/linux 
      ,并等待继续。'/usr/src'中有两个匹配的目录:'/usr/src/linux-[...]'、'/usr/src/linux'。如何告诉 
      shell 您想要后面的那个呢?只要跟一个斜线(/ ,slash),就可以选择后面的那个了。</P>
      <P>假如您不确定是'/usr/src/linux/Documentation'还是'/usr/src/linux/documentation'。而您知道,Linux 

⌨️ 快捷键说明

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