标题: [转帖]新手入门——shell入门 |
前言 使用 Shell 以下将介绍并解释基本的 shell 命令和机制。 第一篇:超级工具/Terminals,xterms 和 Shells 一、超级工具 您或许听过这样的论调:命令行(the mommand line)早就已经过时了,那东西神秘兮兮的,等等。有些人甚至觉得操作系统中应该没有这些命令才好。 事实是上,您可以不懂任何 shell ,就能使用 Linux 。您启动系统后可以直接进入 X Window ,最后在 X Window 下关机。 我坚信,用 Linux 而不懂 shell ,就象开车只会用头档(first gear)一样。当然,最初看起来,直接而简单,在大多数情况下都管用。但速度慢,而且无法真正体验驾驶的乐趣。 对,命令行很有趣。就象用一大堆收集到的积木,竟可以完成许多意想不到的创举,一些极其复杂的工作,只需几行命令就可以解决。这是因为,在 Unix 中,shell 可不是简单的命令解释器(典型的有 Windows 中的 DOS ),而是一个全功能的编程环境。 这并不意味着 shell 非常容易学通,您知道,好事多磨,这还是要花点工夫的。;-) 但请相信我,这绝对值得。您在很短时间内,就能被一大帮门外汉吹捧为 Unix wizard(奇才) 。*grin* 二、为了说明 shell ,这里需要一些背景知识。 1、Terminals, xterms 与 Shells 追溯到 Unix 诞生的那个年代,当时还没有现在流行的"个人计算机"。被称为计算机的机器,还是吞吐磁带与 magnetic memory (用术语'core'来表示系统 memory)的庞然大物。DEC 公司(现在的 Compaq)推出的 PDP-11 ,体积小(被称为 mini)而且价格底,在大学中引起了巨大的反响,很多学校直到那时才买得起一台计算机(PDP-11 物美价廉,只有 10000$)。 这些机器的操作系统由汇编语言、机器语言写成,所以运行起来效率很高,但都无法移植(unportable)。每家计算机公司都给自己的机器配上独有的操作系统,然后再销售。 这种笨拙的作法很快就被人们意识到了,于是就开始兴建一个可以在不同品牌机器上运行的操作系统。1969 年,Ken Thompson 开始写后来成为 Unix 的第一行代码。(Thompson 曾经参加了一个项目:MULTICS,Unix 是与这有关的一个玩笑词) 其实,Dennis Ritchie 为这个新的操作系统设计了一种新的编程语言-- C 语言后,事情才真正开始。 虽然 Unix 的效率不及原来的操作系统,但有三个突出的优点:可以任意移植到其他机器,其中的 C 语言大大简化了编程,而且这些都 free 。很快,全美国的大学都忙着开始为机器安装 Unix 。 2、终端(Terminals) Unix 是可以在许多种机器上运行的操作系统,但人们又如何使用这些机器呢?他们是通过哑终端来连接到这些机器,也就是用键盘、显示器及足够的 electronics (电子元件)组成的机器与中央计算机(central computer)相连。在这些终端上,用户可以敲字符(teletypy),这就是字符串'tty'表示终端设备文件,和'getty'命令的名称来历。 您可能会问,现在这些东西都在哪儿。 这些终端的厂家无法达成一项最终标准,这导致每种牌子的终端都有各自的键盘布局、各自的在屏幕上显示字符的方法、发送或接收什么信号表示什么字符、控制代码等等。 为了避免这些混乱,就创建了一个含有所有不同终端特性的(capability)文件,这就是'termcap'。用一个工具打开'/etc/termcap'瞧瞧,可别吓着了 ;-) 。 Linux 终端大多数用'vt100'或'linux'作为终端类型。 3、xterms 在八十年代初期,产生了一个 Unix 的图形子系统-- the X Window System 。九十年代早期,为了更好地实现基于 Intel 的 Unix 类系统上(如FreeBSD、NetBSD、Linux)的应用,产生了一个系统分支-- XFree86 。 X Window 中一个很大的好处是可以运行多个虚拟(virtual)终端。甚至在 X Window 下就有这么个应用程序--'xterm'。您将发现'xterm'和'virtual terminal'在很多情况下都是一样的。有的地方说'打开一个 xterm',其实您不是非要用'xterm'程序,其他的终端模拟器(terminal emulator),如 rxvt、konsole、aterm、eterm、wterm 等等,一样有效。 终端模拟器(又称为虚拟终端)通过伪(pseudo) tty 设备-- pty 与系统相连,并且使用自己的显示标准-- xterm 。这导致不同的终端模拟器可能在一些按键或程序上存在细小的差别,这取决于模拟器多大程度上遵守了'xterm'的显示标准。 4、Shells 为了在终端中运行程序,需要 shell 。shell 是操作系统的一部分,用来与用户打交道,并且可以用来协调各个命令。 第一个真正的 Unix shell -- 'sh',亦称为'Bourne shell',诞生于 1975 年,作者是 Steve Bourne 。很快,出现了其他 shell ,如基于原始'Bourne shell'的'ksh'、'zsh',后者常用作专属 Unixes 系统中的标准 shell ;也有一些从 C 语言中衍生出来的 shell ,如'csh'或'tcsh'。 在 Linux 中,标注的 shell 是'bash',即 the GNU Bourne-Again Shell (有点玩笑的味道……)。这个 shell 功能非常强大(甚至有人觉得太庞大了),压缩的 man page 就有 50 KB 。 三、Shell 起步 首先,有一点小说明:在平常应用中,建议您不要用'root'帐号运行 shell ,如果您还是新手,这一点尤其要注意。作为普通用户,不管您有意还是无意,都无法破坏系统;但如果是'root',那就不同了,只要敲几个字母,就可能导致灾难性后果。 当您登入系统或打开一个 xterm 窗口,首先看到的是提示符(prompt)。Red Hat Linux 的标准提示符包括了您的用户名、登入的主机名(没有设置的话,是'localhost')、当前所在的目录(working directory)、提示符号: [tom@belbo tom]$ 我以用户名'tom'登入名为'belbo'的主机,当前在我的 home 目录--'/home/tom'中。'root'的提示符: [root@belbo root]# 除了不同的用户名外,提示符号由'$'变成了'#'。根据 Bourne shell 的传统,普通用户的提示符以'$'结尾,而超级用户用'#'。 提示符的每个部分都可以定制,您在后面将有更深的了解。 要运行命令的话,您只要在提示符后敲进命令,然后在按 键。shell 将在其路径中(详情见后)搜索这个命令,找到以后就运行,并在终端里输出相应的结果(如果有的话),命令结束后,再给出新的提示符: [tom@belbo tom]$ whoami tom [tom@belbo tom]$ 顺带指出,当您敲 ENTER 时,光标(cursor)在哪里并不要紧,因为 shell 总是会整行地读取。 基本的命令有:'ls'(list directory ,列出目录内容)、'cp'(copy ,复制)、'mv'(move / rename ,移动/重命名),'cd '(change directory ,改变目录),这些命令后面都可以跟上一帮可选项,这方面 man page 有详细的介绍(man ls, man mv 等等)。 在您动身前往 shell 领地前,这里有几个术语(terminology)的简短说明。命令可能带一些可选项(options)、参数(arguments): mv -i file dir 其中'-i'是命令'mv'的一个可选项,而'file'和'dir'则是参数。所有可选项在该命令的 man page 都中有详细的介绍(此例中用 man mv),而参数则由您提供。可选项决定命令如何工作,而参数则用于确定命令作用的目标。 到目前为止,介绍得有点象许多人厌恶轻视的 DOS shell ,但伴随着下面的介绍,您将会有新的体验。 第二篇:自动补齐/命令行的历史记录/编辑命令行/可用的 Shell 快捷方式 Unix (及后继者 Linux)在命令行下面诞生,因此,Unix 中的命令行有许多非常实用的功能。在本篇中,我们将来作一些了解。 一、自动补齐; 如何用'cd'(改变目录,change directory)最快地从您当前所在的 home 目录跳到'/usr/src/redhat/'呢? cd /usrr 这称为'命令行自动补齐'(automatic command line completion),这在平常应用中是不可缺少的。让我们仔细看看这个例子: cd /u 扩展成了 cd /usr/ ,很简单吧。下面的 cd /usr 扩展为 cd /usr/src/ 。如果您只敲了cd /us,'/usr'下匹配的('cd /u*/s*')三个子目录将列出供您选择:'/usr/sbin'、'/usr/share'和'/usr/src'。 因此, 键可以很方便地用于根据前几个字母,来查找匹配的文件或子目录。比如,ls /usr/bin/zip 将列出所有'/usr/bin'下面,以字符串'zip'开头的文件或子目录。当然,完成这类任务还有更厉害的命令,但这个方法确实很管用。 另外,碰到长文件名时就显得特别方便。假设您要安装一个名为'boomshakalakwhizbang-4.6.4.5-i586.rpm'的 RPM 包,您输入 rpm -i boom ,如果目录下没有其他文件能够匹配,那 shell 就会自动帮忙补齐。 cd /usrl 将扩展成 cd /usr/src/linux ,并等待继续。'/usr/src'中有两个匹配的目录:'/usr/src/linux-[...]'、'/usr/src/linux'。如何告诉 shell 您想要后面的那个呢?只要跟一个斜线(/ ,slash),就可以选择后面的那个了。 假如您不确定是'/usr/src/linux/Documentation'还是'/usr/src/linux/documentation'。而您知道,Linux 是区分大小写的。如果已经仔细读过前面部分的话,您想到可以用: cd /usrl/d 扩展成了'/usr/src/linux/drivers/',因此应该是'Documentation'(大写的'D')。 这种补齐对命令也有效: [tom@belbo tom]$ gre grecord grefer grep [tom@belbo tom]$ gre 在这里 shell 将列出所有以字符串'gre'开头的已知命令二、命令行的历史记录 通过按向上方向键,您可以向后遍历近来在该控制台下输入的命令。用向下方向键可以向前遍历。与 SHIFT 键连用的话,您还可以遍历以往在该控制台中的输出。您也可以编辑旧的命令,然后再运行。 按 后,shell 就进入"reverse-i(ncremental)-search"(向后增量搜索)模式。现在输入您要找的命令的首字母: (reverse-i-search)`':. 敲入 'i'可能会变成: (reverse-i-search)`i': isdnctrl hangup ippp0 如果您再按 键,上面的命令将再次执行。而如果您按了向右、向左方向键或 ,上面的命令将回到普通的命令行,这样您就可以进行适当编辑。 编辑命令行 通过光标和功能键(Home、End 等键),您可以浏览并编辑命令行,如果您需要,还可以用键盘的快捷方式来完成一般的编辑: l :删除从光标到行尾的部分 l :删除从光标到行首的部分 l :删除从光标到当前单词结尾的部分 l :删除从光标到当前单词开头的部分 l :将光标移到行首 l :将光标移到行尾 l :将光标移到当前单词头部 l :将光标移到当前单词尾部 l :插入最近删除的单词 l :重复前一个命令最后的参数。 例如:您用命令 mkdir peter/pan/documents/tinkerbell 新建了一个目录,现在您向用命令'cd'进入该目录,您可以用 cd !$,shell 将把前一个命令'mkdir'的参数添加到现在的'cd'后面。 当您更深入了解Linux后,将看到这些快捷方式在其他应用程序下输入时,有时也有效,比如,在浏览器中的输入框中。 三、可用的 Shell 快捷方式 Red Hat Linux 带有不少快捷方式,其中一部分是 bash 原来就有的,而还有一些则是为您预先设置的(在后面您将看到如何设置)。 由于 home 目录是每位用户的活动中心,许多 Unix 对此有特殊的快捷方式。 '~'就是您的 home 目录的简写形式。我们假设您在其他目录,想把一个名为'sometext'的文件复制到您 home 目录下的 'docs'子目录中。除了输入: cp sometext /home/myusername/docs 您还可以用简写: cp sometext ~/docs 理论上,这也可以应用在命令'cd'上。无论当前路径在哪里,cd ~ 将回到您的 home 目录。其实还可以简化,只要键入 cd ,就可以返回 home 目录了。 Red Hat Linux 为您提供了一些预先设置的快捷方式(称为'别名',aliases),比如: l ll :将执行'ls -l -k'(以长格式列出目录内容,包括一些文件属性,并以 KB 而不是 byte 为单位显示文件大小) l ls :将执行'ls -F --color=auto'(列出目录内容,加上文件类型标识,并使用颜色) 现在,您应该对 shell 及一些快捷方式有了进一步的了解,下面我们来看看除了应用一些简单的命令,shell 还能作什么。 第三篇:命令的排列/命令的任务调度/命令的替换 一、命令的排列 现在您将看到一些常用的命令排列。您可能想在一行中给出所有命令,然后就可以把注意力转移到其他地方。没问题,shell 允许您在不同的命令之间,放上特殊的排列字符(queuing characters) 。这儿将介绍最常用的两种。 请注意,为了看起来更清楚,我在这些字符两旁加了空格。而在实际应用中,您不一定要这么做,'ls -a ; du -hs'和'ls -a;du -hs'的效果是一样的。 command1 ; command2 先执行 command1 ,不管 command1 是否出错,接下来执行 command2 。 例如: ls -a ; du -hs 将先在屏幕上列出目录中的所有内容,然后列出所有目录及其子目录所占磁盘大小。 command1 && command2 只有当 command1 正确运行完毕后,才执行 command2 。 例如: ls -a bogusdir && du -hs 将返回 ls: bogusdir: No such file or directory ,而'du'则根本没有运行(这是因为您没有'bogusdir'目录)。如果您将符号换成了';','du'将被执行。 为了进一步说明';'和'&&'的区别,及一般命令排列的用处,下面举一个经典的例子:Linux 内核的编译和安装。 要编译、安装 Linux ,您需要执行一串命令:'make dep'、'make clean'、'make bzImage'、'make modules'、'make modules_install'和'make install'。如果要等一个命令完成后,再输入下一个,再等,再输入,……,那就太麻烦了。另一方面,每个命令只有当前面的命令都正确执行完毕后,才能开始执行。如果您用';'来排列命令,则即使有命令执行失败,后面的也照常运行,最后,您可能在'/boot'目录下得到一个有问题的内核映像(image)。而用'&&': make dep && make clean && make bzImage && make modules && make modules_install && make install 不需要中途打断,就可以编译内核及其模块,并完成后面的安装。 二、命令的任务调度 当您在终端里运行一个命令或开启一个程序时,终端要等到命令或程序运行完毕后,才能再被使用。在 Unix 中,我们称这样的命令或程序在前台(foreground)运行。如果您想在终端下运行另一个命令,则需要再打开一个新的终端。 但这里还有一个更优雅的办法,称为任务调度(jobbing)或后台(backgrounding)。当您运用任务的调度或将命令置于后台,终端就立即解放了,这样一来,终端立即就可以接受新的输入。为实现这样的目的,您只需在命令后面添加一个 & : gqview & 告诉 shell 将图片查看器'GQview'放到后台去执行(即当成 job 来运行)。 命令 jobs 将告诉您,在这个终端窗口中,运行着哪些命令与程序: jobs [1]+ Running gqview & 当您要关闭终端窗口时,这一点就很重要,因为关闭终端将导致所有在其中运行的任务都将被中止,在此例中,如果您关闭了终端,由这个终端开启的 GQview 程序也将被关闭。 但如何将前台运行的一个程序放到后台去?没问题: gqview [2]+ Stopped gqview bg [2]+ gqview & 组合键 将挂起终端中正在运行的程序,然后您就可以用 bg 命令将其放到后台去执行。 请注意,在后台运行图形应用程序有时候是有用处的,这样可以在终端下显示这个程序的出错信息,虽然这对您可能没有直接的帮助,当如果碰到了麻烦,向别人询问时,这些出错提示就有用武之地了。 一些 |
<marquee>我很菜,但我正在努力</marquee> |
|
|||||
|
发表评论
-
perl
2007-11-07 05:36 835http://www.xlab.net/jochen/perl ... -
diplompruefung
2007-08-02 20:05 840Allgemeine VWL I für WiWis [W ... -
GUI
2007-07-13 05:08 888 -
Statechart diagram
2007-07-13 04:50 1841A statechart diagram shows the ... -
Statecharts
2007-07-13 04:39 980Statecharts Many situations req ... -
UML Modeling for Java with Rhapsody
2007-07-13 04:38 1044UML Modeling for Java with Rhap ... -
Building a Statechart Diagram
2007-07-13 04:33 1695Building a Statechart Diagram T ... -
State Chart XML (SCXML): State Machine Notation for Control
2007-07-13 04:12 1621State Chart XML (SCXML): Stat ... -
Diplomarbeit Writting Materials
2007-07-05 20:09 1296Designing a soft ... -
diplomarbeit
2007-06-10 21:32 3461UML. class , interface, re ...
相关推荐
本文将深入探讨“LINUX_UNIX SHELL.rar”压缩包中可能包含的shell命令知识,旨在帮助用户更有效地在Linux和UNIX环境下工作。 首先,Shell是Linux和UNIX系统中的一个命令行解释器,它允许用户通过键盘输入指令来执行...
高级——配置——编辑器显示——语法着色——打开WORDFILE.UEW——将unixshell.uew中的内容复制到WORDFILE.UEW文件的末尾(与之前内容以空行隔开)
UNIX Shell 基础知识点 UNIX Shell 是 UNIX 操作系统的用户界面,充当着命令解释器的角色,负责解释执行用户命令、执行多任务、提供综合性的编程语言功能。下面是 UNIX Shell 的基础知识点: 1. Shell 概述:UNIX ...
Beginning with the description of operating system in general the book discusses features that made Unix the most suitable operating system of its time. An overview of file management in Unix and ...
unix-shell.chmunix-shell.chmunix-shell.chmunix-shell.chmunix-shell.chm
Unix Shell是Unix操作系统中的一种命令解释器,它作为用户与操作系统内核之间的接口,使得用户可以通过文本命令来操作计算机。Unix Shell不仅提供了基本的文件管理功能,还支持强大的脚本编程,使得用户能够自动化...
在IT行业中,`shell.dat` 文件通常与命令行接口(CLI)或外壳程序有关,特别是Linux和Unix系统中的Bash Shell。`shell.dat` 文件可能包含脚本、命令历史记录或者与Shell相关的配置信息。然而,"shell.dat生成器" 指...
"Linux与UNIX Shell编程指南" Linux与UNIX Shell编程指南是计算机科学领域中一本经典的指南手册,旨在帮助读者快速掌握Linux与UNIX操作系统下的shell编程技术。下面是从该书中生成的相关知识点: 1. Shell概述 ...
UNIX.shell.part1 total 2 parts, 80MB unzipped.
根据提供的文件信息“Unix.Shell.Commands.Card.pdf”,我们可以了解到这份文档是关于Unix Shell命令的参考指南,由卡迪夫大学计算机科学系的Robert Evans编写。接下来,我们将详细解析该文档中涉及的重要知识点。 ...
Unix Shell是Unix操作系统中最常用的命令解释器,它作为用户与操作系统内核之间的接口,使得用户可以通过文本命令来执行系统操作。Unix Shell不仅提供了基本的文件管理和系统控制功能,还允许用户编写脚本程序,实现...
中文件版unix shell教程
《Unix Shell by Example》这本书是Unix/Linux系统用户和管理员的重要参考资料,它深入浅出地介绍了Unix Shell的使用方法。Shell是Unix系统中的命令解释器,是用户与操作系统交互的桥梁,通过Shell脚本,我们可以...
《掌握Unix Shell脚本编程》是由Randal K. Michael撰写的一本专著,专注于介绍Unix Shell脚本编程的精髓。这本书由Robert Ipsen担任执行编辑,Carol Long负责策划编辑,Scott Amerman负责发展编辑,Angela Smith负责...
Shell Programming in Unix, Linux and OS X is a thoroughly updated revision of Kochan and Wood’s classic Unix Shell Programming tutorial. Following the methodology of the original text, the book ...
【awk】1-awk基础篇(又名UNIX.Shell.awk).doc
3 following books: (1)Classic.Shell.Scripting.pdf (2)Mastering Unix Shell Scripting.pdf (3)Unix Shell Programming. 3rd Ed.pdf
Linux和Unix Shell编程是操作系统管理、自动化任务执行以及系统集成中的关键技能。这些Shell包括Bash(Bourne-Again SHell)、KornShell(ksh)和C Shell(csh),它们为用户提供了与操作系统交互的强大接口。本文将...
由于提供的内容中仅包含标题、描述、标签和下载链接的重复信息,并没有具体到Linux和UNIX Shell程序设计的技术细节,因此无法直接从这部分内容中提取出符合要求的知识点。为了满足您的要求,我将基于标题和标签中...