linux系统知识

第1章Linux操作系统
Linux是用于像IBM兼容机等带有386,486或奔腾微处理器的微机上的一
种操作系统,它也有针对DEC Alpha系统,Macintosh系统,及Sun系统的多种版
本.Linux是在90年代早期,被 Linus Torvald和其它遍布世界各地的编程人员
共同开发的,作为一种操作系统,它完成了像DOS或 Windows的同样功能.
然而,Linux更以灵活性及有效性而著称.大部分的微机操作系统,像DOS,一直
都是在受限的微机上开发的,仅最近才变得能在更多种类的机器上使用.像这样
的操作系统需要不断地升级以适应微机硬件的发展,而Linux的开发却是不同
的.Linux是几十年来被用在主机及单机上的,现在已成为工作站首选系统的Unix
的微机版本.Linux使得Unix的快速,高效和灵活性能够用于你的微机,并能更
好地利用个人电脑所提供的资源.
Linux以一个好的价钱完成了一切,它是免费的.不像商用的Unix操作系统,
它是具体由Free Software Fundation在公共许可下免费分配的,任何人都可以
免费来获得它.Linux是有版权的,并不是一个公共的财产,然而,GNU公共许可
和公共财产几乎是同样的效果.这个使用许可使得Linux保持了免费,同时又具
有标准化.仅有一种Linux标准.
Linux是免费的事实有时给人一种误解:Linux不完全是一个专业的操作系统,
而事实上,Linux是Unix的PC版本,正确地评价Linux,你应该了解Unix操作系
统发展的特殊环境,Unix不像大部分其它操作系统.是在一个科研和学术的环境
下开发出来.在大学和实验室里,Unix是可选择的系统,在过去几十年里,Unix的
发展和整个计算机及通讯的革命相一致.计算机专业人员经常用Unix开发新的
计算机科技.例如为Internet的开发.尽管它是一个高科技的系统,从一开始,Unix
就被设计成非常灵活的系统.Unix系统本身可以被容易地修改产生不同的版本.
事实上,许多厂商坚持Unix的商业版本,IBM,SUN和HP都销售并坚持它们自己
的Unix版本,满足他们自己的特殊需要.Unix系统在设计上的可继承的灵活性
从不减弱它的质量,事实上,正是它的多重版本,使它可以适应任何实用的环
境,Linux就是在这种情况下开发出来的,从这个意义上说,Linux是Unix的另一版
本-为PC的版本.由计算机专业人员在科研环境下的开发,反映了Unix版本通
常被开发的方法,Linux具有公共权限并且是免费的事实反映了在科研机构的开
发人员对公共服务的热心支持.
作为对Linux的介绍,这章讨论了Linux作为一种操作系统,Linux和Unix的
历史和Linux的整个设计过程.这章也介绍了如何更好地使用本书.人们经常
带着不同背景开始学Linux,一些特点看上去十分熟悉,而另一些会有些不同,无论
你的背景如何,本书通过严谨的结构提供给读者对Linux操作系统的清楚理解,从
而体现出Linux的各种不同特点.
1.1 操作系统和Linux
一个操作系统是为用户管理硬件和软件的一个程序,操作系统最初是设计成
执行重复管理硬件的任务.这些任务集中在文件管理,运行程序和从用户得到命
令.你通过一个用户界面和操作系统相联系,这个用户界面允许操作系统接收来
自用户的中断指令,你只需要发送一个指令给操作系统,就可完成像阅读一个文件
或打印一份文件等的任务.一个操作系统的用户界面可以用只输入命令行一样
简单,也可以用选择菜单和图标一样复杂.
一个操作系统也管理软件应用程序,去执行像编辑文件或计算等不同的任务,
你需要专门的应用程序.一个编辑器是一个应用程序的例子.一个编辑器允许
你去编辑一个文件,改变或增加新的文本.这个编辑器本身是一个由计算机可执
行的指令所组成的程序.为了应用这个程序,必须把它装进内存,然后它的指令被
执行.操作系统控制了所有程序的装入和执行,包括所有应用程序.当你打算用
一个编辑器时,只要简单地指示操作系统去装入编程器应用程序并执行它.
文件管理,程序管理和用户交互是所有操作系统传统的共性.Linux像所有
Unix的版本一样,增加了两个特点,是一个多用户和多任务的系统.作为一个多
任务系统,你可以要求系统同时执行多个任务,例如,当其它文件被打印时,你可以
编辑另一个文件,你编辑之前,不用等打印工作被完成.作为一个多用户系统,几
个用户可以同时注册在一个系统中,每个用户通过终端和系统相连.
操作系统最初是为有效地支持硬件而设计的,当计算机首先发展了,他们可能
会受操作系统的限制.操作系统必须能实现计算机的绝大部分资源,所以操作系
统是为硬件,并非为用户设计的,操作系统倾向于呆板,不灵活,使用户必须适应硬
件效率的要求.
而Linux,因为来源于Unix,所以被设计的很灵活,做为Unix的一个版本,Linux
和Unix享有同样的灵活性.其灵活性来源于Unix的早期设计.在六十年代末
和七十年代初Unix操作系统被工作在AT&T贝尔实验室的Ken Thompson开
发出来.它结合了许多操作系统设计方面的新发展,开始,Unix被设计成为研究
人员的操作系统,一个主要目标是去产生一个能支持科研人员变换要求的系统.
为了做到这一点,Thompson必须设计能处理许多不同种类任务的操作系统,灵活
性变得比硬件效率更重要.像Unix一样,Linux已经能处理用户可能面临的各种
任务.
这个灵活性允许Linux成为和用户相通的操作系统,用户不受与操作系统呆
板联系的限制.取而代之,操作系统成为了提供用户能利用的一套高效工具,面向
用户的科学含义是你能对系统配置或编程以满足你的特殊需要.用Linux,操作
系统变成了一种操作环境.
1.2 Linux和Unix的历史
做为Unix的一个版本,Linux的历史自然起始于Unix,60年代末期.关于新
的操作系统技术有一个共同的努力.在1968年,一些来自通用电气公司,贝尔实
验室和麻省理工学院的研究人员开发一个名叫Multics的特殊操作系统的研究项
目.Multicsd在多任务文件管理和用户连接中综合了许多新概念.在1970年
AT&T的贝尔实验室研究人员Dennis Ritchie和Ken Tompson,在采用很多
Multics特点的基础上开发了Unix操作系统.它满足了系统对科研环境的要求,
使它运行在小型机上,从它的产生开始,Unix是一个有价值的高效多用户和多任
务的操作系统.
Unix系统在贝尔实验室开始变得流行,并且越来越多的研究人员开始使用
它,1973年,Dennis Ritchie和Ken Tompson一起为又用C语言为Unix编写了
程序代码.Dennis Ritchie贝尔实验室的后起之秀,开发了C编程语言作为程序
开发的一种灵活工具,C语言的优点之一是它能够通过一套编程命令直接访问一
台计算机的硬件结构.到此为止,一个操作系统必须为每一类计算机上用硬件为
基础的汇编语言,专门改写C语言允许Dennis Ritchie和Ken Tompson写了能
用C编译器在不同计算机上编译的Unix操作系统的统一版本,在效率方面,Unix
操作系统变成了可移植的操作系统,能够不必重新编程运行在各种不同的计算机
上.
Unix从满足个人的需求设计开始,逐步成长为由许多不同开发商所支持的标
准软件产品如:Novell和IBM,最初,Unix被当成科研产品.第一个Unix版本是
免费由许多知名大学的计算机系使用的.在1972年贝尔实验室开始发放商业
版本并且给不同的用户授权使用这个系统.使用者之一是加州大学伯克莱分校
的计算机系.伯克莱给系统增加了许多新的特点,后来成为了标准.1975年伯
克莱由下属部门BSD发行了自己的Unix版本.Unix的BSD版本成为AT&T
贝尔实验室版本的主要竟争者.而其它的被独立开发出的Unix版本也开始萌
生.
1980年微软公司开发了叫做Xenix的Unix PC版本.AT&T几个Unix的
科研版本1983年,它们发行了第一个商业版本.名叫SYSTEM 3后来被成为对
商用软件产品重要支持Systen v所代替.
同时Unix的BSD版本不断发展,在70年代末期,BSD Unix成为了国防部的
高科技研究机构所使用的科研项目的基础,其结果,伯克莱发行了一个叫做BSD
Release 4.2的有效版本.
它包括了高级的文件管理和基于TCP/IP网络协议的网络特点.现在,TCP/IP
被Internet所使用.BSD Release 4.2被许多商所采用,例如SUN
Microsystems.
Unix不同版本的出现导致了Unix标准的需要,软件开发商不知道他们和程
序运行有哪个版本上比较适合,到80年代中期,两个竞争的标准出现了.一个是
基于AT&T的Unix版本,另一个是BSD版本.在今天的书店里你能发现分别适
用于这两个版本的不同Unix书,一些是System V Unix,另一些集中在BSD
Unix.
AT&T建立了一个叫Unix系统实验室的新组织,它的作用就是综合Unix的
不同版本,集中开发一个标准系统,1991年,Unix系统实验室综合了所有System
V release3, BSD release 4.3, SUN OS和Xenix的所有特点.发行了System V
release 4. 为了与System V release 4竞争,一些其它公司如IBM和惠普建立了
Open Software Foundation(OSF) 去产生自己的Unix标准版本,继而出现了两
个标准商业版本OSF版本和System release 4.1993年,AT&T把它的Unix
转卖给NOVELL公司.Unix系统实验室成为了Novell的Unix系统小组的一部
分.Novell发行了基于System V release 4的自己的Unix版本叫Unixware,它
可以和Novell公司的Netware系统相联.SUN公司已经把System V release 4
融进了它的SUN系统发行了Solaris.两个相互竞争的Unix使用的图形用户界
面,一个叫Motif,另一个叫Openlook已经合并为一个新的工作平台标准,叫做共
同工作平台环境(CDE).通过不断发展,Unix保留下来一个大的能有效运行在工
作站和小型机上的操作系统.Unix的一些版本主要被设计为工作站环境,SunOS
主要是为SUN工作站开发的.AIX是为IBM工作站开发的,然而,由于PC变得
更有效,因此开发Unix的PC版本就开始了.Xenix和System V/386是为IBM
及其兼容机而设计的Unix商业版本.AUX是运行在Macintosh下的Unix版本.
Unix固有的可移植性使它几乎能在任何类型的计算机中被找到:工作站,小型机
或者大型机.固有的可移植性使得产生Unix的PC版本成为可能.Linux是专
门为Intel为基础的个人计算机所设计的.它起源于荷兰赫尔辛基大学(HELSINKI)
一个计算机系学生Linus Toyvald的个人研究项目.那时,学生们使用一个强
调不同Unix特点的Minix程序,Minix是由Andrew Tannebaum教授开发的,广
泛分布在Internet上给全世界的学生使用.Linus打算为Minix用户产生一个有
效的Unix PC版本.他称它为Linux.1991年发行了Linux 0.11版本.Linux
广泛分布于Internet,后来的几年,其它的编程人员综合现有的标准Unix系统中
出现的大部分应用程序和特点修改并增加了它的内容.所有主要的窗口管理器
已和Linux有了接口,Linux有所有的Internet工具,像ftp,telnet和SLIP,它也有
整套的程序开发工具,象C++编译器和调试器.虽然拥有全部特点,Linux操作系
统保持了小,稳定和快速.在最简单的格式下,它可以运行在仅4MB的内存.
尽管Linux是开发在免费的及Internet开放环境中,它仍具有商业Unix版本
的标准,因为前几十年里,Unix版的大量出现,电子电气工程协会(IEEE)在美国标
准化协会(ANSI)开发了一个独立的Unix标准,这个新的ANSI Unix标准被称做
为计算机环境的可移植性操作系统界面(PSOIX).这个标准限定了Unix系统如
何进行操作,像系统调用有了专门的详述.PSOIX限制所有Unix版本必须依赖
大众标准,现有大部分Unix和流行版本都是顺从POSIX,Linux从一开始就是遵
循POSIX开发出开的.
1.3 Linux总览
像Unix一样,Linux一般被分成四个主要部分:内核,Shell,文件结构和实用工
具.内核是运行程序和管理像磁盘和打印机等硬件设备的核心程序.它从用户
那里收到命令并把命令送给内核去执行.文件结构是文件放在磁盘等存贮设备
上的组织方法.文件以目录的形式被组织每个目录可能包含许多子目录,其中有
许多文件.
内核,Shell和文件结构一起形成了基本的操作系统结构.使用这三个项目,
你就可以运行程序,管理文件以及使用系统,另外,Linux还有被称为实用工具的软
件程序,实用工具被认为是一个系统的标准特征.实用工具是专门的程序,像编辑
器编辑器交互程序,执行标准的计算操作等,你甚至可以产生自己的工具.
1.3.1 Shell: Bourne, Korn 和C-Shell
Shell提供了用户和内核的界面,它可被描绘为一个解释器,它解释由用户输
入的命令并送他们到内核, 内核界面是非常简单的,通常你输入一个命令然后按
回车键就可完成,你输入命令的一行经常被指定为命令行,你将发现命令行能变得
十分复杂.
代替命令行界面,Linux提供了叫做X-Windows的图形用户界面(GUI).它
有很多供你使用的窗口管理器,窗口管理器的操作就像Windows和Mac GUIS,
你有窗口图标和菜单,所有的管理通过鼠标控制.两个流行的窗口管理器是Free
Virtual窗口管理器(fvwm)和Open Look窗口管理器(olwm),Motif窗口管理器也
可获得,但Motif是一个有产权的程序,必须分开购买,另外窗口管理器,你必须使
用文件和程序管理器,有各种文件和程序管理器是可获得的,例如OpenLinux提
供了一个高级的文件管理器和程序管理器,可使用图标栏和目录夹.
尽管一个窗口管理器是一个灵活的管理界面,它真的只是一个Shell 的界面,
窗口管理可通过它收到的命令到达Shell,实际是Shell解释这个命令并送它到内
核.图1-1表明了Shell到内核和其它系统成员的关系.
图1-1内核,Shell和用户界面
Shell 不仅解释命令,它还提供了一个你可以配置和编程的环境. Shell也
有自己的编程语言,它允许你通过复杂的方法去编写Linux命令的程序.Shell
编程语言具有普通的编程语言很多特点,如循环结构和分支控制结构,你甚至可以
产生和应用程序一样有效的Shell程序.
每个Linux系统的用户有他或她自己的用户界面或Shell,能满足他们自己专
门的Shell需要,从这个意义上说,一个用户的Shell不仅是一个用户控制的操作
环境.
几年以来,几种不同的Shell被开发出来,当前有三种主要的
Shell:Bourne,Korn,和C-Shell,其中Bourne Shell是贝尔实验室开发的,C-Shell
是SUN公司Shell的BSD版本,Korn shell是Bourne Shell的进一步增强.现
在的Unix版本,包括Linux在内,都包含了三个Shell,允许你去选择所喜欢的
Shell,Linux使用这些增强的公共版本.Bourne Again Shell, TC-Shell和Public
Domain Korn Shell. 当你开始Linux系统时,系统设置在Bourne Again Shell 下,
从那里,你能够转换到其他Shell.
1.3.2 文件结构:目录和文件
在Linux系统中,像DOS一样,文件由目录结构来组织.然而,不像DOS的
是,你有更多的灵活性去控制你的文件,整个Linux文件系统是一套大的相互关联
的目录.每个目录里面都包含文件,一些目录是系统保留的标准目录,你能为自己
的文件产生自己的目录,也可从容易地把一个目录下的文件移至另一目录下,你甚
至能移动整个目录并和系统中的其他用户共享目录和文件.用Linux,你可以设
置目录和文件的权限,以便允许和拒绝其他人访问他们.
实际上,每个用户的目录最终和其他用户的目录相连.目录是以根目录开始
被组织的等级树形结构.所有其他的目录最终是由第一个根目录派生出来.图
1-2表面了一个树形等级结构的例子.你可以浏览整个系统,进入任何可以对你
开放的目录.文件结构的相互关联性使分享数据变得容易,几个用户可以访问同
一个文件.
根目录是一个当你第一次设置你的Linux系统时所使用的特殊目录Linux是
一个多用户系统.操作系统本身的驻留程序存放在以根目录开始的专用目录中,
有时被指定为系统目录,在图1-2中那些根目录下的目录就是系统目录:man,bin
和user.其他的系统目录将在第5章中讨论.
图1-2Linux的文件和目录结构
1.3.3 实用工具:编辑器,过滤器和交互程序
Linux包含大量的工具.一些工具执行简单的操作,另一些是带有他们自己
整套命令的复杂程序,从一开始这些使用工具被分为三类:编辑器,过滤器,和交正
程序.当然不是所有的工具适合这三类.有的工具是执行文件操作和程序管理.
所有的Unix版本中都有一些标准编辑器可获得.包括:Ed,Ex,Vi和Emacs.
Ed和Ex是行编辑器,Vi和Emacs是全屏目编辑器.所有的标准编辑器都是由
早期不能处理像今天字处理程序中光标移动的机器中发展而来.尽管Vi和
Emacs有全屏编辑能力,但他们不能像由鼠标驱动的字处理器一样容易使用.Ed
和Ex是每次只能显示和编辑一行的行编辑器.尽管有这些限制,但编辑器的效
率是很高的,他有大量的命令和复杂的操作相结合.
另一套工具最好被描述为过滤器(filter),一个过滤器读取从用户文件或其他地
方的输入,检查和处理数据然后输出结果.从这个意义上说,他们过滤经过他们的
数据有不同类型的过滤器,一些用行编辑命令输出一个被编辑的文件.另外的一
个是模式寻找文件并以这种模式输出部分数据.还有一些执行字处理操作,检测
一个文件中的格式的命令输出一个格式化的文件,过滤器的输入可以不是一个文
件,它可以是用户从键盘敲入的数据,也可以是另一个过滤器的输出,过滤器能相
互连接,因此一个过滤器的输出能成为另一个过滤器的输入,甚至你可以编写自己
的过滤器程序,一个过滤器编程语言叫做awk,能使你编写自己的过滤器.Linux
也有一套允许你和本系统或其他系统用户相交互的工具,作为一个多用户系统
Linux必须和所有用户保持联系.显示的基本要求和文件系统的基本互联性使
得电子邮件系统容易实现.信息可由系统上的不同用户发送和接收,你甚至可以
一次对多个用户同时广播一个住处或直接与另一个相连进行一个实时对话.
Linux和Unix系统最重要的特点之一是它的多套Internet工具,Internet是
在Unix系统的基础上设计和开发出来的,像ftp和telnet等Internet工具最先实
现于Unix和BSD 版本.Darpanet是Internet的前身,用来联接美国国内各大
学的Unix系统,Linux包含了全套的Internet工具和他们提供了与Internet的直
接相连像SLIP网络浏览器像Netscape都在Linux可获得的.Internet上的Linux
软件和信息资源Linux是在Internet上通过共同合作开发出来的,没有一家公司
和机构控制Linux.
1.4 Internet上的Linux软件及信息源
当Linux用户决定共同完成一个项目的开发就开始进行,当完成以后,软件由
Internet上的一个ftp地址来发布.任何Linux用户可以到达这个网址来下载软
件.
软件是你需要编译的源代码形式或执行的二进制代码.软件包通常包括文
件和配置文件,OpenLinux使用叫做Redht Package Manager(RPM)的专门安装
工具.你能通过一个简单的命令rpm -i和所有的文件和配置文件去安装RPM
软件包(详见第3章).大部分当前的软件可在RPM软件包中获得.在
ftp.redhat/com/pub/contrib/i386中可发现大量的RPM软件包.在这儿,你应该
首先核对你想使用的软件的RPM版本,对于Linux软件和文件的主要ftp地址之
一是/pub/Linux目录下的Sunsite.unc.edu. Homesites是Linux软件最初被
邮寄的地方Mirror Sites 是这些Homesites的复制.ftp.caldera.com和
ftp.redhot.com 包含了Linux文件的扩展档案.表1-1列出了不同的ftp位置,通
过与网址相联,你可以获得其他的地址.例如Linux在World Wide Wed中是在
[url]www.sss.com/limux/resoures/web.html.[/url]其中特别有趣的是Limux Game Tome
中列出了为Linux的大部分流行游戏.在第3章3-2表中列出了几个资源网页.
大部分LINUX软件具有Free Sofeware Foundation 支持的GNU公共权限
下版权,经常被指定为GNU软件,GNU软件已经证明是可信的且是有效的.许
多Linux使用的工具,像C编译器,Shell和编辑器都是GNU软件的应用程序.
你将发现你的OpenLinux系统上安装GNU C++和Lisp编译器,Vi和Emacs编
辑器Bash和Tcsh Shell以及Tex和Ghostscript文件格式器,许多其他的GNU
软件应用程度也可在Internet的不同ftp地址上获得.表1-2,详细描述了从
Internet上下载软件应用程序及安装他们的过程.
近来,主要的软件公司,也开始开发他们的最流行应用程序的linux版本,你可
以从Internet的ftp地址:ftp.caldera.com来下载它,SUN公司的Java Linux版
本也可从ftp.Blackcown.org上获得一个Wordprefect的Linux版本也可获得.
Linux支持资料也在Internet上开发的,目前大部分支持资料可以从Internet
的ftp地址处下载,一个叫Linux Documentation Project 的Linux 项目由Matt
Welsh 带领,正在开发一套Linux说明,这个资料可由以下URL获
得:http//sunsite.unc.edu/mdw这份支持资料包括了用户指导介绍和管理指导,它
们可以用超文本或文本的格式获得.表1-3列出了这些指导,你能发现对于什么
是How-To文件的简单解释,How- To文件包括如安装打印和电子邮件等多个方
面.这个文件通常可从/pub/linux/doc/how-to 目录下的Linux ftp地址处获得.
在/pub/linux/doc目录下你能发现Meta-fao文件包含不同的Linux信息位置
的列表,在相同的位置和目录,你也可以下载Linux软件图(LSM),这是当前为
Linux所使用的大部分软件的列表.许多软件公司也有提供他们Linux应用程序
的网址,这些被列在表1-4中.
除了ftp网址,也有Linux Usenet newsgroups.通过互连网,你能登录Linux
Newsgroups去阅读其他用户的内容并邮寄你的信息.有很多的Linux
Newsgroups,都是以comp.os.linux开始的,特别能兴起初学者兴趣的是
com.os.linux.help,从那里你可以发出问题,表1-5列出了在Usenet上的不同
Linux Newsgroups.
大部分当前的标准Linux软件和文件已经包含在你的OpenLinux Lite CD-
ROM 中.How-To文件都是以HTML格式可获得的,所以你可以用网浏览器去
看他们,但是,在将来,你可能必须直接到达Linux和Internet网址去获得最新的信
息.
当前,唯一处理Linux的出版物是Linux Gournal ,你可以从下面的网址获取
关于它的信息:[url]www.sss.com/lg.[/url]也可以联系以下地址:
Linux Gounal
P.O. BOX 85867
Seattle WA 98145
206-527-3385
1.5 Linux 发行版本
尽管有唯一的Linux标准版本,但有几个不同的发行公司用略有不同的方法
Linux 包装和Linux 软件,每个公司然后用CD-ROM发行 Linux 软件包,后来发
行的可能包含程序的最新版本和新软件,其中一些是
Slackware,Rdehat,TAMU,Yggdrasil和 Infomagic.Open Linux Lite CD-Rom
包含Caldera的完整Open Linux Linux系统.一些供应部门,像Calderal和
Redhat 也用像字处理的商业软件或像Netscape的商用Internet服务器包在它
们的系统中.
1.6 OpenLinux
OpenLinux Linux Lite 光盘包含了Caldera 的完全 OpenLiux Linux 系统,
并包含所有GNU软件包的软件包以及X-Windows 窗口管理器 Internet 工
具, 它是和POSIX相一致的Caldera 提供它的免费的OpenLinux 系统,光盘被
指定为"lite", 因为 Caldera 也提供一些商用的,有产权的软件包,这些软件包
包括一些像Wordperfect, netscape 服务器和 Novell Netware 用户等产品,因
此,不是免费的.详见 caldera 的网址 [url]www.caldera.com.[/url]
1.7 总结
Linux 是由Linus Torvald 首先开发的,为386,486或奔腾处理器的PC系
列使用的一个 Unix 操作系统的版本,Linux 是以它的高效性和灵活性而著称,
带给你的PC全部的Unix特点,包括多任务,多用户的能力,Linux 是在 GNU 公
共权限下免费获得的,它是一个符合POSIX标准的操作系统.
你的Linux软件包不仅Linux操作系统,而且还包括了像编译器编辑器等的
应用软件.它也包括带有几个窗口管理器的X-Windows图形用户界面(GUI)允
许你用窗口,图标和菜单与系统相互交流.
Linux系统由内核,Shell文件结构和实用工具组成,内核是系统的心脏,它包
含直接管理计算机硬件的控制程序,Shell是用户界面,Shell收到来自用户的命令
并把它送入内核去执行.Shell能满足个别用户的需要.Shell甚至有自己的编
程语言用于对命令的编辑.文件结构包括放置文件的目录,目录提供管理文件的
方便途径,你能从一个目录移到另一个目录并且设置权限和其他用户共享其中的
文件.
标准的Linux系统都有一套叫做实用工具的程序,实用工具可分三类:编辑器,
过滤器,或交互程序,很多编辑器虽然效率很高,但使用起来下如现有PC编辑器
一样容易,过滤器是接收数据并产生数据被修改格式的专用工具.交互工具允许
你发送信息或收到来自其他用户的信息.usenet 和web等Internet具允许你
容易地实现信息服务.
表1-1Linux ftp 网址
Linux ftp 网址目录
sunsite.unc.edu/pub/linux
tsx-11.mit.edu/pub/linux
nic.funet.fi/pub/os/linux
Mirror.Sites
ftp.mcc.ac.uk/pub/linuxBritain
ftp.ibp.fr/pub/linuxFrance
ftp.dfv.rwth-aachen.de/pub/linuxGermany
kirk.bu.oz.au/pub/linuxAustralia
ftp.uu.net/systems/unix/linux
ftp.stack.nl/pub/linux
ftp.caldera.com/pub/linux
ftp.redhat.com/pub
ftp.cdrom.com/pub/linux/Concord,CA
ftp.siriuscc.com/pub/linux/Dallas,TX
lss.afit.af.mil/pub/linux/Dayton,OH
ftp.engr.uark.edu/pub/linux/Fayetteville,AR
ftp.spin.ad.jp/pub/linux/sunsite.unc.eduTokyo
续表
ftp.funet.fi/pub/linux/
ftp.ba-mannheim.de/pub/linux/Mannheim
ftp.nuri.net/pub/linux/Seoul
表1-2Linux 的应用程序
网址应用程序
[url]ftp://ftpredhat.com/Linux[/url] applications in RPM format(shareware)
pub/contrib/i386
[url]ftp://ftp.ncsa.eduMosaic[/url] Web Browser and Web Server
software for Linux
[url]ftp://ftp4.netscape.comNetscape[/url] Web Browser for Linux
[url]ftp://ftp.caldera.com[/url]
[url]ftp://ftp.blackdown.orgSun[/url]'s Java Development Kit for Linux(link to
mirror sites)
[url]http://www.redhat.comApplixware[/url] Office Suite
[url]http://www.sdcorp.comWordPerfect[/url] 7
wplinux.htm
[url]http://www.caldera.comNetscape[/url] Web Browser for Linux,Caldera
Office Suite,StarOffice
[url]http://sunscript.sun.comTk/Tcl[/url] Products
[url]http://www.uk.linux.org/Linux[/url] Commecial Vendors
InderLxCommercial.html
[url]http://www.xnet.com/Linux[/url] Applications and Utilites Page
~blatura/linapps.shtml
表1-3Linux的参考资料
网址描述
[url]http://sunsite.unc.edu/mdwLDP[/url] Web site
[url]ftp://wunsite.unc.edu/pub/LDP[/url] ftp site
Linux/docs/linux-doc-project
[url]http://www.iki.fi/liw/linux/sag/System[/url] Administrators'Guide
Homepage
[url]ftp://sunsite.unc.edu/pubLDP[/url] HOW-TO documents
Linux/docs/HOWTO
GuidesDocument Format and Web Sites
Linux Installation and GettingDWI,PostScript,and HTML(online)
Started Guide
Linux User's GuideDWI,PostScript,and PDF
Linux System Administrator'sDVI,PostScript,and HTML(online)
Guide
Linux Network Adimunstrator'sDWI,PostScript,and HTML(online)
Guide
Linux Programmer's Guidelinuxwww.db.erau.edu/LPG(link
through LDPWeb
site),DVI,PostScript,and
HTML(online)
续表
The Linux KernelDVI and PostScript
Linux Kernel Hacker's Guidewww.redhat.com/(link through LDP
Web site),DVI,PostScript,and
HTML(online)
表1-4Web 网址
网址描述
[url]www.ssc.com/linuxLinux[/url] Resources Web site
[url]www.caldera.comCaldera[/url] Web site
[url]www.redhat.comRedhat[/url] Web site
sunsite.unc.edu/mdwWeb site for Linux
DocumentationProject
[url]www.ssc.com/lgLinux[/url] Journal
[url]www.linux.orgLinux[/url] Organization
[url]www.li.orgLinux[/url] International Web site
[url]www.uk.linux.orgLinux[/url] European Web site
[url]www.blackdown.orgWeb[/url] site for Linux Java
[url]www.netscape.comNetscape[/url] Web site
[url]www.fokus.gmd.de/linuxWover[/url] Goods for Linux
[url]www.ssc.com/linux/resources/web.ht[/url]
ml
Linux on the World Wide Web
表1-5Usenet Newsgroups
新闻组描述
comp.os.linux.announceAnnouncements of Linux
developments
comp.os.linux.devlopment.appsFor programmers developing Linux
applications
comp.os.linux.devlopment.systemFor programmers working on the
Linux
operating system
comp.os.linux.hardwareLinux hardware spectifcations
comp.os.linux.adminSystem administration questions
comp.os.linux.miscSpecial questions and issues
comp.os.linux.setupInstallation problems
comp.os.linux.answersAnswers to command problems
comp.os.linux.helpQuestions and answers for particular
problems
comp.os.linux.networkingLinux network questions and issues
第2章安装Linux
本章描述了从CD-ROM安装OpenLinux lite系统的安装过程.这个安装包
括了Linux操作系统,大量的Linux 应用程序,一整套Internet服务器.不同
的Linux 软件包通常有他们自己的安装程序.例如,Linux的Slackware软件包
部分在OpenLinux下有不同的安装程序.Caldera Open Linux安装程序是简洁
有效的.具体的方面,像web服务器,一般要求专业的很复杂的配置操作.
OpenLinux 自动安装并配置许多文件.
安装Linux包括几个步骤:首先,你必须决定是否你的计算机满足硬件要求.
然后你要寻找你使用的硬件方面的具体类型.例如你的显示器类型和显示卡类
型.这些信息可以从硬件的说明书上获得.
如果你打算让Linux系统和其它系统共用一张硬盘,你必须给你的硬盘分区,
怎样分区你的硬盘有不同的选择方式,主要依靠是否它包含你要保护的数据.
你开始安装程序的时候需要准备一张启动盘,一旦安装程序开始,你只要简单
地跟随屏幕的指示,大部分时间你只要做一些是或否的选择就可以了.安装程序
要经过几个阶段.首先你要在你的硬盘上产生Linux 分区.然后你安装软件包,
接下来能配置网络联接,图形用户界面(GUI)支持的X-Windows服务器.X-
Windows和网络配置可以在以后的时间独立执行.
一旦你的系统安装结束,你就可以准备开始和注册帐号.你将通过注册命令
来注册,从命令行你可以激活X-Windows 安装提供给你一个完全的图形用户界
面(GUI).
你可以选择只安装操作系统,还是带有标准应用软件的系统或者在CD-ROM
上全部软件系统.如果你选择了标准安装,以后你可以增加未安装的软件包.第
3章描述了你怎样使用glint工具和用Redhat Package Manager(RPM)去安装
或卸载软件包.
2.1 硬件,软件各信息的要求
安装Linux 以前,你必须确信你的计算机满足最小硬件要求.你还需要具体
的软件硬件分区程序.所有DOS系统的标准也存在于你的OpenLinux光盘上.
对于你的显示器,显示卡,鼠标,光驱等,你要知道确定的具体信息.下面的部分将
详细描述所有要求,安装以前要仔细阅读他们.安装期间,你必须对基于你的计算
机配置做出选择.
2.1.1硬件要求
下面是安装Linux的最小系统硬件要求.
一个32位的Intel为基础的个人计算机.要求一个Intel或兼容机,386,486
或奔腾微处理器SX和DX CPU被接受.
一个3.5寸软驱.
至少8MB内存,推荐使用16MB.
至少300MB的硬盘空间,推荐使用300MB~400MB,如果要装入并使用
CD-ROM上的所有软件包,至少需要750MB,基本软件包的标准安装要占用
212MB,还要加上16到64MB的交换空间,你可以选择最小安装,只安装LINUX
的内核和少量应用程序,以后你可以每次加一个应用程序.
一张3.5寸DOS格式化的高密软盘,以便产生一个启动盘.
一个CD-ROM驱动器.
两张3.5寸DOS格式化高密软盘.
如果你打算使用X-Windows的图形用户界面,你还必须有.
一个显示卡.
一个鼠标或其它定位设备.
2.1.2软件要求
软件的要求是很少的,基本上你需要一个能产生Linux启动盘的系统,如果你
打算使DOS和Linux运行在同一张硬盘上,你需要DOS分区软件,以此类推,如
果你有OS/2,你就需要OS/2分区软件.
为了你能准备安装盘,操作系统是必要的,用DOS系统你可以访问
OpenLinux CD-ROM,并且发出像DOS的命令去产生安装盘,任何DOS的类型
都可以,甚至你可以在OS/2上使用相同的命令.然而,运行Linux时不需要DOS,
它是一个独立的操作系统.如果你想让Linux和其它操作系统共享硬盘,例如
DOS,你将需要为分享硬盘的具体工具.对DOS来说,你需要defrag和 fips 工
具或者fdisk工具,fips工具提供在你的OpenLinux CD-ROM里,它可以执行一
个非破坏性硬盘分区,为Linux系统扩展空间.defrag和fdisk是标准的DOS工
具,一般挂在DOS 目录下,defrag和fips 是在Fips分区前整理磁盘碎片,当然,
有一些其它的商用工具可以整理磁盘碎片.fdisk是代替fips的工具,它执行破
坏性硬盘分区,删除硬盘上的所有文件,并要求一个完全的格式化的DOS 安装.
2.1.3信息要求
PC采用Linux这样有效的操作系统能更好地使用计算机的硬件设备,为了做
到这一点,Linux要求计算机各部件的具体信息.例如,特殊的Linux配置文件能
够满足显示卡及显示器,具体生产厂家和型号的要求.安装Linux以前.手边
需要有这方面的信息,这些信息一般可以从硬件或计算机的说明书上获得.
CD-ROM,硬盘和鼠标信息
如果你有一个SCSI的光盘驱动器,你需要制造厂商的名字和型号.如果你
有一个IDE的光盘驱动器,也要注意这些事实.
决定在你的硬盘上给你的Linux系统多少空间,如果你打算和DOS 共享硬
盘,决定DOS和Linux各占多少
决定你要给交换区多少空间,你的交换区必须在16MB的64MB之间,对于大
部分系统,32MB是恰当的,它被Linux 用来扩展你的计算机内存.
发现你的鼠标厂家和型号,Linux支持串口和总线鼠标,大部分的鼠标被支持,
包括微软Logitech 和Mouse系统.
了解你所在的时区.如果你的计算机直接连在Internet上,你可能用格林威
治时间(GMT)作为你的时区,然后,如果你是用一台单机且和DOS 共用,你可能
想用当地的时区.
了解你的鼠标用在哪个串行端口,COM1,COM2,或用PS/2鼠标端口.
显示卡和显示器信息
注意下面关于显示卡和显示器的信息,X-Windows已为大部分显示卡设置好
了,所以你可以不必使用显示卡信息.但是,你绝对要用到显示器信息,包括垂直
和水平的,刷新频率.显示或信息:
你的显示卡生产厂家及型号.
你的显示卡用什么系列芯片集.
你的显示卡上存贮器有多大.
显示器信息:
了解你的显示器的制造厂商及型号.Linux支持几种显示器,如果你用的
不属于他们,要选择一个GENERIC PROFILE.在一个习惯的PROFILE文件中
健入信息..为了做到这一点,你需要下面信息.
水平的刷新频率是多少
垂直的刷新频率是多少
网络配置信息
除决定你的主计算机名称外,安装期间你不必去配置你的网络.你可以
在以后用netcfg工具去完成网络配置,但是如果信息已准备好,安装过程将自动
配置你的网络,在恰当的配置文件中放置必要入口.如果你正有一个Internet服
务提供商,他们将提供你大部分信息,如果你亲自设置网络,你将必须决定每个信
息.安装程序将提示你考虑以下几个方面:
决定你的计算机的名字,Internet将通过此名识别你的计算机.
你的域名.
分配给你的计算机的IP地址,Internet上的每个主机被分配一个IP地址,
是用点号分开的四位数字.做为一个区域内对计算机的识别,允许从来自其它区
域的信息访问这台计算机.
你的网络IP地址,通常与IP地址相一致,但增加一个0.
子网屏蔽,通常是255,255,255,0.但如果你是一个大网络中的一部分,要
与你的管理员来核实.
网络广播地址,通常你的广播地址与IP地址同名,只是在末尾加上255.
如果你有一个网关,你需要为你的网络分配网关的IP 地址.
网络使用的任何服务器的IP地址.
如果你的网络使用一个NIS服务器,要选择NIS域和IP地址.
2.1.4已安装LINUX系统的升级信息
如果你已经安装了像Caldera network desktop或Redhat等另一个LINUX
版本,你可能保留你喜欢的不同设置来使你的系统更加个性化.这些设置可以放
在你的配置文件里并存入一张软盘,再用到你的新的OpenLinux系统.通过这个
方法,可以保留你的最初配置(如果你用mcopy,要记住用-t选项).你也可能要保
留一些像网页等目录和数据文件或者你已经下载的软件包.用下面的tar操作
将是最好的方法.
tar cvMf/dev/fd0 directory-or-package
拷贝下面你打算恢复的配置文件和其它文件.你反需要拷贝那些你想恢复

文件 描述
/etc/XF86Config X-Windows 配置文件
/etc/lilo.conf 启动管理器配置文件
/etc/hosts 联接系统的IP地址
/etc/resolv.conf 域名服务器地址
/etc/fstab 安装在系统上的文件系统
/etc/passwd 系统上用户的名字和口令
/home/user 在系统中,用户的home 目录,user
将是用户的名字(对于大量的文件,要使
用tar cfM/dev/fd0/home/user)
.netscape 每个home目录有自己的带有netscape配置文件
的.netscape子目路.
web网页和ftp文件 你可能要存储一些为web site使用的网页和ftp site
的文件在用CND 版本中,这些放在/home/htppd 和
/home/ftpd下.
一旦你已经安装了OpenLinux 你就能安装软盘,并从上面给你的系统复制
文件,改变那些最初的设置.如果你使用先前系统中的/etc/xF86 config 文件,你
就不用运行xF86setup 去设置X-Windows./etc/xF86 config 文件包括了全部
X-WINDOWS的设置信息.如果你想从你先前的系统中恢复/etc/lilo.conf文件,
就必须用下面的命令来安装它:
# lilo/etc/lilo.conf
为了恢复存在多个磁盘上的文档,要用TAR操作,在软驱里放入第一张盘,然
后用下面的命令.
tar xumf/dev/fd0
2.2 为Linux 分区开辟磁盘空间
如果你打算把Linux运行在你的整张硬盘或用同一个分区升级一个Linux系
统,你可以跳过这部分直接看Linux的安装.但是,如果你要使Linux和DOS共
享一张硬盘,你将必须分区并格式化你的硬盘,以便使它一部分给DOS 系统,另
一部分给Linux 系统.你如何完成这一过程依靠你当前硬盘的状态.如果你有
一个的硬盘,你就需要确信把DOS 安装在硬盘的一部分上,另一部分留给
Linux.如果你已经在使用这张硬盘,你也必须删除已经存在的分区并对硬盘重
新分区.留下空余的给Linux,每个情况的目的都是为Linux 开辟自由空间,当安
装Linux时,你必须为Linux分区和格式化自由的硬盘空间.
一个硬盘被组织成各个分区.这个分区再被给定的操作系统进行一步的格
式化.当你安装DOS的时候,你首先需要把你的硬盘分成不同的区,然后用DOS
格式化命令去格式化每个分区形成DOS 盘,分别由一个字母来识别.例如,你可
能分你的硬盘为两个区.一个作为C盘,另一个作为D盘,你也可以把你的硬盘
只分成一个分区,格式化成C盘.为了和Linux分享硬盘,你必须减少他们的大
小或者删除一些分区来开辟一些自由空间.
首先,要决定你打算给你的Linux系统分配多少空间.你最少需要300MB.
像前面所述的那样,基本的Linux软件包占据212MB,而整套件包,包括所有的原
代码文件占据667MB.另外,你必须为Linux留出交换区,用于实际的存贮单元,
这要求16到32MB之间用300MB字节,如果你需要安装其它的软件包时,你很
快会发现空间是太有限了.一个实用的最小空间应是400MB到500MB,一旦你
决定了你的LINUX系统所用的空间,你就可以为硬盘开辟自由空间,根据不同的
硬盘分区,开辟空间会采取稍有不同的步骤.如果你已经有几个分区,你可能反需
要删除他们中的几个.
先了解什么是最适合你的选择,你应首先决定你的分区是什么及它们的大
小.你能用FDISK工具去做这一点.开始这个工具,在DOS 提示符下键入FDISK,
然后按回车.
C:/>fdisk
然后会出现一个fdisk 选项的菜单,选择第4页去显示当前所有的分区及他
们的大小,你可以减少或再分区你的硬盘,或者你可以删一些无用的分区.
如果你已经有一个大的区覆盖了整个硬盘,你有两个选择.你可以用DOS 的
defrag和Linux的fips 工具在你硬盘的无用空间上非破坏地产生自由空间.为
了安全,你应该对重要的数据做备份,但不必再安装DOS 和恢复你的数据,每件
东西都被保护.另一个选择,你可以再分区你的硬盘,删除所有的数据,然后你必
须再安装DOS,从你的备份中恢复数据.也要再格式化你的硬盘.如果你想把
DOS和Linux安装在同一张新的硬盘上时,你将跟随下面对你的硬盘进行分区的
相同步骤.
2.2.1删除分区
在大多数情况下,一个用户在一张硬盘上会有几分区.如果你有一个数据非
常少的DOS 分区.你可以考虑删除他们,为Linux系统开辟自由空间.在这种
情况下,只要决定你想删除哪一个及多少空间就行了.删除一个分区将删掉上面
的所有数据,因此,首先要确定对数据做备份.
记住,DOS 分区和Linux分区有着严格的不同,如果在你的硬盘上已经有一
个Linux系统,你打算删除这个分区安装一个新系统,你必须用Linux系统的fdisk
工具,而不是DOS的fdisk工具,一个Linux 分区不能由Linux的fdisk工具完全
删除.
C:/>fdisk
从删除菜单,选择"Delete partition or logical dos drive",这样列出当前的驱动
器并提示你键入分区的号码,每个分区入口将列出类型,卷标,它所占用的字节数,
不要删除类型是PRI DOS 的分区,它通常是第一个分区.一个安全的建议是从
最后一个分区开始.
键入分区号以后,你将被提示键入卷标(卷标列在fdisk菜单中的分区入口
里).当你确定后,键字Y去除分区,如果你回过头选择第4选项."Display paritition
information"你将看到这个分区已不存在.取代它的是一个自由空间的入口.它
告诉你Linux可以使用多少自由空间.
如果你需要更多的空间,你可以重复先前的步骤,再删除一个分区,每删除一个
分区,硬盘就增加了自由空间.如果删除的分区对于Linux系统来说又太多了,你
可以用fdisk菜单的增加选项增加一个新的较小的DOS分区.
去增加一个分区,在fdisk菜单中选择"分区创建"选项,这会显示分区创建菜单,
选择第2选项后,将被提示分区的大小,增加分区后,核对fdisk选项菜单中的第4
项.最后的选项将显示自由空间的数量.确认为你的Linux系统留下足够的空
间.
2.2.2非破坏性再分区
如果在你的微机上有大量不想重新安装的数据和程序,你可以用defrag和
fips实用工具来进行非破坏性再分区.但是,为了安全起见,你应该对你的数据做
备份.执行非破坏性再分区,你首先了解是否有足够的剩余空间为Linux使用,如
果没有,就必须删除一些文件.你能用chkdsk来核对你的硬盘有多少空间可用,
看是否有必要增加更多的空间,如果需要增加,删除一些不需要的文件再次重复检
查,直到有了足够的空间.
当DOS创建和存贮文件时,它放置这些文件在硬盘上的不同部分,你的文件
是散布于硬盘上.它们之间会有一些自由空间,剩余的未使用的空间变成由文件
割开更小的部分.整理磁盘碎片(defrag)工具会执行碎片整理过程,调整硬盘上
所有文件为连续空间,因此,留下所有自由空间作为大的连续过程.一旦你已经整
理了硬盘,你将能使用fips工具去使用未用空间的一部分或全部的自由空间.fips
是fdisk的一个版本,被设计用来探测连续的未用空间,并且从当前的DOS分区
中删除掉,然后Linux系统可使用未被分区的自由空间.
运行整理磁盘碎片defrag工具,键入defrag命令,它是一种放在DOS目录
下的命令
C:\dos\defrag
Defrag将用带颜色的区块代表硬盘的不同部分来显示一个硬盘.它把所有
的使用过的部分(包括你的数据和程序),进行最佳的整理,在硬盘中融为一体.这
一过程需要几分钟的时间,这一切结束后,你将在屏幕上看到使用过的部分被安排
到一起,然后退出磁盘整理工具.现在,你要准备运行fips工具,去开辟自由空
间,Fips安放在你的Linux光盘上\col\tools\fipsl5目录下.转入光区,开始运行fips
工具.在下面例子中,驱动区e代表光驱.
C:\e:
E:\>\col\tools\fipsl5\fips
Fips将在屏幕上显示自由空间的数量,如果你不需要全部的自由空间,你可以
用你的光标移动键调整,使空间变小,并留下这些自由空间为你的DOS系统程序
使用,按回车键,完成自由空间的开辟.
2.2.3对整个硬盘进行破坏性再分区
代替减少你当前的DOS分区的另一种方法是删除它们,重新开始分区.这
一过程将删除硬盘上的所有数据.但很多情况下你必须这样做.
Fips工具只是简单地缩减了分区的尺寸,并不能删除分区.你可将现有分区
变成多个小分区,或将现有分区变成大分区. 如果你喜欢大分区,你必须对你的
硬盘进行破坏性再分区,产生新的分区,然后能从备份中恢复你的DOS系统和数
据.如果你有一个刚买的硬盘,并立即安装,那么你必须用相同步骤对硬盘进行破
坏性分区(当然不用任何的数据备份和恢复,因为一个新硬盘没有任何数据).如
果你正在使用一个已经有大量文件的硬盘,那么必须备份你的文件,然后对这一硬
盘进行破坏性再分区.这样你就可以在以后恢复你想要的文件.你对整个硬盘
分区以前,须把所有数据备份到软盘或磁带上.完成这些以后,你即可对硬盘进行
破坏性分区.再次提醒读者注意的是:对硬盘进行分区,将删除所有的数据.
下面的步骤描述了怎样运用format和fdisk工具来创建一个DOS启动盘.
首先,在软驱内插入一个空白的软盘,用format命令和/s选项来格式化磁盘,并同
时把系统文件复制在软盘上,还要确定软盘驱动器的提示符.下面以驱动器A为
例,复制command.com, format.com和fdisk.exe到A盘上.Format和fdisk这
两个工具存放在DOS目录下.
C:\>format a:/s
C:\>copy command.com a:
C:\>copy dos/format.com a:
C:\>copy dos/fdisk.exe a:
你现在已经有了DOS启动盘,接着用DOS启动盘重新启动计算机,系统将
代替硬盘而用启动盘启动,屏幕将显示A:\>提示符,现在你可以准备用fdisk对硬
盘进行再分区,键入fdisk命令:
A:\>fdisk
这时屏幕上将显示带有分区选项的fdisk菜单,你可以建立删除或者排列分区,
如果安装的盘不是新盘,则必须将已存在的分区删除,这时,选取菜单中的第三选
项删除一个分区,而当前的分区将被显示出来屏幕将提示键入是否真的将要删除
这一分区,按"Y"键,这时屏幕自动回到fdisk选项菜单状态下,选择第三项并重复
以上步骤,则可删除另一个分区.继续这一过程,直到所有分区被删除.每次删除
一个分区时,你会注意到列出的分区将较小,自由空间变得较大.
一旦你已经删除所有分区,就可以准备对硬盘进行DOS分区,并给Linux留
出足够的自由空间,选择Fdisk选项菜单的第一项,屏幕会显示不同类型分区的选
项菜单,一个主DOS分区,一个扩展的DOS分区和一个逻辑DOS分区,你的第
一个分区必须是主DOS分区,所以选择第一选项.
然后,必须把这个DOS分区设置为active分区,以便它能用于启动DOS,选
择fdisk菜单中的第二选项,然后选择分区1为一个active分区.
现在你可以增加另一个分区,为了增加分区,选择"Partition Creation"菜单中
的Extended DOS分区选项,增加分区后可用fdisk选项菜单的第4项在核对分
区列表,最后一项将显示自由空间的数量.要保证为Linux系统留出足够空间.
一旦完成了硬盘的DOS分区,就要对它们进行格式化,用format命令和/S选
项来格式化主分区.使系统文件能复制到上面以启动计算机.主分区通常用C:
标称.
A:\>format c:/s
其它的分区只用format命令来格式化,以标称为D的分区为例:
A:\>format d:
一旦你已经完成了格式化分区,就可以取出启动盘,再重新启动计算机,你可以
安装DOS和Windows和你已备份的数据和程序.
2.3 创建OpenLinux安装盘
在你的OpenLinux光盘上存放着创建安装盘的文件,你必须在运行DOS的
计算机上创建安装盘.首先启动计算机并进入DOS状态,然后执行下面步骤:
1. 在光盘驱动器中放入OpenLinux Life光盘;
2. 在DOS提示符下,转到光盘驱动器,下面的例子中E:驱代表光驱
C:\>e:
E:\>
3. 进入\co\launch\floppy目录,键入rawrite3命令,就可以创建安装盘了, 你
需要复制两张分别包含文件INSTALL.IMG 和MODULE.IMG的两张软盘.
E:\>cd col\launch\floppy
E:\col\launch\floppy>
4.在软驱内插入一张3.5 寸DOS格式化的空白软盘.
5.现在开始rawrite 3命令.rawrite3命令是在\co\launch\floppy下的DOS
文件
rawrite3提示你想要复制的文件名子,键入 INSTALL.IMG 然后键入代表
软盘驱动器的字母,通常为A驱动器.
E:\col\launch\floppy>rawrite3
Enter source file name: INSTALL.IMG
Enter destination drive (A or B) and press enter: A
6. 确定软盘已插入回按回车键,rawrite 3将复制文件到你的软盘,创立安装
盘,完成以后,将软盘取出,安装过程将在下面描述.
重复相同的步骤完成带有MODULE.IMG文件的软盘的创建.
MODULE.IMG磁盘的用于配置你的硬件.
2.4 安装Linux
安装Linux包括几个过程,开始创建Linux分区,装入Linux软件,配置X-
Windows界面,安装Linux引导器(LILO).LILO用来起动你的系统.
安装程序是一个一步接一步连续完成的程序,你可以用鼠标,光标移动键, 空
格键和回车键.按ESC键可以回到前一屏幕,你只要在安装过程中做出选择就
可以了.一些屏幕,像显示器配置屏幕,提供你要做选择的选项列表,另外一些只
要求你通过键入y或n,及鼠标选择YES或NO来完成.在一些情况下,程序会
询问你一些你准备好的信息,例如:在X-Windows安装过程中,显示卡屏幕会显示
一些图形芯片的排列,要求你选择用在你的显示卡上的芯片,你应该准备的信息在
本书前面部分已经讲过.
现在可以准备安装了,安装过程的每一步骤描述在下面部分,它将花不超过一
个小时.
2.4.1启动计算机,并创建Linux分区
如果你跟随本章第一部分的指导,在硬盘上开辟了自由空间,并创建你的启动
盘,就可以创建分区了.首先,你须要用做好的安装盘启动计算机.启动计算机后,
安装程序开始执行.
通过它你可以用fdisk工具创建linux分区.
1.把Linux启动盘插入软驱内并从新启动计算机.如果系统可从光区启动,
可用光盘代替启动盘.最好用冷启动,完全关机后再开机.
安装程序开始执行后,屏幕先出现一些介绍,然后在底部显示下列提示符:
boot:
2.回车.有时需要键入一些参数,以防CD-ROM不被识别(见附录A)大部分
系统不需参数.
安装程序自动检测硬盘时,配置信息会显示在屏幕上.如果出现硬件问题,屏
幕会列出.配置信息会充满整个屏幕.通过按Shift-PageUp 键或 Shift-
PageDown键向后或向前翻页.注意,CD-ROM的设备名可能是hdc 或sdc. 如
果硬件没有被正确探测到,你可能必须重新启动计算机,在启动提示符下键入正确
设备名.例如,对于一个以太网卡,应键入IRQ,端口,起始地址,结尾地址和设备.
附录A列出了键入不同设备的语法.
3. 如果你的系统有即插即用卡,键入pnp,回车后继续.
>>>init: press to continue < 2.5 安装和配置X-Windows
首先你要用超级用户身份注册在LILO提示符下,键入 Linux并按回车键.
1.在注册提示符下,键入 root,然后回车.
2.系统立刻提示你键入超级用户口令.
3.在口令提示符下,键入你为超级用户设置的口令,然后回车.
使用 X-Windows以前,你必须配置鼠标键盘,显示卡和显示器,以支持 X-
Windows 界面,用XF86setup程序配置 X-Windows.这是一个全屏幕的图形
用户界面,在界面上单击按钮和菜单来选项.任何时候你都可以重新配置你的X-
Windows 界面.配置你的显示卡,可以从列表中选择.
配置X-Windows 以前,找到显示器垂直和水平的刷新频率(然后参考显示器
的硬件文件,这个频率是一个数字或者范围,例如一个 NEC3V的显示器,水平频
率是 31-50,垂直频率是 (5-90).
4.执行XF86setup程序
在 Shell提示符下,键入这个命令来执行XF86setup程序,这处程序安放在
/usr/X11R6/bin目录下.它将创建用于系统的 X-Windows 配置文件.名叫
/etc/XF86Config.
$/usr/X11R6/bin/ XF86setup
如果你的XF86setup 没有执行,原因可能是安装时没有完全安装Xfree86
库文件.用第3章所述的Lisa工具,安装Xfree86软件和Xfree86misc软件.
然后执行XF86setup文件.如果仍然不行,你就用 XF86Config.
5.你应该键入图形模式,按回车.
如果正在运行XF86setup程序,需要完成5个配置任务.每一个显示在
XF86setup 窗口顶部的一个按钮.这个按钮分别标有
Mouse,Keyvoard,Card,Monitor和 Other.每一个按钮可以产生一个配置该项
任务的屏幕.
图2-1描述鼠标内容的 XF86setup程序
屏幕的底部有三个按扭: Abort,Done,和Help.Abort将取消 XF86setup
程序.如果你不能确定任何配置选项,你只要单击 Abort,就可以安全地结束程
序.当你完成了所有的配置任务.单击 Done 按钮,存储你的配置,然后退出
XF86setup 程序.然后用startx 命令初始化X-Windows.
6.按回车或者ALT-M 键 ,可以出现鼠标屏幕.鼠标屏幕第一次出现是列出
了许多键盘命令.鼠标配置以前,建议你不要使用鼠标.你可以用键盘命令来选
择屏幕上的选项(看图2-1).
鼠标屏幕列出发一系列的鼠标品牌.在标有" ro />屏幕顶部的按钮来选择要的鼠标品牌.Microsoft 是大部分鼠标都兼容的协议.
大部分标准的鼠标是Microsoft 系列.你可以根据鼠标的不同特点来设置按钮,
缺省设置已经被键入.对于鼠标的路径来说,/der/ttys0指定了第一个串行
口,/der/ttys1.
指定了第二个串行口.系统已经选择了/der/ttys0,这是鼠标常用的端口.B
键设置了波特率.e 命令显示出中间按钮的配置内容,c命令可以使用中间按钮
的配置内容.完成上述命令后按a键选择右下角的Apply按钮.你就配置好了
你所要用的鼠标,并且可以用它来配置其它内容.
7.单击键盘按钮显示出键盘屏幕,会出现一个选择键盘模式和语言的下拉菜
单.你可以设置不同的控制键,或者使用缺省值.完成这些以后,选择键盘图像中
的Apply按钮(看图2-2).
图2-2XF86setup 的键盘屏幕
8.用于显示卡配置的两个屏幕:详细的设置和卡的列表屏.正常情况下,你必
须使用卡的列表屏.单击Card按钮启动.如果你前面没有运行XF86setup 程
序,就立刻会出现卡的列表屏.如果你已经运行了XF86setup 程序,首先会显示
出详细设置屏幕.在屏幕的右下角是一个标有Card List的按钮.选择这个按钮
来开启卡的列表屏.
卡的列表屏显示了当前大部分的显示卡.右侧是能移动列表的流动条.找
到系统所使用的显示卡,单击它选择.然后单击README文件,查看卡的信息服
务(见图2-3).然后继续配置显示器.
图2-3支持显示卡的XF86setup的卡的列表屏
图2-4XF86setup的显示器配置屏
如果你的卡没有列在列表中,选择详细设置现详细设置窗口,你可以对你的卡
进行详细设置.在详细设置窗口中,你将看到顶部有一排按钮指示不同的X-
Windows服务器.它们的下面是一个选择芯片集的下拉菜单,也有选择键盘方式
和语言的下拉菜单.
9.单击显示器按钮弹出后显示器屏幕,设置显示器的水平的垂直扫描频率的
范围.但是,这个频率的设置是非常重要的.不正确的频率可以损坏显示器(见图
2-4).
注意选择显示器频率以前,核对你的硬件文件,如果你设置的频率高于显示器
的要求,将严重损坏显示器.
屏幕的顶部标有 Horizontal和 Vertical 的方框.在这里你可以键入水平和
垂直的扫描频率,按回车键.你能看到这个频率被再次打印到有关的栏目中,如果
你的显示器支持每一个选项范围,你可以分别地来键入它.例如一个老的多信号
显示屏,它可能有31-50的水平扫描频率和一个55-90的垂直的扫描频率.垂直
和水平的方框下面,有一个图显示出你键入的范围.在屏幕的中心,有一个方框,
列出了普通的显示器类型,你能够单击其中一个,选择标准的频率设置.一定要核
对显示文件设置的正确频率.
10.单击其他的按钮产生服务器设置,列出了五个选项,前2个选项是已经被
选中的.一般来说你不用改变屏幕上的任何选项.第1个选项允许你用CTRL-
ALT-BACKSPACE键退出X-Windows.第2个选允许你用CTRL-ALT和任意
一键来改变显示类型.不同结果之间的转换是容易的.第3项允许你退出服务
器.第4项和第5项允许你从远处的工作站来改变显示器,鼠标和键盘的配置.
11.完成X-Windows配置后,选择屏幕下面的Done按钮, X-Windows启动,
然后出现3个按钮: Run xvidtune ,save the configuration和 exit,或者Abort.
如果X-Windows启动失败,原因可能是没有安装 XFree86服务器.回到命令行,
用 Lisa命令安装你需要的服务器(详见第2章).
12.选择 save the configuration 和exit.
13.你能用startx命令启动X-Windows.这个命令可以启动X-Windows, fvwm
窗口管理器和Caldera工作平台,然后你就能看到这个工作平台显示在屏幕上.
如果这个显示出的平台比你想要的大或是小,人以用CTRL-ATL和任意键命令来
改变显示结果.这样你就会得到你想要的平台的尺寸.
从文件菜单中选择退出工作平台,就可以退出Caldera平台.然后退出 fvwm
窗口管理器.单击fvwm菜单的任意处,选择退出平台.这将出现退出平台的一
个子菜单.
2.5.1实际的工平台
最初,你工作平台的屏幕面积可能会不理想.这是因为fvwm窗口管理器实
现了一个实际的工作平台,这意味着你的工作平台要比实际的屏幕大,移动光标到
屏幕的边缘.你将看见不同结果的影响.你能设置实际的工作平台和的实际屏
幕一样大.例如:一个15寸显示器的标准输出是800*600,你需要设置相同结果
的实际工作平台,通过选择/etc/XF86config 文件中的Virtual选项,来配置你的工
作平台.下面的选项就是为绝大多数15寸显示器设置的.如果你想要一个更大
的实际工作平台,你可以用 Virtual 1024 768来实现较大的尺寸.或者用Virtual
1152 864来实现更大的尺寸.
你的这个文件被分成几个控制 X-Windows 显示器的若干部分.在文件末
端放置看屏幕选项的显示子目录下的实际设置.屏幕部分有Section,"Screen"
标题.其显示部分有Subsection ,"Display"标题.系统中的不同驱动器有更多
的屏幕.如果安装了一个加速卡,就用屏幕中的Driver "Accel"选项(详见21章).
加速卡的屏幕中通常有几个显示子目录,包含了显示卡支持的各个部分,例如
8.16.24,缺省的深度是8.在显示子目录部分中,增加 Virtual选项.如果你要用
另一个深度,就要用Default Color Depth 选项.这将作为缺省状态选择其他显
示子目录的方法.深度决定了显示屏上颜色的16位,为1600万种颜色的24倍.
参考 XF86Setup程序中关于你的显示卡信息,(通常是8位,16位或24位)例如:
如果你设置了Default Color Depth 为16位, 深度16的显示子程序就会被使
用.确定你有一个想使用的 Virtual选项,下面的例 子表明发加速驱动器的屏幕
程序和为8和16位的显示子目录.为8位的使用的工作平台是:1024*768,然而
用16位深度的800*600的工作平台将适合15寸的显示器的尺寸.
Section "Screen"
Driver "Accel"
Device "Primary Card"
Monitor "Primary Monitor"
DefaultColorDepth 16
SubSection "Display"
Depth 9
Modes "1152X864""1024x768""800x600""640x480"
"640x400""480x300""400x300""320x240""320x200"
virtual 1024 768
EndSubSection
SubSection "Display"
Depth 16
Modes "1154X864""1024X768""800X600""640X480""640X400"
Virtual 800 600
EndSubSection
你能用第4章中的Crisplite编辑器来编辑文件,用mcr/ect/XF86Config 文
件在命令行中编辑文.或者用Vi或X(xEmacs).首先要给这个文件作备份.要
确认已经选择的显示屏上的显示目录.注意其它的部分不能有剩余.
2.6 安装声卡的驱动程序:声音
你必须安装声卡的驱动程序,它不会由OpenLinux安装来完成.声卡驱动程
序放在 Sound.o的内核模块中,并且在/lib/modules/2.0.29/misc目录下(2.0.29
是 OpenLinux内核的当前版本).Linux内核支持OpenLinux版本的模块,是老
版本不能支持了.这个模块包含了当前的标准声卡,用一个地址是220的IRQ7 和
DMA1.
你安装了带有insmod 命令的模块被显示在这(insmod sound 将卸载声音
模块):
$ insmod sound
不管你何时启动这个系统,声音模块将自动装入,你必须在
/etc/modules/2.0.29目录下的缺省文件里加入 sound.在你的这个系统中,文件
的名字是以带有defaults扩展名的Linux 系统的双版本.一个容易的方法是用
*.default或′uname-v′.default做为文件名来编辑它.
用uname-v显示商业版本的名字.在/etc/modules/2.0.29目录中,下面的命
令可以使缺省模块文件的末尾加上 "sound"一词.′uname-v′两边的单引号
和全名两边的双引号以及>>均必不可少.这个缺省文件的当前名字是 #1 Tue
Feb//20:36:48 MET 1997. default.
$ echo"sound" "′uname-v′.default"
你能核对下面命令的声卡.如果你收到没有设备的信息,那么证明声卡没被
安装.
$cat/dev/sndstat
用CD播放器,或声卡文件中的cat测试你的声卡.如果听不到声音,那么卡
就没有配置好.带有.au 扩展名的声音文件被重新指到了/dev/audio设备上带
有.wal 或.voc扩展名的文件指到了/dev/dsp设备上.下面的例子播放了一个声
音文件:
$ cat sample.au >/dev/audio
首先你必须产生一个用于你的光区设备名字的/dev/cdrom连接运行CD播
放程序.如果你的声卡有不同的IRQ和DMA 设置,或者是不被当前的配置所支
持,你就必须重新编辑新配置 的sound.o模块.这个声音模块的原代码是在
/usr/src/linux/drivers/sound目录下.查看README 文件,了解怎样配置和编辑
模块,特别是README模块.从这个目录下,键入 make config命令来配置声音
模块,系统会询问你一些声卡的信息.配置完成后,用 make命令,编辑新的卡模
块,然后用 make install命令,把新的 sound.o考贝到/lib/modules/2.o.29/misc
目录下,重写sound.o文件,然后用 insmod sound 安装新的文件.
2.7 Lisa
Linux安装和系统管理(Lisa)程序执行整个过程的安装.你能用相同的程序
来改变全部的配置.用 Lisa能修改你的系统.例如:增加新用户,安装新的分区或
者安装新的打印机(见图2-5).你也可以增加和删除光盘上的软件改变网络配
置.Lisa是一个简单的下拉菜单的工具.
从命令行键入 Lisa命令来启动.
#Lisa
通过光标移动键来选择菜单和按扭,当项目变时,说明已经被选中.实际上第
3章中详述了用Lisa管理系统和增加新软件.第7章中描述发用Lisa管理你的
文件系统.用 Lisa来获得系统信息.浏览帮助文件及增加和删除特殊硬件中内
核模块.
选择 Lisa 主菜单中,"Vervose system analysis"选项获得有关系统的信息
(见图2-6)在这个菜单中,可以找到你的系统是怎样配置的.例如:"Automatic
Partition Analysis"列出了系统上所有分区."Automatic Network Analysis " 列
出所有的网络信息.你可以用这些项目去核对安装过程中所提供的信息是否正
确.如果不正确,就用Lisa改变它.Lisa主菜单中的 "System Configuration" 选
项让你进入增加或者改变系统配置特点的其他菜单.
如果你的计算机有特殊的部件使系统出现问题,你需要安装Linux驱动器,或
者使用具体的硬件参数.Lisa可以运行内核模块管理器安装这些驱动器或者设
置硬件参数(详见附录A-硬件参数列表).从 Lisa主菜单中选择系统配置.再从
下一个菜单中选择系统配置.选择"Kernel Module Administration"从这个菜单
中你能看到已安装的内核模块列表及装入和删除的模块.
图2-5Lisa主菜单
图2-6Lisa系统分析
第3章Linux 系统的启动和安装
要想用Linux启动,你需要知道如何访问Linux系统,一旦你已登录到Linux
系统,要知道如何运行应用程序.一旦Linux在运行,你必须用预先设定的注册名
和口令来注册系统.进入系统后,你可以执行命令和应用程序.用命令行界面和
图形用户界面与你的 Linux系统相连.Linux系统使用带有商口管理器的X-
windows 和带有图形用户界面的工作平台,这样你可以用窗口,菜单和与你的系
统进行交互.
当注册进系统后,可以容易获得Linux系统的命令和使用工具的信息.Linux
几个网上工具提供信息和帮助.你能得到描述每个命令的网上在线说明和不同
Linux特点的详细解释.系统中Linux资料提供了完整的说明,可以通过打印或
者网络浏览器来获得这些信息.这章主要讨论了怎样登录你的 Linux系统,包括
用户帐号的注册和退出以及系统和启动和关闭.Caldera工作平台的基本操作
包含了 Linux 命令和使用工具.本章的未尾解释了基本的系统管理操作.例如
产生新的用户帐号和安装软件包.
3.1 用 户 帐 号
你永远不会直接访问Linux,因为Linux设置了一个你和他交互的一个界面,
Linux系统能一次设置几个用户界面,同时满足几个用户的需要.事实上,许多用
户可以工作在一台Linux 系统的计算机上.对于不同的用户来说,只有他一个人
在使用这个系统.实际的计算机是独立的管理用户和Linux 系统交互的界面.
这些用户界面经常被指定为一个帐号.作为Unix基础的Unix,第一个首先被用
在小型机和大型机上,能同时满足上万个用户的要求.用一些终端和主计算机相
连,用户能够通过它们注册到Unix系统.所有的这些活动由系统管理员来管理.
为了登录到系统上,你要有一个设置好的用户界面,这就是众所周知的一个开放帐
号.一个系统管理员能在Unix系统上创建帐号,分配注册名和口令,然后就可以
用此收号登录和使用系统.一个注册名能识别一个帐号,并用一个口令来保护.
当然,如果你知道注册名和密码,你可以用任何的帐号来登录.在你的 Linux系
统中,可创建几个帐号,其他的人想要登录你和系统就要使用你提供给他们的注册
名和帐号,其结果,他们会在自己的系统上拥有自己的帐号,在前一章 Linux系统
中,你已经创建了一个你自己的注册名和口令.当你创建注册名和口令时,就创建
了一个新的帐号.
事实上,你能用特殊的系统管理工具去创建新的用户帐号,当你以超及用户的
身份登录时,就可以使用这些工具.超级用户是一个特殊的用户帐号,它是系统保
留的执行管理用户的帐号.例如:创建新用户和安装新软件.这一章讨论了基本
的系统管理操作.在第7,19,20 章中将再次详细讨论了这个内容.现在,人需要
普通用户的注册名和口令.
3.2 登录Linux系统
根据下面的启动和关闭程序来登录和使用 Linux系统.你有能象 DOS系
统那样开机和关机.你要认为 Linux操作系统正操作在三个不同的水平上.第
一层是开机时系统的装入和运行.它控制你的计算机和外周设备.但是,你仍然
不能和它交互.Linux启动后,会出现一个注册启示符,等待用户的注册.
第二层是Linux的使用.现在你可以使用命令来执行任务.用一些编辑器,
编译器或者游戏等的工具和使用程序.但是,开始注册时,你是用命令行界面和系
统连接,通过输入命令和回车键来完成系统的活动.Linux的Caldera分支
OpenLinux,支持许多窗口管理器和工作平台.包括了它自己的工作平台外形,使
你能使用 X-Windows图形用户界面.在 Linux中, Startx命令将启动X-
Windows 图形用户界面(GUI).然后用窗口,菜单和图标来和系统交互.第三层
是窗口管理器.X-Windows 窗口管理器运行在命令行界面上.在关机的过 程
中,第三层变得非常重要,如果你正在使用X-Windows界面并想关机的话,首先你
必须退出X-Windows界面,回到命令行界面,然后退出你的Shell,回到系统的注
册提示符下,最后通过shutdown命令通知系统关机.同时按住CTRL-ALT-DEL
键,系统将自动关闭并重新启动开始时,你才能关闭计算机.
可以用一些快捷键来进行层次转换.超级用户可以通过shutdow命令来退
出和关机(详见第19章关机的过程).当你注册时,还有一种自动启动X-Windows
窗口器的方法.
3.2.1初始化和关闭Linux
当你开机时,Linux引导器(LILO)将首先决定装入和运行的操作系统.你将
看见下面的提示符,键入Linux启动 Linux操作系统.
LILO: Linux
如果你不这样做,Linux将装入缺省的操作系统.如果你要进入DOS系统,
Linux将给你几分钟提示你输入DOS系统的名字.如dos.
当Linux装入时,就会出现一些信息,然后出现一些注册提示符,系统保持等待
用户注册和使用.键入用户名和口令,系统和主机名将处理注册提示符.在这个
例子中,主机名是
turtle.trek.com:
Caldera OpenLinux(TM)
Lite 1
Version 1.1
Copyright(c) 1996-1997 Caldera Inc.
turtle.trek.com login:
完成Linux系统后,首先要撤销帐号, Linux系统就会出现一个注册提示符等
待另一个用户注册.如果你要关机,首先使用shutdown命令,通过同时按CTRL-
ALT-DEL键来关闭系统.当Linux系统关闭时,你会看到一些信息,然后 Linux
重新启动计算机,启动过程中,你可以关机.
下面描述了全部的启动和关机程序.
1.启动计算机
2.在LILO提示符直接键入 Linux,按回车(如果 Linux系统是缺省的,只按回
车).
3.出现一些信息后,注册提示符出现,你可以注册到系统,开始使用它.
4.在注册提示符上,你可以关闭系统,当你注销帐户后,注册提示符会重现.
5.关机
3.2.2Linux 的注册和注销
命令行
一旦你注册,你可以执行系统命令.完成后,并在关机前退出系统.你也可以
不必关机.在注册提示符下,注册另一个用户.
Linux系统的注册
Linux系统的注册包括两个步骤:键入用户名和口令.如果犯了错误,使用后
退键就可以删除字符.在下面例子中,用户的名字是richlp,提示你键入口令.
Caldera OpenLinux(TM)
Lite 1
Version 1.1
Copyright (c) 1996-1997 Caldera Inc.
turtle.trek.com login:richlp
Password:
当你键入口令后,它不会显示在屏幕上,这是对你口令的保护,如果注册名和密
码有错误,系统会显示注册不正确的错误信息,要求你重新注册.
一旦你已经正确输入用户名和口令,就可以作用本系统了.系统的命令行和
提示符将出现,等待你键入命令.注意:普通的命令行提示符是$,而不是#.$是普
通用户的提示符,#是超级用户的提示符.
[turtle/home/richlp]$
改变你的口令
第一次用超户注册时,你创建了用户帐号的密码,创建后,你可以给你的个人帐
号改变口令,只有你的个人帐号注册时,才能改变口令,你不必以超级用户的身份
注册,每个用户都
可以改变他自己的口令.
注册后,通过Passwd命令来改变口令.首先要决定新口令是什么,那是容易
记的,至少8位到7位.为了安全起见,口令=包括行键入 Passwd命令,再按回
车,命令提示符你键入当前的口令,然后提示你进入新的口令.系统会要求你键入
两次口令,以确认真地改变口令.由于口令不会出现屏幕口,所以可能会按错键.
$ passwd
Old password:
New password:
Retype new password:
$
键入新口令时犯了错误,系统会显示出错信息,口令不会被改变.系统通过两
个新口令的比较,如果他们不相匹配,错误就会被探测到.
Passwd命令使你很快更改新口令,当你再次注册时,你就必须使用新口令.
注销键入 logout命令注销帐号,回到注册提示符下,系统等待另一个命令.
$ logout
3.2.3启动和退出窗口管理器: X-Windows
一旦注册到系统后,选择使用X-Windows界面和你的 Linux 系统交互,通过
在命令行键入Startx命令启动 X-Windows 界面.X-Windows装入指定的窗口
管理器.Linux的 Caldera分支也会装入一个工作平台,并提供文件和程序管理
器.使用 Linux的 Caldera分支的界面被指定为 Caldera 工作平台,一旦被装
入,用鼠标使用菜单打开窗口和启动程序(图3-1显示了Caldera 工作平台的外
表).
图3-1Caldera工作平台
Caldera工作平台的特点就像其它窗口环境一样.可用鼠标来选中不同的
图标,菜单和窗口.窗口显示信息,列举文件或打开应用程序.像所有的系统一样,
可同时打开多个窗口.然而,只有一个窗口是激活的,此窗口有紫色边框,其它未
被激活的窗口具有灰白边框.鼠标指针可通过窗口间移动改变和激活窗口.不
必像Windows或 Mac OS系统那样需击鼠标来改变激活窗口.
随着窗口重叠会产生令人费解问题.因为激活的窗口不能自动跳到前端.
一个激活窗口的一部分仍被其它窗口覆盖,需点该窗口的标题栏窗口才能跳到前
端.除此以外,单击窗口其它部位无效.
选择退出工作平台选项来退出Caldera工作平台.屏幕顶部有几个选项菜
单.一个是文件菜单,当点中其时,即显示菜单.最末一项是退出工作平台.一旦
选择退出,则回到蓝色背景的窗口管理器,然后需退出窗口管理器.击屏幕任何部
位,下拉窗口管理器菜单,单击窗口管理器菜单以便退出工作平台.然后出现你要
选择的 Quit工作平台子菜单,这将关闭X-Windows.Linux将关闭X-Windows
界面然后出现$提示符,通过键入 Startx命令,在任何时候,重新启动 X-
Windows.记住,使用X-Windows界面时,你要退出帐号时,必须先退出X-
Windows界面.你要回到命令行界面后,才能使用Logout或 exit命令.
3.3 Linux命令和命令行编辑
Linux有一大套可以与其他用户通迅和管理编辑文件的命令.Linux 命令
用命令行界面来执行.即使用一个图形用户界面,你也经常需要使用命令行界面
来执行命令.Linux命令广泛地使用选项和参数.在你的命令行要小心使用选
项和参数.Linux命令包括选项和参数的格式被显示在下面:
$命令名,选项,参数
一个选项是一个前面带有一个短横线的字母,它可以修改命令执行的类型.
例如 ls 命令可以加上-s选项,显示一个目录下的文件列表.-s选项增加了每个
文件的大小.在命令行中键入命令和选项.例如:
$ls -s
一个参数是命令需要执行它的数据,在许多情况下,将是一个文件名.例如:用
man命令显示一个特殊命令的信息.特殊命令的命令名作为其参数.用 man 命
令来显示ls 命令,作为一个例子,显示如下:
$ man ls
这个命令行实际上是一个可编辑的文件的缓冲区,按回车以前,编辑命令.这
个编辑过程包括了修改敲错的命令及选项的能力.BACKSPACE和 DEL键 ,
允许你删除命令行的字母.用这种方法来删除已经打印出来的整行命令.
工作在其中的 Shell是 BASH Shell,它是你的缺省 Shell.此 Shell有特殊
的命令行编辑能力,你会发现在你学习 Linux过程中,它是有帮助的,你可以方便
的修改命令,在命令行的任意部位插入和删除字符.对复杂的命令来说,它有特殊
的帮助.然后你可以用 CTRL-F键或右移键向前移动一个字符.也可以用
CTRL-B键或移键向后移动一个字符.CTRL-D 和DEL键能删除光标所在的字
符.CTRL-H键或 BACKSPACE键可以删除光标前面的字符.增加文本就用
光标移动键把光标移动到你想插入文本的地方.然后打印新的字符,在任何时候,
你可以按回车键执行这个命令,例如,如果你在键入一个命令时犯了拼写错误,你
可以用它来改正错误.你也能用键去重新显示先前执行过的命令.你能再执行
这个命令或者编辑它.当你重复这些操作的时候,你会发现这个工具是有帮助的,
当键入错误的命令时,它也是很有帮助的,在这种情况下,你被提示一个错误信息
和新的命令行.按光标上移键可以显示先前的命令,修改它,然后再执行.
BASHSHELL程序保持一个叫做历史记录的列表.上边列出先前的列印命
令.通过键入光标上移键来显示在命令行使用过的命令,光标下移键可以关闭这
个列表.你可以修改和执行任何先前显示和执行命令.第15章中详述了历史记
录的特点.
3.4 网络在线帮助
Linux系统有编辑器和说明等使用工具.这些工具有它们自己的界面和一
套命令, man在线帮助允许显示任何Linux命令和程序的信息,在命令man后,
打印你想要显示的命令名,在下面的例子中,用户激活了ls命令的在线帮助信息.
$man ls
在一个命令的man文件可以被组织或不同的层次,从其中的一个启动.第一
个层次给出命令的基本信息.另一个层次提供了更多的信息.例如:用8个层次
来显示crontab的帮助文件
$man 8 crontab
无论man什么层次产生的文件,其他层次的文件将列印在后面.大部分的文
件只有一个用man命令产生的层次.
按回车键后,你就进入了 man工具,显示了ls文件的第一页, man有它自己
的一套命令,通常由单个键组成,按空格键和F键将翻到下一页,按B键右翻到上
一页.按Q键退出 man工具,回到命令行.
一个说明选项有几部分组成.普通的五个部分是摘要,描述,选择,文件和对
命令的参考.摘要表了命令的语法.打印它可能的选项和参.命令的描述确切
地告诉你系统在做什么.接下来选项被显示并解释.文件部分显示了命令使用
的系统文件.交叉的参考文件显示了其它相关的命令和帮助选项.下面上ls命
令选项的一个缩短的版本.
man工具还有几种有益的特征,例如:它有搜索功能,通过按/或者 来激活一
个搜索./代表向前搜索. 代表向后搜索,按下/后,在你的屏幕底下将会出现一
条横线,然后你键入你所搜索的词.键入回车,激活搜索.搜索其实是一种模式搜
索,所以你可以键入词的一部分或词的几个字符,通过按下N键来重复同样的搜
索而不必重新键入模式.
3.4.1Whatis和 apropos
Whatis 和apropos将收录man题目的数据库,并根据每一个 Whatis的短
小描述显示结果.
Whatis将整句话寻找man标题.例如:如果想寻找带有字母X的帮助选项,
应使用下列命令(为给也了处理 X-Windows主题的帮助目录)
Whatis和 apropos使你进入一个 man类型的界面.如果结果超过一页,可
用F和 B键进行前后移动.可以用/和 键执行模式搜索,用 Q键退出,回到命令
行.
Apropos命令执行了Whatis相同的任务,但其是通过模式来搜索而非整句搜
索.例如: Apropos x命令将产生几页长的结果,列出所以以x打头的 man选项,
例如xwpe和Xloadimage.
下面例子中,用户列出了全部以 ls打头的所有帮助选项.这包括了ls命令,
以及其它的例如lseek或 lsearsh命令.
你也能使用Helptool工具寻找Linux帮助文件中的关键字.Helptool能搜
索所有的信息页或者文本文件.只要键入helptool从显示出来的主题列表中选
择就可以了.
3.4.2 Xman和tkman
如果你在工作平台上工作,就要使用Xman程序来搜索和显示帮助文件.
Xman是X-Windows为基础的程序,用鼠标单击扫纽和菜单寻找和显示帮助文
件.单击fvwm工具栏中的Xman按钮,可以启动Xman.屏幕出现带有二个按
钮的小窗口,分别是 Help, Quit和Manual Page.单击Manual Page文件能够
打开Xman显示窗口,顶部出现两个菜单按钮.Options 和Sections.在 Options
菜单中你可让选择寻找选项,开启一个搜索窗口,在这里键入想要显示的命令或者
主题,你可以用 Sections菜单来设置命令.这个菜单列出了用户命令,系统管理,
设备和游戏等几项,选择一个用man项目显示的面板.例如 User命令选项将列
印所有的用户命令.然后,单击其中的一个和来显示其命令的 man文件.你用
左侧的滚动条浏览man文件(图3-2表明了 man文件的窗口和最初的 Xman
窗口).
Tkman提供了Xman文件同样的特点,并且有一个容易使用的界面,在窗口
的顶部有一个方块,你可以键入一个文件名,然后单击标有man的按钮.对于
apropos寻找来说,在相同的方块内,键入要寻找的字符串,单击标有 apropos的
按钮,Volumes菜单允许你轻松地选择主题.Sections菜单允许你设置选项并提
供帮助.一个滚动条允许你浏览 man文件.通过选择在应用程序菜单中的
"Other Applications"另的Tkman 项目或者从一个终端窗口里使用Tkman命令
来启动 Tkman.
图3-2显示 man文件的 Xman窗口
3.5 网络在线文件
当启动你的浏览器时,一个缺省的网页连接着你的系统和 Caldera和
Redhat 网址,要想使用这两个网址,首先你必须要与Intemet相连.但是你的光
盘和系统中已经包含了广泛的文件.这些文件是关于怎样使用工作平台来 Linux
系统的详细解释,包括Vi编辑器和 Shell操作.这里列出了与这些文件的连接.
在不同的 Linux主题上,其他的文件提供了详细说明.
工作平台界面的用户指导.
Linux的安装和启动指导.
Crisplite编辑器的用户指导.
大众的监听器列表 Bugs.
其他的 linux文件.
/usr/doc目录包含了许多 Linux 应用程序的在线文件.一些带有安装Linux
应用程序名字的子目录包含了像 README文件.在/usr/doc/HOWTO 目录下,
你可以获得整套的 HOWTO 文本文件.HOWTO文件包含了详细的硬件安装
和网络配置的Linux 的主题.另外,/doc/ HOWTO/HTML 目录包含了可用网络
浏览器显示的网页格式文件(使用 Lisa安装 HOWTO html软件包).
也有一些像gcc编译器和 Emacs编译器等的 GNU应用程序.你可以通过
键入命令来获得这个文件,这将出现带有不同 GNU应用程序的特殊屏幕.info
界面有它自己的整套命令,你可通过键入 info 来学到更多的东西.在屏幕的底
部的一行内键入m,它代表了某个应用程序的另一个字母.回车就可在应用程序
上得到info 文件.
3.6 配置你的系统:用Lisa设置
如果你是Lisa系统管理员,就需要执行一些例如创建一些新帐户和新软件等
的管理任务.用叫做root的系统管理帐号来执行.作为一名超级用户,你可以完
全控制你的系统,并可以任意的改变他.你能够安装软件包,创建新用户,给你的
系统增加新设备或者是磁盘,配置X-Windows或网络界面.
执行使用 Linux安装和系统管理程序,可以执持管理任务, Lisa 提供了容易
使用的能够管理任务的界面,可获得一套REDHAT管理工具.根据系统的管理
任务,这些将被详述在第7,19和20章,但是用 Lisa你能执行许多基本的任务.
Lisa有一个带有详细提示的全屏界面,帮助你完成象安装打印机或者安装新分区
的任务.Lisa有一个详细的在线描述,你可以通过[url]www.caldera.com[/url]网址来获
得它,单击在线文件,选择 OpenLinux为基础或 OpenLinux 标准的选项,然后选
择管理OpenLinux 的章节.
要使用Lisa ,你必须要以超级用户的身份注册.安装期间你已经确定了超级
用户的口令.这个口令就是在超级用户注册时使用.如果其他的人正在用你的
Linux系统.要注意保密你的超级口令.任何以超级用户注册的人,都可破坏你
整个的 Linux系统.在注册提示符下,键入root,就可以以超级用户的身注册,然
后键入超级用户口令.
Caldera OpenLinux(TM)
Lite 1
Version 1.1
Copyright(c) 1996-1997 Caldera Inc.
turtle.trek.com login: root
Password:
运行Lisa最容易的方式是在命令行键入Lisa命令.你也可以通过工作平台
来运行它.但必须先用 startx命令来启动工作平台.一旦注册后,系统将提示超
级用户提示符#.注意它其与普通用户提示符的区别.
# Lisa
Lisa最初显示了带有4个选项的菜单,复杂地系统分析,系统配置软件包管
理和帮助系统.要使用文件管理,设备配置或增加新用户的系统配置,软件包管理
让你容易地增加和软件包.这个帮助系统将列出在的系统上可获得的HOW-TO
文件.如果你运行时出现困难,你就可以参阅恰当地 HOW-TO文件.复杂系统
分析提供了当前系统如何配置的信息,第2章图2-5表明了最初的 Lisa菜单.
大部分的 Lisa屏幕显示了底部的按钮.一个 Call按钮将启动一个菜单和选择,
Continue按钮将离开这一屏转到前面的一屏,在主菜单的情况下,就会退出程序
如果有,两个按钮,一个被选择了,另一个就不会被选择.然后按回车键 来选择已
被选中的一个.
你用向右或向左的光标来选择另一个(你也可台用TAB键).按右移键选择
右侧的按钮,按左移键选择左侧的按钮,然后按回车键.Lisa也提供了在线帮助,
在任何情况下,按F1键会出现一个当前选项的解释.Continue按钮或者ESC
键使你退回前面的屏幕.连续地选择Continue 键就会回到主菜单.
选择系统配置的选项进行执行管理任务 (见图3-3)会出现不同面积的选择
列表,然后你可以从硬件系统网络或者启动管理器配置中选择,网络选项允许你执
行网络配置,硬件管理允许你增加象打印机一样的新设备.系统配置允许你执行
例如增加新用户或者安装分区等任务.
图3-3系统配置领域
系统管理选择菜单中的系统配置一项,一个带有选择项目的屏幕将会出现,当
系统启动的时候配置安装表选项允许指定分区和设备.你的主要的Linux 分区
和交换分区就被键入.第7章详述了分区的解释和如何安装它们.
图3-4Lisa系统配置
图3-5Lisa用户管理系统
用户管理建立了一个带有管理用户和主群的选项的菜单,(见图3-5)选择"添
加新用户"选 项来增加一个新的用户,一系列的提示让你键入注册名和ID号
(100-64000之间的任意数),一个主名,一个home 目录,一个启动shell(通常是
BASH和口令)选择."创建新主群"选项可以增加一个新主群.
硬件管理菜单列出一系列硬件,例如调制解调器,打印机,硬盘和鼠标以及
XFree86服务器.选择你想要配置文件的选项系统将列出一系列可供选择的硬
件型号.例如对于 CD-ROM ,你将从不同的CD-ROM类型中做选择,XFree86 服
务器选项允许你选择不同的服务器.这样有利于你改变你的显示卡或服务器.
从工作台中有几种方式可以开启Lisa工具.首先通过键入 startx命令来启
动工作平台.在工作平台中,你可以击 fvwm工具栏中的 Admin 按钮.这将产
生一个具有Lisa按钮的小的按纽栏.你也可以用frwm 程序菜单,选择在系统管
理菜单下面的Lisa,这是应用菜单的一部分.最后你可以在Caldera工作平台上
选择 Admin系统文件夹.
3.7 安装软件包
现在你知道如何启动Linux和 进入超级用户帐号,你就可以安装你想要的软
件包.安装软件包是由超级用户执行的一种管理功能.在安装过程中,除非你选
择完全安装,否则,在你的系统中,能安装部分的工具.附录B包含了关于
OpenLinux CD-ROM 的系列软件包.
有几种安装软件的方式.你可以使用工作平台中被称作 glint的图形界面.
也可以使用工作平台中或命令行中的 Lisa工具.这些是安装几个软件包的最简
便最有效的方法.可以用命令行中 rpm命令直接激活 Redhat软件包管理器
(RPM).然而这是一个非常复杂的操作.最后,你可从网上下载软件,然后用rpm
命令安装它们.这只是简单地操作描述,在第7章将有更详尽的描述.
Linux的 Caldera和 Redhat 两个系统都用Redhat软件包管理器(RPM).
将你要安装或删除的软件装进软件包.一个RPM软件包象它自己的软件应用
安装程序一样运行.一个Linux软件安装程序通常由安装在不同目录直的几个
文件组成.程序本身最可能放在/usr/bin 的目录下,网络帮助文件将放在另一个
目录.库文件在另外一个目录中,另外安装可能要求系统中配置文件的修改.RPM
软件包将为你执行所有任务.如果你决定删除一个具体的应用程序,你可以卸载
软件包,删除系统上所有的文件和配置信息.使用Lisa或者 glint程序选择你计
划安装或者删除的软件包.Lisa或 glint有不同的优点,然后Lisa按字母列出所
有的软件包,而 glint把它们放在分类的文件夹中.如果你知道你需要安装软件
包的名字,Lisa是非常有帮助的(附录B列印了这样软件包)你只需浏览这个列表,
并选择它,但是如果要设置特殊的软件包,你必须知道它的和所在的文件.
3.7.1命令和程序目录:路径
程序和命令通常安装在标准系统目录下的,例如
/bin/usr/bin,/usr/X11R6/bin或/usr/local/bin. 但是,一些软件包将把它的软件
包放置在标准目录下的子目录中,或者一个全部分开的目录,在某种情况下,你不
能运行这些命令,因为你的系统不能在新的子目录上安放它们.你的系统包含了
一系列的用于命令查询的目录.这套目录被放在一个叫作PATH系统中,它的名
字可更改,启动系统时,它就会被创建.如果一个命令不在列表中的目录里,那么
你的系统将不能设置和运行它,为了使用一些命令,你必须首先在PATH目录系
统里增加新的目录.
在OpenLinux系统中,路径被目录系统分配到/etc/profile文件下,这个文件是
一个文本文件.当你的系统启动和配置用户工作环境时运行它.在这个文件中,
你将发现以PATH=为开头的一行,并且其后跟着一系列目录用冒号分开,许多目
录包含命令和程序.
用GropLite.XEmacs.Emacs或Vi等编辑器编辑/etc/profile文件,用来创建
新目录.在一系目录末端,在双引号添加一个带有全部路径名的目录.确认新目
录与最后一个用冒号隔开.在最后亦应有一冒号.例如:如果安装MH邮件工具,
在|usr|bin目录下的mh子目录安装MH命令.该目录的全部路径名是
/usr/bin/mh.应该在一系列目录中加入表明/etc/profile文本路径内的目录(软件
包名命令rpm-qp)将列出安装RPM软件包的全部命令)下面的例子表明随目录
系列的变化路径亦是变化的,和目录/usr/bin/mh的添加(将在下栏中显示).
PATH="/bin:/usr/bin:/opt/bin:/usr/X11R6/bin:/usr/openwin/bin:/usr/
local/bin:/usr/bin/mh:"
/etc/profile文件是为用户注册时使用的可执行文本.个别用户可通过
用:bashrc或.profile文件设置PATH.用这使方法,用户可以在自己的目录下创
建和安装所要使用的命令和程序,并能顺利地使用它们(详见15章)在.profile文
件里的选项中,有一个是在PATH里增加一个用户的mybin目录,用$PATH将列
出/etc/profile文件中的全部目录.不要忘记在新目录前放一个冒号,并用$HOME
来确定用户的home目录的录径名.
PATH=$PATH:$HOME/mybin:
3.7.2Lisa:软件包管理
在Lisa主菜单下选择软件包管理.会出现四个选择:第一个是安装程序来源
的选择.要从Linux光盘上增加软件,就必须先通知Lisa软件正放在光盘上.选
择这一选项,一系列设备会显示出来,其中CD-ROM设备选项是发亮的,按回车即
可选择它,Lisa将检测光盘并要求确认,按回车键转到软件包菜单,用光盘移动移
选择增加软件包选项,按回车,Lisa会显示全部未安装的软件包,这可能花一点时
间.
每个选项的左侧有一个空的括号,接下来是用黄色显示的软件包的文件,右侧
是对软件的描述.用光标移动键选中一个软件包,然后按空格键确认选中.你会
看到括号中出现x.如果你又不想选中它,就再按一次空格键,x会消失.如果你
确定选中,按回车,你选择的全部软件包会被安装.图3-6显示了Lisa的软件包
列表.也可以用Tab键来选中Cancel按钮再回车,以便取消安装.
选择"删除软件包"选项可以删除已被安装的软件包,选中后,屏幕显示所有被
安装的软件包.同样的方法,可以选中并回车.你可以删除任何一个软件包.
3.7.3Linux安装管理器glint
通过glint使工具的用户友好界面安装软件是很简单的,用鼠标就可以完成.
glint可以自动把软件或专用配置文件复制到正确的目录下,glint能在增加和删除
软件包过程中处理,全部的文件.
图3-6Lisa安装列表
像使用Lisa一样,你首先必须用超级用户身份来注册,如果从光盘上安装软
件,首先要使系统识别光驱.不像Lisa,glint不能自动完成这一点,你必须执行一
个被称作安装一个系统文件的命令,首先把光盘放入光驱,然后键入下面的命令,
这使光驱上的一个盘区与Linux系统相通.安装文件系统将在第7章详细讨论.
$mount/mnt/cdrom
glint是一个从工作台上运行的X-Windows程序.键入Startx来起动工作平
台,用开启Lisa工具相同的方法来开启glint,选择fwm工具栏中的Admin按钮,
它在应用程序,菜单中,系统管理下的fwm程序菜单中.Admin-Tools文件夹放
在Caldera工作平台中,一旦你开启了glint图3-17中的glint窗口就会显示出
来,glint看起来就像一个文件管理器窗口,它显示出应用程序和文件夹图标,同类
的应用程序放在相同的文件夹中,例如,Emacs编辑器放在叫做编辑器的文件夹
中.此文件夹放在应用程序文件夹中.
在你已经看到的文件夹和图标是已经被安装在系统中的(只图3-7)你可以通
过窗口来阅读这些软件包或删除它们.只要选中适合的文件夹中的图标,然后按
右侧的拆御按钮(Uninstall).当你选中了一个软件包,它的图标就会出现红色边
框.你可以通过单击它们同时选中几个图标.一次就可把它们全部删除.要想
取消已经选中的图标,只要再单击它一次就可以了.你会看到红色的边框消失.
图3-7glint使用工具
当你打开并显示一个文件夹的内部时,会看到一个带有大黑箭头名字
叫"Back"的图标,通过点中它,可以退回先前文件夹,也就是关闭当前文件夹.例
如,双击应用程序文件夹,像游戏等的文件夹会出现,同时会出现"BACK"黑箭头图
标,打开游戏文件夹.会看到一些游戏的图标和一个"BACK"大黑箭头图标.单
击大黑箭头图标,可退回到前一个文件夹.直到退回应用程序文件夹.通过用鼠
标击中文件夹和黑箭头图标,就可以自由的打开和关闭文件夹来使用其中的文件
了.
要想安装新的软件包,首先选择glint窗口右侧的"Available"按钮.这将打
开一个标有"Avalable Packaes"的一个glint新窗口(见图3-8),Caldera光盘中未
安装的软件包将会以文件夹和图标的方式显示在这个窗口中.它们被分别放在
适合的文件夹中.打开文件夹可以把它们显示出来.单击打算安装的软件包的
图标,按下窗口右侧的"Install"按钮.软件包就会自动安装到系统上,可以同时选
中个软件包的图标,把它们一次安装,当你要取消已经选中的图标时,只要用鼠标
再单击一次就可以了.被选中的软件包的图标仍然会出现红色边框,按下"Install"
按钮后,这个图标就会从"Available paekages"窗口下消失.并出现在它被安装的
窗口.
图3-8glint的Available Packages窗口
在glint窗口中选择任何文件的图标并按下"Info"窗口,就可以获得文件的简
单描述,它们试图打开"Available Padcoges"窗口时,收到了没有可安装的PRMS
文件(并且不能选择完全安装选项)时,最大的可能是你没有安装Open Linux光盘
驱动器.你需要打开终端窗口,在其中键入mount命令,单击fwm任务栏中的
Xterm按钮.然后在终端窗口的提示符下键入mount/mnt/cdom命令.
3.7.4命令行安装:Redhat Package Manager
如果你不使用工作平台,可以在命令行用rpm命令来管理和安装软件包,rpm
是Redhat软件包管理的行命令,它通常执行软件包的安装,删除和确认.实际上
Lisa和glint也是使用rpm命令来安装和删除软件包,每个软件包通常是一个由
包含软件文件和关于如何安装这些文件的信息文档组成的RPM软件包.每个
文档驻留在一个带有.rpm文件名的文件中,表明它是一个可被Rehat软件包管
理器安装的软件包.
你能用rpm命令来安装和删除软件包.rpm使用了一套决定完成各种功能
的选项.表3-1列出了这套rpm选项.-i选项将安装指定的软件包,-e选项将删
除软件包,-qi选项将访问系统是否安装了某个软件包并显示此软件包的信息(-qpi)
选项将询问一个未安装的软件包文件).--h选项列出了全套的rpm选项.--force
选项是用来进行无条件的强制安装.下面是rpm命令的语法(rpm-package-name
是你要安装的软件包的名子).
rpm options rpm-package-name
软件包的名字通常是非常长,包含了发行日期和版本,所有的都是从.rpm结尾,
在光盘Packages/RPMS目录下是一套标准的Linux应用程序.在OpeLinux
目录以及子目录下,驻留了像Xapps1和develp1等类型的应用程序.一些软件
包通常被发现在名叫RPMS的子目录下.像Java Development Kit和Xfm的
专用程序,放在OpenLinux/Contrib目录下.从Caldera光驱上安装软件包.先
进入适当的RPM目录,再安装,你想要的软件包,如果你不能进入此目录,可能是
因为你的系统可能没有安装光盘驱动器,如果是这样,参考前面部分如何安装你的
光驱(mount/mnt/cdrom),例如,要想出入包含Java Development Kit(JDK)的子目
录,键入如下命令.
$ cd/mnt/cdrom/openLinux/contrib/RPMS
Ls命令是列出了全部的软件包,如果你知道一个软件包的开头一个或几个字
母,可以用Ls命令和匹配等来显示它,文件包的列表通常很长超出一个屏幕,用通
配符*和Ls命令显示软件包的详细名字是很有效果.下面的例子表明了如何列
出X-Windows软件包.
$ ls x*
下面的例子中,用rpm命令安装JDK软件包,注意:因为要键入文件的全名,可
以用Ls命令显示JDK *来查找全名.
$rpm -i JDK_static_1.0.2.p 12-3.i386.rpm
安装和载卸软件包之间并没有什么不同,当你想安装一个软件包时,必须知道
它是否已被安装.可以用rpm命令的-qi选项来安装一个软件包.下面的例子中,
用户可以来确认JDK是否已被安装在系统中,注意不用键入JDK文件名全名.
如果已经被安装,文件的名字及安装的目录已经注册在系统中.
$ rpm -ql JDK_static
用-qpi选项来查看已被安装的软件包的目录及软件包里的所有文件.下面
的例子是列出JDK文件包中的所有文件.
$ rpm -e JDK_static
要删除一个系统中的软件包,首先用rpm-qpi来确定此文件包的确已被安装
在系统中,然后,用-e选项来删除它,用-qpi选项,不必知道文件的全名,只要知道应
用程序的名字就可以了.在下面的例子,是用户删除系统中的JDK_static文件.
用-qpl选项来查看已被安装的软件包的目录及软件包里的所有文件.下面
的例子是列出JDK文件包中的所有文件.
$ rpm -e JDK_static
联机帮助中说明了rpm命令的全部功能
$man rpm
3.7.5安装网络资源中的软件
从网上安装软件是很复杂的,你必须先登录到远端的资源位置.你需要知道
软件安放的地点,然后用Netscape或ftp工具来下载软件包.如果正和一个
Internet相连,首先必须使用pppd(表3-2列出了RPM软件包的几个fpt网址).
有些软件包是被压缩的文件,并不是RPM格式,你可以用gnuzip和tar命令来打
开压缩文件再安装它.第7章详述了这一过程,所有的RPM软件包都是从.rpm
结尾的,当下载这样的软件包时,必须用rpm命令来安装它.最好使用RPM格式
的软件包.
通常,一个软件应用程序是一个RPM格式的软件包:或者对一些系统上没有
Redhat软件包管理器的系统来说是一个tar文档,许多RPM软件包是放
Redhattp网址:ftp.redhat.com下/pub/contrib/i386目录中.你可以轻松地从这
个网址下载软件并且安装它,从其它的Linux相关信息网址如Snnsite和tsx-11
中可获得一些压缩的文件和RPM软件包,在ftp.caldera.com网址中的
/pub/netscape/narigator目录下,可以找到为Linux系统使用并且是RPM格式
的Netscape流览器版本.或在Netscape的.ftp网址(ftp 5.netscape.com)下找
到这文件的压缩版本.
下面的例子是用ftp连接Linux ftp网址ftp.caldera.com来下载Netscape
网络浏览器,用户键入一个anonymous作为一个注册ID和一个Internet地址作
为一个口令,经常,一个映射网址列表将被显示.映射网址包含了那个ftp网址中
的所有文件,当由于ftp网址太繁快以至于不允许进入或太慢时,可以试着进入一
个映射网址.
进入ftp网址后,用cd命令,用户可以转到放置Linux Netscape浏览器的
/pub/netscape/navigator目录下.然后用户进入3.01目录找到Navigator的3.01
版本,键入Ls命令和带有通配符的,软件包开头几个字母,显示像需要的软件包的
列表.用户首先键入Ls nets*来显示此文件包的全名,要用ftp下载软件包,你必
须使用文件的全名.像ftp.caldera.com指示的那样,用户第一次注册时,大部分
网址会以二进制格式自动下载文件.如果不是自动下载,你必须用binary命令来
指定二进制格式,使用get命令然后下载软件包,一旦完成你所需的软件包下载任
务,你就能通过用close.quit命令离开这个ftp网址.
下载后,通过rpm-i命令安装RPM软件包,被下载的文件通常包括README
文件和其它文件.不要忘了阅读它们.学生和老师可以免费注册使用Netscape
Navigator.而其它人不是免费注册的,注册后你能够被提供技术支持和升级服务,
否则,可以免费使用非注册的Netscape Navigator.
$ rpm -i package-name
在Netscape软件包中,你必须使用强行安装的选项,Open Linux系统中已经
存在/usr/bin/netscape文件(这个文件只是不含有Netscape),你可以用--force选
项使带有Netscape程序的文件覆盖原有文件(注意,--force选项中有两个-).
$rpm -i --force netscape -3.01 -6.i386.rpm
另一方面,你能够用Netscape来寻找浏览和下载软件,而不必使用全部ftp
命令.在Netscape下,用ftp://代替http://来处理一个ftp网址名,例如Redhat,你
应键入[url]ftp://ftp.redhat.com.Netscape[/url]浏览器将列出此目录下的全部文件,你可以
用滚动栏来浏览.双击一个目录的名,可以转到别的目录.每个目录名字前存一
个黄色文件夹的图标,例如,你必须用鼠标双击/pub目录,然后屏幕显示此目录的
内容.双击contrib文件夹,再从contrib文件夹中的目录和文件中,选择i386目
录,才可能到达/pub/contrib/i386目录,图3-9是用Netscape显示一个ftp目录.
图3-9Netscape ftp显示
选择一个要下载的软件包,首先必须按住SHIFT键,然后用鼠标来单击软件
包名字,这会出现一个对话框,显示出包名字并指出要下载到的目录名.单击OK
按钮来下载,图3-9表明了这样一个窗口,然后你能用rpm-i命令来安装它.
3.8 远 程 通 讯
用Linux直接和远程系统相连是非常容易的.简单地配置调制解调器(modem)
后,你就可以使用几个通讯程序来拨号并注册入网.最流行的两个流行远程通讯
程序是minicom和seyon提供了容易使用的界面和像自动注册等的高级特点.
3.8.1调制解调器的设置
如果你的PC有一个调制解调器,它可被连接四个通讯端口中的一个,这些端
口的名字分别是:COM1,COM2,COM3和COM4,这些端口也被用于像鼠标等的
串行口设备.通常,鼠标使用COM1,COM2,COM3和COM4,这些端口也被用于
像鼠标等的串行口设备.通常,鼠标使用COM1,moden使用COM2,或者COM4,
要配置调制解调器,你需要知道你的鼠标和modem使用的端口.COM1与COM3
是计算机上的同一端口,所以,千万不要让你的鼠标使用COM1端口,而让modem
使用COM3端口.否则当你使用modem时会发现鼠标被切断.如果你的鼠标
与COM1相连,那么你的modem应用COM2或COM4端口.
在Linux系统中,四个端口有不同的名字,调制解调器的端口是以/dev/cua0
为起始的(注意,开始的数字是0,而不是1)./dev/cua0是第一个端口
COM1,/dev/cual,/dev/cua2,/dev/cua3分别是二,三,四端口,许多Linux通讯
程序里,你需要知道modem所连的端口.
一些通讯程序允许/dev/modem来访问modem的端口,通常这个名字不存
在你的系统中,它是modem所用端口的别名,你一旦知道modem所用端口可以
用ln-s命令来创建别名.下面的例是为.com2,端口,/dev/cua1创建别名
/dev/modem.首先你必须是超级用户的身份注册.
#ln -s/dev/cua1/dev/modeo
鼠标所使用端口的另名通常设置为/dev/mouse,这个端口通常是
/COM1,/dev/cau0.
# ln -s/dev/cua0/dev/mouse
3.8.2远程通讯程序:minicom和seyon
mincom是一个可以使你注册到其它系统的终端仿真器,它不是一个X-
Windows程序.任何用户帐户口都可以通过命令行来运行它.键入minicom命
令就可以启动它,可以用CTRL-A加另外一个字符来使用命令,例如CTRL-A-D
键将出现一个拨号目录,按ESC键可以退出任何窗口.CTRL-A-Z键显示列出
不同命令的帮助屏幕.在这个屏幕中,你能够按命令相对应的字符来执行命令,按
CTRL-A-P键会出现一个屏幕,要求你键入你的modem参数.按CTRL-A-O键
出现一个屏幕,要求你键入你的modem参数.按CTRL-A-O键出现一个配置菜
单,端口设置选项会产生一个选择modem使用端口的屏幕.例如/dev/cua1.调
制解调器选项产生一个键入modem信息的屏幕.文件名和路径选项让你选择
上或和下载文件的路径.
按下CTRL-D键,出现一个拨号目录,选择你要与之连接的系统号码,设置一
个远程连接.拨号目录允许你用屏幕底部的命令增加和编辑选项.用左右光标
移动键选择选项,用上下光标键选择准备拨打的号码然后选择拨号命令.在屏幕
上可看到注册和口令提示符,你也可以创建一个自动执行拨号和注册操作的文
本.
minicom支持zmodem,ymodem,xmodem和Kermit转换协议,用CTRL-A-
S键可以发送文件用CTRL-A-R键接收它们,minicom允许你增加可获得的新协
议CTRL-A-H键挂机,CTRL-A-X键退出minicom.
Seyon是一个运行在工作平台上的一个远程通讯程序,它提供了一个终端仿
真和支持用于下载,上载文件的传输协议.它包括一个拨号目录和一个自动注册
和下载的脚本语言,Seyon界面由分布式窗口,按钮和菜单组成,每个部件支持各
种特点.拨号目录允许你编辑注册文本,来选择像自动重播等优点,终端仿真使用
Xterm窗口,使它具有像滚动缓冲器,剪切和粘贴的功能.当Seyon启动时,它显
示了一个带有不同按钮的命令中心窗口,每个按钮执行不同的任务.Tranfer按
钮是用来下载文件,用Dial按钮,可以拨号和注册到一个远程系统.
3.9使用调制解调器和Internet连接,pppd和ezppp
如果使用modem通过电话线与Internet相连,你就必须设置PPP连接,点对
点(PPP)协议是大部分使用modem与Internet相连的协议(你的计算机是通过
网卡直接与一个Intranet相连.你的网络连接应该是它配置好的.如果没被配
置好,可以用Lisa来配置它).
在Linux系统中,pppd命令完成了PPP连接,20章将会详述,你可以用下面
部分描述的方法直接执行pppd命令,也可以通过Ezppp Internet连接工具来实
现.Ezppp并没有放在你的光盘上,你必须从Redhat Contrib目录下下载它.要
热这样做,首先要设置一个ppp连接,下面部分简要叙述了如何用pppd命令设置
的ppp连接,20章将再次详述.
3.9.1pppd
大部分的Internet服务器在它们与Internet的连接中使用动态的本地和远程
地址.这里描述了一个简单的动态连接,20章详细讨论了pppd和静态地址.pppd
使用两个文件来建立连接.chat文件规定了如何用注册名和口令与服务器相连.
Option文件包括了一套pppd用来配置连接的标准选择.
你首先应该设置pppd选项,pppd有很多选项.例如,noipdefanlt选项,指示
了pppd从ISP远程系统中探测和使用一个动态IP地址.你可以在PPP命令
行的Speed后面列出各种选项,但这可能使命令行变得十分长和复杂.另一种
方式,pppd允许你键入/etc/ppp/Options文件中的选项,pppd将自动阅读和使用
这个文件中的选项,这里列出了你需要使用的标准选项,用Crisplite Vi或XEmaes
编辑器来编辑,/etc/ppp/Option选项并键入这些命令.
/etc/ppp/Options
Crtscts
defaultroute
medem
as yncmap o
noi pdefault
现在准备设置连接信息,Chat命令会完成拨号连接,Chat必须明确全部连接
信息,电话号码,注册提示符,用户ID号,口令提示符和口令,及一些连接用的字符
串,Chat操作由一对期待与回答的字符串形成的一些选项组成,第一个字符串是
期望接收的内容,第二个字符串是收到时发送回答的内容,如果你不想收到任何内
容,使用一个无效的空串"".下面的例子中,首先是期望不收到正文回答准备拨
号.
"" ATDT 5556666
远程系统通常发送一个注册提示符,经常是一个带冒号的"login",你只需要最
后几个字符Ogin,不要忘了冒号,你键入用户的ID号,回答依据不同的ISP,你可
能需要在用户ID号后加上n如mylogin\n.
ogin:mylogin.
注册进入系统后,你能期望收到口令提示符,仍仅需要最后几个字符Word:回
答你的口令.
Word :mypass
用Chat命令把期望回答对合并在对话操作中,通常使用-v选项,以便Chat
报告其行动.
' Chat -v -f " "ATDT 5556666 Ogin:mylogin Word:mypass'
你必须把对话操作放进pppd命令可调用的执行中,整个对话操作用单引号
引起来,并键入pppd命令的同一行中,Chat程序用Chat文件中的信息初使化调
制解调器,向远程主计算机拨号入网,然后用用户ID和口令注册.
然后,你需要键入带有Chat调用modem的设备名,及速度的pppd命令.标
准的语法显示如下,如果你对ISP有一个静态连接,在速度后还要加上ISP静态
Internet地址.
pppd Options Serial-device-name Speed
Serial-device-name是调制解调器(modem)的设备名,通常是/dev/cua加上
从0到3的一个数字.速度是波特率,V44 modem的波特率是14400.V.28
modem的波特率是38400或57600在modem文件中找到它能支持的最高速
度.
Connect选项指示pppd完成一个连接,在pppd后键入Connect选项和Chat
命令.整个Chat操作用单引号引起来.下面的例子中,用户用Chat操作激活
pppd.调制解调器连在端口2./dev/Cna1速度是57600波特,单引号中包括了
期望回答对.
# pppd connect 'Chat-v"" ATDT556666 Ogin:mylogin word:
mypass' plev/cua1 57600
现在,可以试着用pppd与远程系统相连了.一些号码可能是错误的,也可能
你没有使用正确的字符串或modem初使化出错,pppd会把每一步的操作级在
/var/log/messages文件中,你可以more,tail或cat来查看,对于pppd操作的描
述,如果连接成功,它会列出IP地址.下列的命令将显示ppp操作,完成后,用
CTRL-C键回钮提示符下.
$tail -f/var/log/messages
下面是一个简单的ppp操作,显示了pppd和chat注册到远程系统时
/var/log/messages文件中的内容,当看到本地和远程系统的IP地址时,连接已经
建立.键入CTRL-C结束报告,也可以使用几个不带-f选项的tail/var/log/essages
命令,可以使不用使用CTRL-C.
用disconnect选项击活pppd,断开ppp连接,必须用Chat指示modem挂
机,你可能必须键入HO等modem命令一定要包括modem设备行或
/dev/modem.
# pppddisconnect 'Chat" " +++ATHO OK' dev/cua1
有几种方法自动完成这一过程,你可以创建一个含有期望回答对的Chat文
件,也可以把整个pppd命令放在一个Shell脚本里,单独使用Shell脚本名来执
行全部命令,20章详述了其它的特点.
3.9.2Ezppp
使用Ezppp程序,可以不必亲自配置连接.Jaypaintor编写的Ezppp使PPP
配置过程与在Windows 95中,配置Internet Setup Winzard一样简单,屏幕出现
要求键入Internet和modem信息的,对话框,一旦配置完成,只要单
击"CONNECT".按钮连接就被完成了.Ezppp是在超级用户下运行的,但需要
系统上其它用户可以使用这些专门文件的允许设置,见/usr/doc/exppp*目录下的
文件.它也包含了你可用网络浏览器浏览的详细信息.
Ezpppp并没有存放在你的光盘中.但可能过rpm-i命令来下载它的RPM
软件包并安装它们.这些软件包放在/pub/contrib/i386目录中ftp.redhat.com下
的Redhat Contrib目录下.目前,这个程序是二级发行,但仍很稳定,Ezppp网页
放在[url]www.sev.net/~cameron/exppp[/url]网址下(你可以通过第1章表1-3所列的
Linux网页资源来连接它).在这里,可以发现更多的信息和Ezppp How-To文件,
并下载软件).这部分描述了要求使用QT共享库第一版本�D�D二级发行9的安
装和使用.QT共享库也在Redhat Contrib目录下由rpm配置并自动安装.现
在可获得Ezppp的最新版本,包括静态和非静态的版本,如果下载非静态版本,不
必使用QT库.
下面的例子是使用ftp从ftp.redhat.com网址上下载Ezppp用cd命令,用
户可转到放置Linux软件的/pub/Contrib/i386目录下.这个目录包含大量软件
包.
键入Ls和带通配符的文件包开头几个字符,可以列出准备获得的软件包在这
个例子中用Ls ezppp*显示Ezppp软件的全名.用get命令下载Ezppp RPM
文件然后用另一个get命令下载QT库.hash命令用于下载大的文件.它为每
个接收到的数据包设置一个hash标志使你了解ftp正在工作.
一旦下载后,你能用rpm-i命令来安装RPM软件包.
$ rpm-i ezpppp-1.0139-z.i386.rpm
$ rpm-i qt-1.31-1.i386.rpm
你安装了Ezppp后,可能 打开Xterm窗口键入ezppp命令来运行这个程序.
你也能通过fvwm程序菜单来运行它.此菜单放在应用程序菜单里的其它应用
菜单中.图3-10显示了主屏幕单击"configure"按钮来设置一个连接.屏幕会出
现带有一个面板的配置窗口,就好像Window 95的配置工具一样,一个面板在最
前端.其它面板的标签显示在上部,在配置窗口里有三个面板. 一个帐号,另一
个调制解调器的设置,还有一个是一般的特点.帐号包括了你的Internet信息.
根据你开设不同Internet服务商的个数.你可以有多个帐户(大部分的用户只有
一个帐号).单击"New"按钮创建帐号.这会出现带有一套Internet信息面板的
窗口.拨号面板为了键入是像用于连接Internet电话号码等的连接信息的地方.
确定键入一个用于连接的名子,它可以是任何名."Argnment"按钮将产生一个可
键入PPP要点的另一个窗口,20章详述了PPP保护选项.通常只需要已经被
键入的-detach和defaultrout选项.
图3-10EzPPP main window
大部分的准标选项做为缺省值,图3-11显示了Configration,New Account,
和Arguments窗口在New Account(新帐号)窗口中IP面板用于键入任何本地和
远处的IP地址,和子网屏蔽.每个选项有一个动态(Dynamic)和静态(static)的确
认按钮.并且动态的按自己被缺省设置.如果你的Internet服务商提供你一个
动态的IP地址和子网屏蔽号.你可以离开这个面板,否则,如果你有一个静态的
本地或远程地址,你就必须用这个面板键入它们.
图3-11配置Ezppp,新帐号,和CustomizepppD Argument窗口
单击标有DNS的标题栏,屏幕出现了域名服务器面板.在这里,键入Internet
服务商的域名服务器的IP地址.单击IP地址的方框.键入地址.再单击"Add"
按钮增加它到域名服务器的列表中.图3-12表明了带有IP地址例子的面板.
图3-12Ezpppp域名服务器面板
然后,你必须创建一个可以输入用户名和口令的注册文件,以便能和Internet
服务器相连.为了做到这一点,你可以单击Script标题栏产生Script面板.你会
看到一个叫Login Script的面板,其中有几个按钮和方框,可以用Send和Receive
两个指令创建一个执行如下任务的简单文本.
Receive ogin:
Send username
Receive word
Send password
你将看到一个Expect按钮,这通常是一个带有几个可能列出注册指令选项的
一个弹出式菜单,当选中跳出式菜单,选项会出现,包
括:Expect,Send,Pause,Hangup和Answer.Send和Expert指令通常发送和
期望接收一个字符串.如果你想发送一个指令,选择Send选项,期望收到指令,
选择Expect选项.按钮右侧的方框是键入你想操作的指令的地方.例如,如果
期望收到"ogin"指令,你应选择Expect选项并在方框里键入ogin.单击Add按
钮,把它放在文件中,在Add按钮下的框中你会看到"expect"项目中对应"ogin".
如果你单击此项,按Remave按钮,可将其删除.如果打算插入一个指令用Insert
按钮.
大部分注册文本只需包含两对发送和期望收到指令,一个是为了注册名,另一
个是为了口令,第一个口令是期望收到"ogin"第二个口令是发送用户名,第三个口
令期望收到文本"word",第四个发送口令.根据Internet供应商的不同,这可能会
有一点变化.图3-13表明了一个注册文本的例子."my-login-name"做为用户
名"my-password"做为口令.
图3-13Ezppp注册文本面板
你已经完成了键入Internet信息,单击OK按钮关闭Soript和新帐户窗口,在
Configure窗口中单击调制解调器标题打开调制解调器面板,确定调制解调器的
端口是正确的,以/dev/cua开头附加从0到3的数字,在微机中,有四个端口供选
择通常一个调制解调器与第2个或第4个端口相连.名字分别是/dev/cua1和
/dev/cua3(计数从0开始,所以端口1是cuao,端口2是cua1).
可以设置/dev/modem做为端口的别名.然后,你需要核对拨号前缀和一些
特殊设置.单击Edit按钮产生一个窗口,显示一系列的配置modem的方框,通常,
一些缺省设置已被键入再分别核对Connect选项和Hangup选项.缺省连接
CONNECT对于大多数ISP都是有效的.Hangup字符串是大部分modem使
用的挂执字符串.
完成后,单击OK按钮,准备使用EzPPP.单击主Ezppp窗口中的Connect
按钮,如果出现问题,单击调试按钮,出现一个显示连接过程和错误的窗口,当
EzPPP完成一个连接,它会显示接通的时间,按Disconnect按钮,可退出EzPPP
程序.
你也可以在fvwm工具栏中设置一个按钮,单击它时启动EzPPP.
/USR/lib/X11/fvwm目录下的System.fvwmrc.ggod stuff文件末尾键入下面一行
(在fvwm工作地点菜单里的工作平台菜单下选择Good Stuff来显示工具栏).
*GoodStuff EzPPP Game2.xpm Exec "" Xlanrch ezppp
EzPPP是运行在超级用户帐号下.但是,对于modem设备设置允许权限,可
让普通用户操作EzPPPP PPPd程序和域名配置文件可以允许普通用户使用它
们,第7章详述了允许权限,看/usr/doc/ezppp目录下的E2PPP How To文件.
用chmod命令和数字666来获得使用调制解调器,下面的例子设置了连接COM2
端口/dev/cua1的调制解调器允许权限.
# chmod 666/dv/cua1
用chomd命令+s选项可以设置pppd程序的使用权限.
# chmod +s/usr/sbin/pppd
下面的例子是确定pppd命令只被超级用使用.
# chown root.root pppd
可以用ls-l命令查看pppd命令的使用权限
# ls -1/usr/sbin/pppd
-rwsr-sr-x |root voot 8460+Avg 14 1996
/usr/sbin/pppd
要使用户可以增加域名服务器,必须允许普通用户可以使用/etc/resolv.conf
文件.这是一个选择.超级用户可以容易地增加域名服务器.
#chmod 666/etc/ resolv.conf
每个用户可以用前面的几个步骤创建他们的EzPPP帐号,用户home目录
下的.ezpppre文件包含了这些信息,事实上,不同用户可以EzPPP与不同的
Internet服务器相连.
3.10 电子邮件:XFMail
一旦你与Internet相连,就可以用XFMail程序从Internet服务商的Mail服
务器中收到邮件,大部分的ISP用POP服务器接收邮件,首先,找到服务器的地址,
从fvwm工作地点菜单中选择fvwm Good Stuff工具栏,单击XFMail按钮开始
XFMail程序.或者在一个终端窗口内键入xfmail.当启动XFMail后,会出现一
系列用于一般配置的配置窗口.单击OK键接收缺省值.选择MISC菜单中的
Config选项,配置与POP服务器的连接.这会打开一个带有几个完成不同配置
任务按钮的窗口.单击POP标题,POP窗口被激活,在这里你可以键入POP服
务器的Internet地址,用户名和口令.
图3-14XFMail
在XFMail窗口中,按钮执行了各种邮件任务(见图3-14).如果在按钮上放置
鼠标箭头,一个解释按钮功能的标鉴将显现,单击正确按钮,可选则查看信件,信件
的标题选被显示出来,双击一个标题,屏幕会显示邮件的全部信息.
3.11 X-Windows和网络配置
用网络配置工具,可以增加和改变你的网络配置.如果你正在与一个网络相
连,且安装时没有配置它,可以用这个工具执行对网络的配置,在超级用户的工作
台上,Admin-Tools文件夹中的netcfg图标代表网络配置工具,双击图标,配置窗
口就被激活,20章详细讨论了netcfg工具的使用.
如果你不能启动X-Windows,可能是因为系统没有安装正确的显示驱动程序,
尽管XF86 Setup程序提供了大多会显示卡的驱动程序,但有几个是它不支持的,
详见21章和附录C.也可使用Xconfigurator或X86Config等其它X-Windows
配置程序,它们是用行来配置的工具.
3.12 总结:Linux系统的启动和退出
通过在注册提示符下键入注册名在口令提示符下键入口令,来使用Linux系
统.一旦注册后,屏幕显示可以键入命令的命令行界面.命令带有选项和要点,在
命令行键入命令再回车来执行命令,当完成后,用logout命令来退出系统,注册提
示符重新出现如果要关闭计算机,必须用CTRL-ALT-DEL键来关闭Linux系统.
操作Linux系统时,一定要记住必要的启动和关闭步骤,采取下述2个步骤可
进入Linux工作平台.先启动Linux系统,注册,再用startx命令启动Caldera
工作平台的X-Windows,退出工作平台,注锁帐号,然后才能用CTRL-ALT-DEL
键关闭系统.
你也可以用一个窗口管理器与你们的系统交互,Startx命令起动Caldera工
作平台,它使用fvwm窗口管理器和它自己的文件和程序管理器,从File菜单中选
择Exit Desktop来退出工作平台,下面列出了操作Linux系统的所有步骤,记住注
册和图形用户界面的起动过程和图形用户界面的退出,注锁帐号和关机过程.
1.启动计算机
2.在LILO提示符下键入Linux,回车
LILO:Linux
3.在注册和口令提示符下分别键入用户名和口令.
Login: richlp
password:
4.一旦注册后,出现shell命令行提示符$.
$
5.在Shell提示符下键入Startx命令,启动X-Windows图形用户界面.
$ startx
这个命令安装了X-Windows图形用户界面,包括X-Windows,管理器和
Caldera工作平台外形.他们的集合叫做Caldera工作平台.
6.选择File菜单中的Exit DeskTop选项退出工作平台,即退出X-Windows
图形用户界面,回到窗口管理器.
7.单击屏幕上任一键,跳出窗口管理器菜单,选择Exit Desktop退出窗口管理
器.这时出现一个子菜单,选择Quit Deksktop,回到命令行提示符.
$
8.在命令行键入exit或logout再回车来注销帐号.
$ logout
9.然后可以再以其它用户名注册另一个帐号,或用超级用户注册帐号.
login:
10.现在可以用CTRL-ALT-DEL键来关闭系统.
11.当屏幕出现空白,计算机会重新启动,这时,可以关闭计算机.
你可能需要用超级用户身份执行一些如创建新用户和安装软件的系统管理
任务,以超级用户身份注册,然后启用工作平台,使用系统管理工具完成这些任
务.例如,用Usercfg允许你创建和删除用户,netcfg允许你配置你的网络连接.
Linux的Caldera分支部门把软件组织易用glint工具和rpm命令安装和拆
卸的软件包.glint工具放在工作平台上.在命令行,可用rpm命令执行相同的操
作,表3-1列出了rpm命令的选项.
表3-1Redhat Package Manager(RPM)
操作方式 效果
表3-2Linux Resoures Web Pages(Links)and RPM Software ftp Sites
Linux RPM软件 目录 描述
ftp站点
第4章 窗口管理器和桌面:X-Windows
不用命令行的界面,你可以用基于X-Windows的图形用户界面来和Linux系
统进行交互.采用这种界面你可以使用图标,窗口,和菜单来发布命令和运行程
序.和普通的基于个人计算机的图形用户界面譬如像Winsows或者是Mac OS
不同的是,Linux和Unix系统把图形用户界面分成三个分离的部分:X-Windows,
窗口管理器,和程序/文件管理器.X-Windows是底层的标准图形工具,它提供所
有基本的图形操作,譬如像打开窗口或者显示图象.一个窗口管理器负责处理窗
口的操作,像改变大小或者移动窗口之类.窗口管理器在窗口被显示的方法上有
所不同,使用不同的边框和窗口菜单.但是所有的这一切都是采用了同样的底层
X-Windows图形工具.文件管理器负责处理文件的操作,它使用图标和菜单,和
一个程序管理器来运行程序,通常允许你从一个工具条上选取常用的操作.不像
窗口管理器,文件和程序管理器可以在它们的功能上差别很大.Caldera桌面是
一个商业级别的文件和程序管理器.而Caldera桌面和Xfm文件管理器都可以
运行在fvwm窗口管理器上.
所有Linux和Unix系统都使用同样标准的底层X-Windows图形工具.这
意味着,在大多数情况下,基于X-Windows的程序可以运行在任何一个窗口管理
器和桌面的系统上.基于X-Windows的软件常常可以在Linux和Unix的ftp站
点上可以看到,它们通常标注为X11.你可以下载这些包然后在你的Caldera桌
面上或者是在fvwm下直接运行它们.有些可能已经是Linux的二进制形式,你
可以下载,安装,然后直接运行.另一些将会是源码的形式.用一些简单的命令它
们很容易被设置,编译,然后安装在你的系统上.一些应用程序,像Motif应用程序,
可能还需要一些特别的库.
4.1 窗口,文件和程序管理器
采用一个窗口管理器你可以用你的鼠标来完成象打开,关闭,改变大小,和移动
窗口这样的窗口操作.有几种窗口管理器可以用在Linux系统上(如表4-1).一
些更通用的窗口管理器象自由虚拟窗口管理器(Free Virtual Windows
Manager(fvwm)),fvwm95,LessTif(mwm),Motif(mwm),Xview(olwm),和
AfterStep(afterstep).fvwm是Robert Nation写的用于绝大多数Linux系统上
的主窗口管理器.它使用简单,功能强大,而且灵活.fvwm95是一个有着Windows
95的用户界面的fvwm.它使用和Windows 95操作系统使用的相类似的窗口,任
务栏,和菜单.将来的版本还将包括一个允许使用图标来显示和操作文件的文件
管理器.LessTif是Motif的一个免费的克隆.所有Motif的应用程序都可以在
LessTif下运行.Motif是一个和它所使用的Unix一样的商业产品.Xview是一
个Linux版本的Sun系统的OpenLook界面(不是Solaris).AfterStep是用于
NeXT操作系统上的NeXTSTEP界面的一个克隆.
窗口管理器在底蹭的X-Windows图形工具之上运行.X-Windows实际上
提供了让你打开,移动和关闭窗口以及显示菜单和选择图标这样的基本操作.
fvwm和Xview用各自的方式管理这些操作,提供不同的界面以供选择.所有的
窗口管理器,无论它们外观上有多么大的差别,都是使用X-Windows工具.从这
个意义上说,Linux不是只能绑定于一种图形用户界面.在同一个Linux系统上,
一个用户可以使用fvwm窗口管理器,而另一个用户可能使用Xview,还有可能使
用Motif.
窗口管理器一般仅仅提供非常基本的窗口管理操作,像打开,移动,和对窗口改
变大小.而文件管理器和程序管理器让您用图标和菜单来管理和运行程序.使
用文件管理器,你可以在不同的目录窗口中拷贝,移动,或者删除文件.使用程序
管理器,你可以用任务栏和程序图标来执行命令和运行程序.一个桌面程序利用
文件管理器和程序管理器的功能来提供一个有菜单和图标的虚拟桌面,用以访问
文件和管理程序.Caldera桌面就是这样一个桌面程序.表4-1列出了几种其
他的桌面,许多都可以从Web站点上免费的获得.
有些窗口管理器的功能增强包括了桌面的一些特点.在许多Linux系统上
使用的fvwm就在窗口管理的功能之外还加上了程序管理的功能.它有一个任
务栏和一个工作区菜单让你可以用来访问你所有的X-Windows程序.使用菜单
或者是任务栏,你可以在fvwm中直接运行任何X-Windows程序.其他的窗口
管理器,像fvwm95,提供了一个和Windows 95一样的任务栏和初始菜单的桌面
界面.它基于fvwm2,但是使用Windows 95的界面.除了程序管理,它还计划
最终支持一个名叫探索者(explorer)的文件管理器.使用fvwm95,你可以像你在
Windows 95中那样显示文件和目录的图标.
4.2 启动和退出X-Windows窗口管理器和文件桌面
像在前一章中指出的那样,你在命令行方式下输入starx启动X-Windows.
你的X-Windows服务器将在窗口管理器之后加载.你的OpenLinux系统现在
被设置为在Caldera桌面中自动加载窗口管理器.桌面运行在窗口管理器之上.
窗口管理器的背景颜色是淡蓝色.你可以在Caldera加载的时候看到这些.
Caldera桌面是一个棕色或者是灰色的窗口,上方是任务栏,在窗口中是程序的图
标.你可以用你的鼠标来访问菜单,打开窗口,以及运行程序.
你通过从文件菜单里选择退出桌面选项来退出Caldera桌面.象许多窗口
应用程序一样,它的桌面在屏幕的上方有一个菜单栏.单击"文件"就可以下拉菜
单.退出桌面是最后一个选项.
当你选择退出桌面的时候,Linux仅仅关闭Caldera桌面.它并不关闭fvwm
窗口管理器.Fvwm窗口管理器在你的屏幕上显示为深蓝色的背景.你必须退
出窗口管理器才能关闭X-Windows退回到Linux命令行方式界面.
要关闭fvwm窗口管理器,首先弹出fvwm工作区菜单.通过在深蓝色的背
景的任何一点上单击就可以看到这个菜单.你必须点住它然后往下拉一点才能
让这个菜单停留在屏幕上.选择这个菜单的最后一项,离开桌面.这个操作打开
一个子菜单,它其中的一个选项就是退出桌面.选择这个就会退出窗口管理器和
X-Windows.你接着就可以回到给你一个$提示符的命令行方式界面.在命令行
方式下,你可以在任何时候通过输入starx命令来启动fvwm.
你还可以在fvwm中启动其他的窗口管理器或者桌面,以及显示fvwm的任
务栏.在工作区菜单中选择桌面选项.它将打开一个窗口管理器的子菜单.这
个菜单中的"开启任务"选项将显示fvwm的任务栏,其中包括一些X-Windows经
常访问的程序的图标,譬如象你的万维网浏览器."Start Looking Glass"选项开
启Caldera桌面(Looking Glass是Caldera桌面的另一个名字).窗口管理器的
选项将带出一个子菜单列出你的系统上已经安装的其他窗口管理器.通过在这
个菜单里选中其它启动的窗口管理器来启动它.fvwm已经被设置成在它的菜单
中加入了几种常用的窗口管理器.但是,olwm Xview窗口管理器还不是完全的
Xview窗口管理器.你必须首先从网上下载然后安装它们.
4.2.1系统设置的工具
为在X-Windows下运行设计的一系列容易使用的设置工具,使你可以完成象
安装软件,设置打印机,或者添加新用户之类的任务.XF85Setup,就是用来设置
X-Windows的这样一个工具,就像glint用来安装软件一样.Lisa是一个菜单驱
动的管理工具,它包括了系统管理的各个方面.在Redhat Linux的发布中还有
一些基于窗口的工具提供了对打印机,用户,和文件系统很方便的设置.这些工具
将在第3,7,9,和12章加以讨论.这些工具可以从Caldera桌面或者是fvwm菜
单以及fvwm任务栏中启动.为访问这些工具,首先你必须用root登陆.然后用
starx命令启动X-Windows.从Caldera桌面你可以看到一个名为管理工具的
图标.双击它打开这个窗口.每个工具的图标都显示在里面.从fvwm窗口管
理器中选择应用程序,然后是系统管理.从子菜单中选择你想要的工具.fvwm
的任务栏有一个名为管理的按钮将带出一个系统设置的按钮条.对应于同样的
工具也有对应的按钮,象gline和XF86Steup.还有写名为RH工具的按钮.它
们会带出Redhad工具的按钮条,象用来管理你的文件系统的fstool,安装打印机
的printtool,和设置你的网络的netcfg.fstool没有设计成和自动mount的守护
进程amd一起工作,usrcfg也没有设计被用于NIS网络.
4.3 窗口和图标
你在窗口中运行程序,显示信息,和对文件列表.一个窗口由几个基本的部分
构成.外面的边界包括改变大小的控制.还有不同的按钮可以让你控制窗口的
大小或者关闭窗口.在边界的内部是窗口的主要部分:题目栏用来显示窗口的名
字;菜单用来让你发布命令;窗口面板用来显示窗口的内容.
fvwm窗口,如图4-1所示,可以让你用按钮和改变大小区域来改变它的大小
和形状.改变
大小区域是窗口的边界线.点住改变大小区域后移动鼠标来让窗口在高度
和宽度上变大和变小.
通过单击右上方的最大化按钮(一个正方形套着一个正方形的那个按钮)你可
以使窗口充满整个屏幕.要把窗口恢复到原来的大小,只需要再次单击最大化按
钮.
如果你想把窗口变成一个图标,可以单击最小化按钮.它是最大化按钮边上
那个小正方形中间有一点的按钮.当你把一个窗口变成图标以后,你可以双击这
个图标来打开它.
你可以通过选定它的题目栏或者边界(不是角落)在桌面上移动任何窗口.把
你的鼠标移动到窗口的题目栏上,点住并在你移动鼠标的时候按住它.你就会看
到窗口被移动了.当你到达你想要的位置的时候,松开鼠标的按钮.仅仅单击题
目栏将把该窗口从层叠窗口中移动到最前.把鼠标移动到窗口的边界直到你看
见鼠标指针变成一条短的直线.然后点击住边界并拖动鼠标指针.你会看到整
个窗口被移动.
为X-Windows设计的应用程序有它们自己的菜单,按钮,甚至在它们窗口中
的图标.在这样的程序中你通过菜单和图标来发布命令.如果你在运行一个象
编辑器这样的应用程序,窗口的内容就是菜单操作的数据.如果你在使用文件管
理器,内容就会是代表文件或者目录的图标.一些窗口,象终端窗口,可以没有菜
单.
你可以同时打开几个窗口.但是,同一时刻,只能有一个窗口处于活动状态.
活动窗口的边界是紫色的,非活动窗口边界是灰白色的.把你的鼠标指针移动到
一个非活动窗口上可以使它成为一个活动窗口,而使其他窗口成为非活动窗口.
你不需要单击鼠标,就象你在其他的图形用户界面,象微软的Windows或者Mac
的OS中所做的那样.
层叠的窗口有时候会导致混乱.使窗口活动并不是自动的使它移动到最前.
一个活动的窗口有可能被其他窗口部分的遮挡.要把一个窗口移动到最前,你需
要单击该窗口的题目栏.单击该窗口的其他任何一个地方只会使它变成一个活
动窗口,而不会使它移动到最前.
图标代表你可以运行的程序或者那些程序的数据文件.他们出现在你的桌
面上,在文件管理器的窗口里面,下方是该文件或者应用程序的名字.要运行这个
应用程序,只需要双击它的图标.
4.3.1 终端窗口:Xterm
在Linux的窗口管理器中你可以打开一个叫做终端的特殊窗口,它给你提供
一个标准的命令行界面.你可以在此窗口的命令行上的提示符后面输入带有参
数和选项的命令.这个终端窗口是一个叫做Xterm的程序创建的.你可以从fvwm
的任务栏,程序菜单,或者象Caldera这样的桌面中开启一个终端.fvwm任务栏
上有一个标注为Xterm的按钮.只要单击它即可以打开一个Xterm窗口.相应
的,从fvwm工作区菜单中选中Shells,再从子菜单中选中终端,再从那里选中
Xterm也可以打开一个Xterm窗口.要从Caldera桌面上打开一个终端窗口,你
只要双击你的桌面左上角图标栏里的终端的图标即可.
一旦打开,终端窗口就显示一个Shell提示符,一般是"$",你可以象在命令行方
式下
一样输入命令.你会看到你输入的Linux命令的结果在终端的窗口上显示
出来,跟在后面的是一个shell提示符表明命令行的开始.必须注意的是终端窗
口必须是你的活动窗口你才能使用它的命令行.如果它不是活动窗口,你需要移
动鼠标指针使它变为活动窗口.
Xterm窗口支持几个文字处理特性.在窗口的左边是一个滚动条,你可以象
前滚动来查看显示过的文本.当文本移出屏幕的上方,你可以用回滚来看它.如
果你在查看有很多文件无法在一个屏幕里显示的目录,这对你就很有帮助.Xterm
还让你拷贝文本再粘贴到命令行上.你用鼠标的左键来拷贝文本再用第二个键
来粘贴文本.你可以拷贝任何先前显示的文本,譬如象先前的命令或者那些命令
的输出结果.要拷贝文本,按住鼠标的左键拖动到你想要拷贝的地方,到顶端的时
候松开.双击将选择一个单词,三击将选择一行句子.如果你想延伸选择的文本,
用鼠标的第三个按钮.当你选择好文本,单击鼠标的第二个按键.这就自动把文
本粘贴到命令行的末尾.重复单击就会重复粘贴.这种拷贝粘贴的操作在从先
前的命令中创建一个复杂的命令的时候十分有用.你可以在不同的终端窗口间
拷贝和粘贴.
(术语"第二个"和"第三个鼠标按键"可能容易混淆.在一个双键鼠标上,第二
个按键就是指右键,而第三个键就是指左右键同时按下.在一个三键鼠标上,第二
个键就是指中键,而第三个按键就是指最右边的按键.这三个按钮是用来访问
Xterm的菜单.一个Xterm的窗口有四个菜单:主菜单,一个虚拟终端选项菜单,
一个虚拟终端字体菜单,和一个Tektronix窗口选项菜单.要弹出主菜单,按住Ctrl
键并单击鼠标左边的按钮.要弹出虚拟终端选项菜单,按住Ctrl键并单击鼠标的
第二个(右边或者中间)按钮.要弹出字体菜单,用Ctrl键和鼠标的第三个按钮.
你就可以设置字体和字符显示的大小).
一个Xterm窗口可以仿真DEC VT 102终端和Tektronix 4014终端.有模
拟这两种的窗口,尽管开始显示的只是一个虚拟终端窗口.要显示一个Tektronix
窗口,在虚拟终端选项菜单上(Ctrl键和第二个按钮)选择这个选项.这将弹出一
个可以显示图形的Tektronix窗口.在Tektronix窗口中你可以按住Ctrl键并单
击鼠标的第二个按钮弹出一个Tektronix选项菜单.终端窗口有一种特别的能
力.它可以在它的命令行里运行任何X-Windows程序.这个终端窗口在X-
Windows环境中运行.要运行任何一个X-Windows程序,只需要打开一个Xterm
窗口输入命令,再敲击一个回车键.这个X-Windows程序就会在它自己的窗口
里运行.例如,要运行一个Netscape你可以打开一个终端窗口然后输入命令
netscape.一个新的窗口就会打开运行Netscape.你可以打开任意多的终端窗
口,可以在它们中的任何一个中启动一个X-Windows程序.但是,关闭一个终端
窗口同时也会关闭从这个终端窗口中启动的程序.
你会注意到在你输入X-Windows命令的终端窗口把自己挂起.当你输入回
车键运行程序以后它并没有跟随的命令提示符.那是因为终端窗口正忙于运行
你刚刚执行的X-Windows程序.你可以通过带有一个和符号(&)来激活该程序
使终端窗口释放自己,在那个程序在运行的同时来执行其他的命令.从技术上来
说,就此终端窗口而言这是把该程序放在后台运行(参阅第5章).但是你可以随
意移动到那个X-Windows程序在那里运行它.下面的例子将运行Netscape,释
放终端窗口来执行其他的命令.注意提示符:
$ netscape &
$
当你使用完毕终端窗口,在命令行输入一个exit命令来结束它.每个终端窗
口都是它自己的shell,exit就是结束这个shell的命令(在第5章里将详细讨论
shell).图4-1显示了终端窗.
图4-1fvwm终端窗口
窗口用户输入了几个命令,输出在窗口上显示.当你到达窗口的底部的时候,
显示的文字将一行一行的上卷,就像一个正常的终端屏幕那样.
当然,你可以使用窗口控制来使终端窗口变大或者变小.你甚至可以把它们
最小化到一个图标在晚些时候再打开它.
4.3.2X-Windows多任务
你的Linux X-Windows界面最有用的特性之一就是它可以同时进行几个操
作的能力,每一个都有自己的窗口.注意在命令行界面中你每次只可以工作在一
个任务上(这里有一个例外就是将在第5章要讨论的后台进程).你发布一个命
令在它执行完以后,你可以执行另一个.在X-Windows你可以同时运行几个不
同的应用.把你的鼠标指针从一个窗口移动到另一个窗口有效的使你从一个应
用切换到另一个应用.X-Windows的这个特性表明了Linux最有用的特性之一:
并发性,可以同时运行好几个进程的能力.在你的X-Windows界面中,你可以有
好几个应用同时运行,每个都有各自的窗口.
这个特性可以很容易的用终端窗口来演示.你可以在同一时刻有好几个终
端窗口,每个都有各自的命令行.要从Caldera桌面上打开一个终端窗口,双击图
标栏的终端图标;在fvwm中,使用工作区菜单或者是fvwm图标栏上的Xterm按
钮.要打开第二个终端窗口,再次双击该图标.还要打开另一个终端窗口,只要再
次双击这个图标,然后继续.每个终端窗口都有各自的命令行,把你的鼠标指针从
一个窗口移动到另一个窗口使你从一个命令行切换到另一个.你可以在一个活
动窗口中输入命令并执行它.你可以然后切换到另一个终端窗口再输入另一个命
令.每个终端窗口都相互独立的运行.如果你发布一个命令需要一段时间来运
行,你移动到另一个窗口,你会注意到你刚刚离开的那个窗口中的命令仍然在继续
执行.
图4-2包括任务栏和工作区菜单的fvwm桌面运行有终端窗口和Netscape
4.4 fvwm窗口管理器和桌面
尽管Linux上有很多窗口管理器可供使用,这一章只涉及fvwm的一些基本
特性.fvwm窗口管理器不只提供了基本的窗口,任务栏,和菜单工具,而且象虚拟
桌面几个高级特性.实际上,用fvwm你可以有好几个桌面,每个都有不同的窗口
和在其中打开的程序.图4-2显示了fvwm的工作区菜单和任务栏,以及在fvwm
中直接运行的Xterm终端窗口和Netscape浏览器.
4.4.1fvwm工作区菜单
要弹出工作区菜单,用你的鼠标单击然后稍微向下拖动.工作区菜单就会弹
出来.这个主菜单的选项引出子菜单.选择一个选项也将带出一个子菜单.这
些子菜单中的一些本身也列出其他子菜单.例如,应用将带出一个子菜单列出你
所有的X-Windows程序类别.如果你选择Xpaint,Xpaint程序将会开始运行.
当你安装或者删除一个X-Windows程序的时候,fvwm将会自动更新工作区
菜单.经常使用的X-Windows程序项目已经被设置.现在,fvwm被设置成检查
在/usr/X11r6/bin和/usr/openwin/bin目录下任何新的程序.这些将被加到工作
区菜单中.
要退出fvwm, 从这个菜单中选择退出桌面项目.这带出一个包括有停止桌
面选项的子菜单.当你选择这个,fvwm将会和X-Windows一同退出.
4.4.2GoodStuff任务栏
最近的fvwm版本包括GoodStuff任务栏可以用按钮来显示经常使用的X-
Windows命令(看图 4-3).
图4-3fvwm GoodStuff taskbar
GoodStuff任务栏将在你启动fvwm窗口管理器的时候被显示;如果没有,
你可以通过在工作区菜单的桌面菜单中选择启动GoodStuff带出它.每个按钮都
将显示程序的名字.只要单击该按钮就可以启动那个程序.例如,要打开一个
Xterm窗口,只需要单击那个标注为Xterm的按钮.
WWW的按钮将启动你的因特网浏览器(Netscape如果你有,否则就是
Arena).Xfm按钮启动Xfm文件管理器,用菜单和图标来访问你的目录和文件.
如果你选择一个标准的安装,你可能没有安装所有的这些程序.如果没有,你将被
问到你是否愿意安装它们.
要使GoodStuff任务栏永久的显示在你的fvwm桌面上,在fvwm工作区菜
单的桌面上的设置菜单的GoodStuff菜单中选择位置选项.你可以选择把它放
在你的屏幕的顶部,中间,左边,或者右边.你可以随意的移动或者重置任务栏的
大小.要移动任务栏,用鼠标右边的按钮点住它的边缘,然后拖动到你想移动到的
地方.要重置大小,用鼠标左键单击再拖动它的边缘或者一角.
如果你不想再显示任务栏,在位于fvwm工作区菜单的桌面上的设置菜单中
的GoodStuff菜单中选择"无效"选项.
任务栏的配置文件叫作system.fvwmrc.goodstuff.它位于/usr/lib/X11/fvwm
目录下.文件的底部有任务栏的按钮的条目.你可以通过在一行的前面加上一
个#来删除一个按钮.你还可以给新按钮添加其他行.一个按钮项目用关键字
*GoodStuff开始,跟随其后的是你想显示的按钮和你想来在按钮上显示的图片.
这行结束的部分是要运行的命令,通常用Exec命令开始,跟着一个空字符串和
xlaunch 命令然后是程序名.下面的例子给Crisplite编辑器添加一个按钮.激
活Crisplite编辑器的命令是mcr.
*GoodStuff Crisplitedtp.xpmExec "" xlaunch mcr
.xpm文件就是用来显示的图片文件.你可以在/usr/share/data/pixmaps和
/usr/openwin/lib/pixmaps目录下找到很多这样的文件.
4.4.3虚拟桌面: fvwm
开始的时候,你可能会觉得虚拟桌面令人不安�D�D它是一种内置放大特性.
你将发现在你的屏幕上显示的区域可能只是桌面的一部分.移动你的鼠标指针
到你的屏幕边缘移动屏幕到桌面隐藏的隐藏的部分.你还会注意到在你的桌面
显示的右上角有一个小方块.这叫做pager,你用它来查看你的虚拟桌面的不同
区域.这个pager被分成四个小正方形.你可以把每个正方形想象成一个独立
的桌面扩展.它就像你有有一个很大的桌子,只有部分被显示在屏幕上.这个桌
子活动的部分就是加亮的正方形,通常是白色的.这就是现在显示在你的屏幕上
的那部分桌面.
通过移动这个加亮的正方形你可以移动到桌子的不同地方.你用鼠标的右
键来单击和拖动这个加亮的正方形.你也可以单击pager四个部分中的一个来
移动到桌子的那个部分.你可以把不同的窗口放在你的桌子的不同部分然后当
你需要它们的时候再移动到那个部分去.用这种办法,你想放在你的桌面的所有
东西就不一定要一起显示在你的屏幕上,使你的屏幕显得凌乱不堪.
如果你在桌面上工作,突然所有的东西都不见了,这可能是你碰巧单击了其中
的一个正方形.只要再次单击右上方的正方形就回到你原来的显示.你就可以
看到你原来的窗口重新出现了.
某些图标始终显示在你的屏幕上,不论你的虚拟桌面显示在那个部分.这些
被称为"粘性"(sticky)图标.fvwm pager就是这样一个图标,和fvwm任务栏一样.
例如,fvwm pager总是显示在你的屏幕的右上角上,而不管你在查看你的虚拟桌
面的哪一部分.而另一方面,窗口不是粘性的.它们停留它们原来在虚拟桌面的
位置上.
Caldera桌面既可以是粘性的停留在屏幕显示上也可以是一个窗口,保留在
虚拟桌面的一个窗口中.
Calder任务栏最左边的图标使其在粘性和窗口之间切换.如果它是一个窗
口,你将看到桌面有一个标准的fvwm窗口边界,你可以随意移动或者重置大小.
作为一个粘性图象,窗口没有边界.不论屏幕移动到虚拟桌面的哪里,Caldera桌
面在屏幕上的显示都带有任务栏,菜单和图标.
你放置在你的桌面上的图标每次都将显现在相同位置.这样,你就可以访问
桌面上的一个图标.
开始的时候,你的虚拟桌面的屏幕区域可能不到你的pager的一个部分.你
可以在/etc/XF86Config文件中通过把虚拟选项设置成你的显示器的分辨率,就
像第2章中所写的那样.在大多数15英寸的显示器中,这就是800*600.
大多数窗口管理器,包括fvwm,也支持多种桌面.这个桌面,在这个意义上,是
一个屏幕中包含了图标,菜单,和窗口.象fvwm这样的窗口管理器让你可以使用
很多种不同的桌面.fvwm可以支持四十亿个桌面.
4.5 Caldera 桌面
Caldera桌面是一个集成的程序和文件管理器,给你提供菜单和图标使你可
以管理你的文件,运行程序和设置你的系统.Caldera桌面提供了对很多Linux
可用的软件程序以及因特网工具很方便的访问.它是和Caldera商业包一起提
供的一个商业产品.Looking Glass桌面是和Caldera Lite一起提供的一个九十
天的试用版本(在fvwm工作区菜单中,Caldera桌面就是指Looking Glass).你
可以利用Caldera桌面的全部特性,象工具栏,设置工具,文件管理窗口和自动历
史列表.
当你启动Caldera桌面的时候,你会注意到在顶部显示有一个图标栏.开始
的时候它包括代表了常用的Linux操作的图标,象打开一个终端窗口或者查找一
个文件.这是一个可设置的图标栏.你可以添加你自己的特定操作的图标.这
个桌面还有很多种文件管理器.对于每个目录,你可以打开一个窗口查看该目录
中所有的文件,显示为图标.你就可以用双击它们的图标来运行应用程序,或者你
可以把文件从文件管理器的窗口移动到桌面上以便很方便的存取.
桌面是一个你可以放置图标的窗口.右边和底部的滚动条可以让你在有很
多的图标不能装在一个屏幕里的时候,在这些图标之间移动(见图4-4).你会注
意到在你的桌面窗口上已经有几个图标.例如,一个表示Crisplite编辑器的图标
和另一个表示Netscape浏览器的图标.你可以随意的删除或者添加这些图标.
桌面顶部的任务栏包括了Linux常用的操作,象文件管理器和终端窗口.你
可以在任务栏中添加你自己的图标,也可以删除那里已经有的图标.图标栏的右
边是你的时钟和一个用来获得帮助的图标.桌面的帮助特性将在你指向的桌面
的任何一个部分显示气球状线圈围成的帮助文字.
在图标栏之上是一个标准的菜单栏.不同的选项包括从设置桌面到发布
Linux命令之类的操作.
你已经在文件菜单中看过退出桌面选项.请注意每个菜单名字中加下划线
的字母.这表示一个快捷键,你可以用它来执行一个命令.例如,要打开一个文件
菜单,你可以用按F来代替把你的鼠标移到菜单栏上来按下文件项目.
图4-4The Caldera Desktop
通过用鼠标在你的屏幕上选中不同的窗口,菜单,和图标,你可以运行和那个图
标相关的应用程序,为它打开一个新的窗口.
鼠标的右键用来打开一个文件下拉菜单.不用把鼠标移动到菜单栏上,你只
要单击鼠标右键就在你的屏幕上的那个位置打开一个文件菜单.然后你就可以
选择一个选项,譬如退出桌面.
4.5.1目录窗口
除了让你输入命令和文件名字参数的命令行,Caldera桌面上的目录窗口让
你可以使用菜单,图标,和窗口来管理文件和目录.在桌面中,一个目录就表示为
一个窗口.不用再用ls命令来列出你的目录中的文件,文件已经被显示成图标.
目录被表示成象文件夹一样的图标.这个想法是因为目录象文件夹一样存放文
档�D�D那就是,文件.你打开一个目录查看其中的文件,就像你打开一个文件夹查
看其中的内容.
所有的目录窗口都有相同的菜单集合用来完成文件和目录操作:文件,查看,创
建,排序,选择,运行,和设置颜色.文件菜单让你完成基本的文件操作.查看菜单
让你可以用不同的方式显示你的文件,可以是图标,名字,或者是带有全部文件信
息的名字.创建菜单让你创建新的目录.排序菜单让你用名字,大小,种类,或者
任何其他的文件特性给文件排序.用选择菜单,你可以用文件名字的模式匹配来
选定一系列文件,或者选中该目录下所有文件.
运行菜单让你打开一个可以输入命令的命令行.而设置颜色菜单让你对你
的文件名字着色编码.要打开一个目录窗口,把你的鼠标指针移动到图标栏上文
件夹的图标.
当你双击一个文件夹的图标,打开目录窗口就出现;你可以在那儿指明你要打
开的目录.一个标注为"目录:"的盒子出现在窗口的上方.在这个盒子中,你最近
存取的目录被加亮显示.清空这个盒子,就可以访问你的工作目录.按下DEL或
者BACKSPACE键来删除那里已经有的加亮显示的路径名.然后,单击窗口底
部的OK按钮.一个你的工作目录的文件管理器的窗口就会打开,并显示其中所
有的文件和目录.
你可以用打开目录窗口来访问你希望的任何一个目录.你所要做的只是在
目录框中输入那个目录的路径名.打开目录窗口包括一个历史框列出了你访问
过的所有目录的路径名.如果你看见其中有你想访问的目录,只需要单击它,它的
路径名就出现在标有"目录:"的框里.
通过在查看菜单里取消选定可定位的选项,你可以把目录窗口分成上下两个
部分.表示目录的文件夹图标出现在上方的面板中,在下面的面板中文件的图标
上由它们用于的应用程序而显示不同的图象.在每个面板的右边是一个滚动条,
你可以用它滚动来显示在你的特定目录下的目录或者文件.你还可以改变每个
面板的大小.在两个面板之间,和他们的滚动条相邻的地方是一个小条,你可以用
它使一个面板变大而另一个变小.把这个小条向上移动使目录面板变小而使文
件面板变大.把它向下移动则正好相反.
图标一旦被选中,你可以在它上面执行一种操作.例如,要拷贝一个文件,选择
那个文件的图标,然后在文件菜单中选择拷贝选项.一个特别的窗口就会打开,提
示你输入要拷贝的文件名称.要删除一个文件,选择文件的图标然后在文件菜单
中选择删除选项.这个文件就会被删除,它的图标也会从目录窗口中删除.
在一个图标上基本的操作之一就是打开操作.你可以通过把鼠标移动到一
个图标上双击或者单击这个图标再从文件菜单中选择打开选项来打开一个图
标.不同的操作将被执行,取决于这个图标是一个文件,目录,还是应用程序.如
果你打开一个应用程序,那个应用程序的窗口就会打开,应用程序开始执行.另一
方面,如果你打开一个目录,另一个目录窗口将被打开,显示该目录下的图标.如
果你打开的是一个文件图标,和那个文件相关联的应用程序将使用那个文件并执
行.例如,如果mydata文件是一个Vi编辑器数据文件,那么当你双击该文件的
图标的时候,Vi编辑器应用窗口就会打开并且mydata文件就是要编辑的文字.
你可以在目录窗口中创建你自己的目录,就像在命令行界面下,你用mkdir来
创建目录一样.要创建一个目录,首先在创建菜单中选中目录选项.这就创建了
一个新的目录图标,它的下面是加亮显示的缺省名Dir1.只要输入你希望的新的
目录名就可以给它更名.一旦你完成了输入新的名称,你可以通过在窗口上其他
的任何地方单击来取消选择它.
目录作为一个图标存在于窗口中直到你为它打开一个窗口.有两种方法可
以打开一个目录窗口.你可以给这个目录打开一个单独的窗口,你可以可以把当
前的窗口改变到那个目录下.要改变这个窗口来显示一个新的目录,只要双击那
个目录的图标.在效果上,打开一个目录和用cd命令来改变你的工作目录是相
同的.你的菜单选项就可以在新显示的目录中的文件和图标进行操作.
你会注意到在你的文件管理器窗口中显示的目录图标里有一个名字有两点
构成的目录,...两点表示父目录.如果你想移动到当前目录的父目录,只要双击
这个目录的图标.这样做和用cd ..命令是等效的.
你用文件菜单中的移动选项来移动一个文件或者给文件改名.要给文件改
名,选中文件的图标在选择移动选项.这会打开一个在顶部标有"移动到:"的框的
对话窗口.你只要输入那个文件的新名称.你还可以有其他的选择,只用你的鼠
标,你可以使用单击再拖动的方法来把文件从一个目录移动到另外一个目录.首
先,为你想把文件移动到的目录单独打开一个窗口.然后把鼠标移动到你想移动
的那个文件的图标上.按下你的鼠标并在你把图标拖动到你想把文件移动到的
那个目录去的时候不松开鼠标.然后松开鼠标按钮.那个文件的图标就会出现
在新的目录中.
至于移动操作,有两种方法可以拷贝一个文件:或者是用鼠标选中再拖动,或者
是用文件菜单中的拷贝选项.使用文件菜单,首先选择该文件的图标,然后选择拷
贝选项.这就打开把东西拷贝到目录的对话框窗口.在窗口上部标有"拷贝到:"
的框里输入拷贝的名字.然后单击对话框窗口下方的OK按钮.
使用鼠标和CTRL键,你可以用单击再拖拉的方法来把文件从一个目录拷贝
到另一个目录.用来拷贝的单击再拖拉的方法和用来移动的不大一样.因为你
必须在整个过程中按住CTRL键.在移动文件中,你首先为你想把文件拷贝到的
目录打开一个窗口.然后把鼠标移动到你想拷贝的文件上选择它.按住CTRL
键,并在你把图标拖动到新窗口的时候按住并保持你的鼠标左键.松开鼠标按键
和CTRL键,该文件的图标就出现在另一个目录里.
你可以删除文件.或者是用把文件的图标拖动到垃圾箱的图标上,或者是在
文件菜单中选中删除选项.如果你把你一个文件拖动到垃圾箱,它还会存放在那
里直到你清空垃圾箱.你还可以删除整个目录,如果你愿意的话,通过把他们的目
录的图标拖动到垃圾箱里.
你可以通过在文件菜单中选择信息选项来设置一个文件或者目录的权限.
这将打开一个有三个选项的窗口:访问,属主和时间.单击访问的按钮会打开一个
有访问权限列表的窗口.在这里,你可以单击按钮来指明属主,同组人和其他用户
的读,写,和执行权限.(权限将在第7章详细解释).属主的选项允许你改变一个
文件的主人.
4.5.2管理Caldera桌面
桌面是一个你可以为你的需要定制的一个界面.你可以在你的桌面上放上
文件,程序,和目录的图标来使访问更加容易.你可以创建你的桌面的布局,保存
一套你的桌面上特定的打开的窗口和图标的快照.然后你就可以通过在你的图
标栏上指明项目或者设置文件怎样被创建,显示,和删除的首选项来设置你的桌
面.
当你在桌面上工作时,你可能需要为不同的任务打开不同的图标,窗口,或者程
序.例如,如果你在和一个数据库打交道,你可能打开一个数据库的窗口和一个用
来存放数据库文件的目录窗口.要做图形工作,你可能在你的桌面上有图形程序
的图标和存放图形文件的目录.不必要在你从不同任务之间切换的时候打开和
关闭各个窗口,你可以把你整个的桌面保存为一个定制.对于数据库工作,一个用
户可能为它创建一个名字象"数据工作"这样的定制然后在他或者她需要在数据
库上工作的时候再打开这个定制.
已经提供的有好几种定制.root和管理员定制对当你作为一个root用户登
录来做一些管理的操作的时候是很有用的.它们包括一个用来访问设置工具的
管理工具图标.第3章的图3-1展示一个root的定制.用户缺省的定制包括一
个时钟和图标栏上几个常用的按钮.最左边的按钮将把桌面扩展成整个屏幕并
把它变成粘性,在虚拟桌面上随着你移动.再次单击使它分解成一个窗口.图标
栏上的下一个按钮是用来给出一个小一些的桌面窗口或者使它成为粘性图象.
图4-4展示了带有用户缺省定制的Caldera桌面.
要创建一个定制,把你的桌面设置成你希望定制的那样,在桌面上打开你想打
开的窗口再放上你想放置的图标.然后在定制菜单中选择定制选项.这就打开
一个定制窗口.在标有"定制"的框里选择当前的选项(第一个选项).在定制框的
下面是一个名字区域.单击它在输入你想给你的定制取的名字.然后,在窗口底
部的按钮中单击保存按钮.单击关闭按钮来关闭定制窗口.新的定制就会在定
制菜单中列出来.要恢复它,只要从此菜单中选中这个选项.
4.6 安装窗口管理器和文件管理器
你的OpenLinux Lite系统提及Caldera桌面的时候,只是指fvwm窗口管理
器和一个所有权文件和叫做Looking Glass的程序管理器.Caldera桌面程序的
名字叫做lg.用OpenLinux Lite,你被授予三个月的Caldera桌面免费使用期,然
后它就不可使用了.你可以继续使用fvwm窗口管理器和它自己的程序管理器
和任何一种公开许可的的文件管理器.还有GNU的文件管理器可供使用.用
这样的文件管理器,你可以使用图标和菜单,而不是只用fvwm提供的窗口.
在你的OpenLinux Lite的CD-ROM中还有Xfm的文件管理器.你可以用
glint或者Lisa来安装它.
在网上有许多不同的文件管理器你可以下载和安装.你可以从Linux 的ftp
镜像站点来下载文件管理器,通常是在/pub/Linux/X11的目录下.Linux应用和
实用程序页列出了几个文件管理器的站点,你可以连接到和下载软件(看第3章
的表3-2).如果你知道你需要的文件管理器的包的名字,最好是从Redhat的
contrib目录下,ftp.redhat.com/pub/contrib/i386下载它的RPM版本.
作为fvwm窗口管理器一个替代品,你可以用其他窗口管理器象Xview,
fvwm32, fvwm95, LessTif, AfterStep, and Motif. 这些当中也带有文件管理器给
你一个完整的桌面界面.你可以从Redhat的ftp站点的contrib目录下下载这
写中的任何一个窗口管理器的RPM版本.
如果你使用ftp,用带有那个窗口管理器的名字的开头几个字母和一个星号的
ls命令来列出它的RPM文件.当然,用象Netscape之类的浏览器来下载要容
易的多.绝大多数这些窗口管理器也自己带有它们的Web站点.你可以从那里
下载原始的代码.
4.6.1启动窗口管理器
一般,你应该可以先启动fvwm,然后在fvwm的工作区菜单中的桌面选项中
的窗口管理器的菜单中选择那个窗口管理器的名字来启动绝大多数窗口管理
器.那儿有fvwm95,olvwm,和其他(但是没有AfterStep)的选项.如果你想直接
启动窗口管理器,你必须把一个选项放在.xinitrc文件里.第21章详细讨论了怎
么设置一个.xinitrc文件和在其中放置一个窗口管理器的调用.
你的home目录开始没有一个.xinitrc文件.当你启动X-Windows,.xinitrc
文件将被用来设置你的X-Windows过程,而不用系统的.xinitrc文件.系统
的.xinitrc文件在/usr/X11R6/lib/X11/xinit/xinitrc.下面的命令生成它的一个备
份.要确定你是在你的home目录下.注意.xinitrc文件有一个前置的点号,而系
统的xinitrc文件则没有.
$ cp/usr/X11R6/lib/X11/xinit/xinitrc .xinitrc
你必须启动你想要的窗口管理器你只需在你的.xinitrc文件末尾加上命令.
在其它的窗口管理器的命令所在的命令行前, 确认加上一个#号来使其无
效.文件的别的地方不要动.下面的例子演示了取消命令fvwm,并取而代之的
运行fvwm95的指令.
# start the window-manager and redirect output to xconsole
# some applications are started by the window manager itself
# exec fvwm >/dev/console 2>&1
exec fvwm95
要回到fvwm, 只需将它的命令中的那个符号#去掉, 并在fvwm95所在的那
一行前加上一个.
如果你还想自动运行其它的程序, 例如, 一个文件管理器, 你可以在窗口管
理器的命令行前加上这些程序的命令.在命令行末尾加上一个(&).第21章更
详细的讨论了这个.下面的例子在AfterSetp窗口管理器启动时运行了Xfm文
件管理器.
xfm &
exec afterstep
4.6.2fvwm 和 fvwm2
当有新版本的fvwm时你可以轻松的下载并安装.本书随书配套的
OpenLinuxLite光盘上有fvwm的1.24r版本.这个当前版本支持诸如任务条, 工
作区域菜单和模块这些特征.模块是一些小程序, 它们可以动态的加载和运行,
和Mac里的extension很类似.
现在正在开发fvwm的2.0版本,称作fvwm2. 版本2.0.46正在以beta版
的形式发放. fvwm2扩展了fvwm的功能, 以便提供更好的配置文件,允许定制各
个窗口, 及提供更好的模块支持.例如, 面版模块在fvwm2下配置了一个CDE
一样的任务条(CDE代表Common Desktop Environment,公共桌面环境, UNIX
图形接口的新标准.) fvwm2是现在fvwm的发展项目, 将会代替fvwm 1.24. 当
fvwm2的新版本出来时你可以从fvwm的网页上得到它们, 现在的地址是
ww.hpc.uh.edu/fvwm.html. 新版本的fvwm的RPM包装也可以在Redhat的ftp
站点下的Redhat contrib路径下找到: fvwm2-2.0.46-4.8386.rpm.fvwm2的第
一个完整的发放版本就要完成了.
4.6.3Xview: olwm 和 olvwm
fvwm窗口管理器的一个替代选择是Xview. Xview是Sun系统的OpenLook
界面的实现.熟悉OpenLook的人将发现Linux版本运行几乎一样.你可以从
sunsite.unc.edu这个ftp站点下载Xview, 在/pub/Linux/libs/X/xview路径下,
xview-3.2p1.4.bin.tar.gz文件.这个Xview包既包括了olwm也包括了olvwm
窗口管理器, 还有几个工具, 例如一个时钟和一个文本编辑器.Xview的olvwm
版本支持虚拟桌面.
你的OpenLinux光盘上的Xview包里有一套共享的库,提供了OpenLook
菜单, 按钮, 和其它的窗口小部件.这些在许多Linux应用程序里用得到.虽然
使用这些Xview窗口小部件的应用程序不用使用Xview窗口管理器, 可是它确
实使用了Xveiw的库.因此你可以在fvwm窗口管理器下运行象进行文本编辑
的Xview编辑器这样的程序.文本编辑器使用的按钮和菜单是Xview的窗口小
部件, 虽然他可以在一个fvwm窗口下运行.你的OpenLinux的Xview包不是
完整的Xview窗口管理器.它是库的一个子集, 包括一些常用的应用程序.
要安装完整的Xview窗口管理器, 首先从sunsite.unc.edu下载它的tar文
件.然后你得去掉OpenLinux的Xview包的安装(使用Lisa).检查一下以确认
目录/usr/openwin已经完全被删除了.如果不是, 到/usr路径下(使用cd/usr)用
rm -r openwin命令将它删除.然后使用tar xvf命令解开你下载的Xview包.
这在你的当前路径下创建了一个叫usr的子目录.在这个usr目录下有一个叫
做openwin的子目录, 把它移到/usr路径下(注意斜杠).
# mv usr/openwin/usr
然后运行/usr/openwin/lib目录下的ldconfig命令.这将安装Xview库.
# ldconfig/usr/openwin/lib
确认一下/usr/openwin/lib项在/etc/ld.so.config文件里.因为Xview文件不
是一个RPM包, 你必须自己完成安装任务, 例如将文件移到正确的路径下和运
行ldconfig.别的窗口管理器可以得到RPM格式的, 那可以自动安装和为你设
置它们的文件.
图4-5Xview Openlook 窗口管理器
从fvwm开始olwm, 你可以通过在fvwm工作区域菜单的"桌面"项的窗口管
理器菜单中选择"切换到olvwm", 也可以使用一个修改过的.xinitrc文件来调用
olvm或olvwm来代替fvwm.最好通过一个.xinitrc文件开始来使用olvwm.olvwm
提供了一个虚拟桌面, 象fvwm一样.当你第一次启动olvwm窗口管理器时, 你
会看到一个空白的屏幕, 有一个带六个矩形区域的呼叫器显示在左上角.双击
任何一个矩形将移到那个屏幕.要显示出Xview工作区域菜单, 用右键在屏幕
的任意位置单击.工作区域菜单是一个可以别住的菜单.你可以在顶部看到一
个图钉形状的图案.如果你单击它, 工作区域菜单将保持显示在屏幕的那个地
方.再单击一下图钉就使得可以移动工作区域菜单.工作区域菜单上的'X11
Program'项自动列出已安装了的X11程序, 而'Xview Progs'项列出了所有Xview
程序(安装在/usr/openwin/bin里的那些).
窗口组件比较fvwm起来略有不同, 虽然它们提供的功能大致相同.菜单用
右键显示.在工作区域菜单里, 你用右键单击菜单项右侧的小三角就可以显示
出子菜单.要移动窗口和别住的菜单你用左键拖动窗口的某条边(不是象在fvwm
中那样用右键).见图4-5.
Xview组件安装在/usr/openwin目录下.这里你将发现一个子目录, 例如是
/usr/openwin/bin, 里面有Xview的程序; 和/usr/openwin/lib,里面有Xview的
库.当X-Windows启动时, 它必须有一个叫做OPENWINHOME的外壳变量, 设
置成Xview的路径,/usr/openwin.如果你检查一下前一节讨论过的你的.xinitrc
文件, 你将看到做出这样的赋值的一项.
/usr/openwin/lib目录下有菜单文件, 这是用来显示Xview工作区域菜单和
子菜单的.你可以象这些菜单中添加项, 如果你愿意.一项包括要显示的标签
和将采取的行动.例如, 要在工作区域菜单里为Netscape加一项你得把下面这
项放到openwin-menu文件里.xview的man页面里有Xview菜单和你能定制
的项的详细解释.
"Netscape" exec/usr/bin/netscape.
你的光盘里有一个非常好的Xview文件管理器, 叫做treebrowser, 它可以
用命令tb来激活.也有一个Linux版本的XVfilemanager可用, 你可以从
XVfilemanager网站(见表4-1)下载它.按照INSTALL文件的指令来安装它.
装上了任何一个文件管理器之后, 你就有了一个完整的桌面.你也可以在诸如
fvwm或AfterStep的别的窗口管理器下使用XVfilemanager或者treebrowser,
只要你保留Xview的库.
4.6.4fvwm95和qvwm
fvwm95和qvwm是Linux的窗口管理器, 有一个Windows 95的用户界面,
连带有任务条和启动菜单.窗口组件是一样的.你甚至可以将一个窗口最小化
到任务条上.fvwm95是基于fvwm2窗口管理器的, 使用了很多相同的源代码,
而且象fvwm2一样, 它支持模块.现在, 它没有文件管理器, 不过有一个正在
开发中.它叫做explorer而且将操作起来与Windows 95里的文件管理器一样.
fvwm95窗口管理器有几个窗口模块提供和fvwm类似的功能.在Windows
95的任务条之外, 它有一个按钮条, 操作起来象fvwm的任务条一样.象Xterm
这样频繁使用的程序有自己的按钮.它还有一个呼叫器, 使用起来和fvwm的呼
叫器一样, 给你提供六区域的虚拟桌面.一个小按钮条将带出一个带有很少的
应用程序的任务栏.一个呼叫器模块显示出一个大一些的呼叫器,它描绘四个标
有象因特网和开发这样的不同任务的桌面.你可以在桌面之间自由移动, 就像
在区域之间一样.在屏幕背景的任何地方单击都会弹出一个菜单, 提供常用功
能项, 就像按钮条这样的模块一样.见图 4-6.
图4-6带有启动菜单,按钮条,pager,Xterm窗口和运行着Netscape的fvwm95窗口管
理器
fvwm95网页现在在[url]ftp://mitac11.uia.ac.be/html-test/fvwm95.html[/url], 有一个
官方的镜象站点在
[url]www.terraware.net/ftp/pub/Mirrors/FVWM95/fvwm95.html.[/url](你可以从fvwm网
页连到它, 而从[url]www.caldera.com[/url]网址的Linux资源页可以连到前者).对你的
OpenLinux系统, 最好从Redhat ftp网址, ftp.redhat.com/put/contrib/i386下载
软件的RPM版本,虽然你也可以从fvwm95网址下载它.还有几个图表包你应
该安装.另外, 如果你希望进行OpenLinux Lite的标准安装, 你就得先从你的
光盘上安装X-Windows开发库.现在的fvwm95包列表如下和更新的版本核对
一下.用rpm -i来安装它们.
fvwm95-2.0.43a-2.i386.rpm
fvwm95-icons-2.0.43a-2.i386.rpm
fvwm95-mini-icons-2.0.42-1.i386.rpm
fvwm95-modules-2.0.42a-1.i386.rpm
fvwm95-utils-2.0.42a-1.i386.rpm
qvwm是一个很稳定的Windows 95样式的窗口管理器, 它是用源代码开发
的.它是一个功能齐全的虚拟窗口管理器, 带有9个区域的呼叫器.快捷方式
可以移到桌面上的任何位置.
但是, 它现在还是处于beta测试阶段的产品.一个带qvmw Linux 可执行
的RPM包可以在Redhat的contrib目录下找到, 你可以在qv.myth.co.uk得到
从qvwm镜象站点下载的大约最新版本的源代码, 或者从表4-1列出的主页.
使用简单的的xmkmf和make命令你可以轻松的编译和安装qvwm.qvwm要
求libg++和xpm库, 所以在试图运行这个窗口管理器之前确认一下他们已经安
装.
qvwm的配置文件是qvwm.system, 在/usr/X11R6/lib/X11/qvwm目录下.
户也可以创建他们自己的配置文件, 叫做.qvwmrc. qvwm的man页里面详细
说明了如何做"启动"菜单项和快捷方式."启动"菜单项在配置文件里有一个项, 图
标, 命令, 都用双引号引起来.对于快捷方式项, 输入快捷方式名字, 你想快捷
方式使用的图标, 和将执行的命令.图标可以是任何像素图象.记得把像素图
象放到qvwm的pixmap目录下.下面是一个netscape的快捷方式.
"Netscape" "netscape.xpm" "netscape"
4.6.5LessTif: mwm
LessTif是一个OSF/Motif克隆, 它被设计来运行任何Motif程序.它可以
从LessTif网址上免费得到, 现在在[url]www.lesstif.org/lesstif.html.[/url]你可以从
Caldera网址Calderea Linux黄页上连过去.你也可以从Redhat ftp网址的
Redhat contrib目录下下载RPM版本: lesstif-0.87-2.i386.rpm.你用命令mwm
激活LessTif.现在, LessTif不能运行任何Motif程序.项目仍然在建设中, 但
它提供了看起来感觉象Motif那样的窗口管理器.
4.6.6AfterStep
图4-7The AfterStep window manager
AfterStep是作为在NeXT操作系统上使用的NeXTSTEP界面的克隆兴起
的, 但是从那之后增加了自己的功能, 如图4-7所示.源代码是基于fvwm窗口
管理器的.你可以从AfterStep网址(afterstep.edoc.com)下载AfterStep, 或者
从Redhat contrib目录下得到RPM版本, AfterStep-1.0-3.i386.rpm. AfterStep
有一个很有特色的应用程序装载器, 叫做Wharf, 它有其他应用程序的包.还有
弹出式菜单和NeXTSTEP风格的图标.AfterStep网址有很多屏幕快照, 说明
界面怎样不同的设置.还提供有例子.steprc配置文件.
4.6.7Motif
Motif是私有的软件: 你必须向开发者支付大概150美元来购买它.
Motif和Xview是两个主要的相互竞争的Unix窗口界面, 代表着两种不同
的窗口标准.这两种标准近年来已经综合成一个新的Unix的GUI标准, 称作公
共桌面环境(Common Desktop Environment CDE).现在已经有了for Linux的
带CDE接口的商用桌面.
4.7 Crisplite和XEmacs编辑器
OpenLinux Lite提供给了你两种易用而功能全面的文本编辑器, 它们是
Crisplites和XEmacs.这些编辑器合并了Vi和Emacs编辑器中体现的许多特
征(见17和18章).同时, 你能享受到基于窗口的编辑器带来的使用方便.你
可以使用菜单和工具条选择命令, 使用滚动条卷过文本, 重新设置窗口大小, 使
用鼠标来选择和移动文本, 或删除它(见图4-8).
图4-8Crisplite 编辑器
通过主窗口的Help菜单, 你可以打开在线帮助, 它提供了对Crisplite特征
的详细解释.
Crisplite编辑器已经安装在你的OpenLinux系统上了.在Caldera桌面, 你
将看到一个Crisplite编辑器的图标.只要双击它就可以运行它了.现在, Crisplite
不在fvwm工作区域菜单里.一条简单的增加它的方法是从/usr/bin/mcr程序创
建一个到/usr/X11R6/bin/mcr的连接.它可以用标题mcr显示其它的应用程序.
要运行XEmacs, 你可以单击fvwm GoodStuff任务条上的它的按钮, 或者在
Xterm窗口里输入xemacs命令.
Crisplite和XEmacs编辑器打开了一个有菜单和工具条的窗口.在窗口中,
你可以输入文字.使用鼠标, 你可以拖动来选择文字.工具条按钮提供了标准
编辑功能的简捷方式, 例如打开和存储文件, 拷贝和粘贴文本.Crisplite设计来
让你同时在许多个不同的文件上工作的.你可以打开几个窗口, 每个对一个单
独的文件操作.使用鼠标, 你可以从一个点中到另一个.你还可以打开缓冲区
来编辑文本, 以后可以将之存进文件.参看18章关于更详细的XEmacs的讨论.
你还可以用一个简单的基于屏幕的Crisplite版本, 它使用你的命令行界面.
你不用启动X-Windows和桌面.这种命令行版本的Crisplite只使用方向键来
移动光标和控制, 用功能键来发命令.但是它确实提供了一种全屏的视野, 允许
你在文本上逐屏的工作.你用cr命令启动Crisplite的命令行版本, 通常后面跟
着你要编辑的文件的名字.
$ cr myfile
你要编辑的文件将在屏幕上显示.你可以输入新的文字或者用方向键移到
文本的别的位置.CTRL-W键将你的文件存盘, CTRL-E命令允许你打开另
一个文件或一个新的.CTRL-X键退出编辑器.参考Crisplite手册以得到编辑
命令的列表.想使用Crisplite时用Vi命令的可以用-mvi选项激活编辑器, cr -mvi.
如果你想在fvwm工具条上用一个按钮访问Crisplite, 你得在/usr/lib/X11/fvwm
目录下的system.fvwmrc.goodstuff文件中为它做一项.前一节讨论fvwm工具
栏的时候演示了这样的一项.
4.8 总结: X-Windows
使用Linux X-Windows窗口管理器和桌面, 你可以和你的系统通过菜单, 窗
口, 和图标交互, 以及建立高效和简单的对Linux程序和Internet工具的访问.
要开始X-Windows, 在命令行输入startx命令.X-Windows支持很多种窗口管
理器和桌面.有几种已经列在表4-1中了, 连同你可以下载它们的网址.fvwm
窗口管理器支持虚拟和多桌面.它还有自己的工作区域菜单和任务栏, 你可以
从中开始X-Windows程序.一个虚拟桌面把桌面延伸以包含许多个屏幕视图.
fvwm虚拟桌面支持4个屏幕视图而fvwm95支持6个.有些项, 如任务栏认为
是粘性的, 将在所有的虚拟桌面的视图上显示.
桌面程序, 如Looking Glass集成了文件和程序管理的功能.通过目录窗口,
你可以使用图标和菜单来管理文件和目录.目录窗口的菜单有你可以用来拷贝,
移动,打印,删除或对文件采取的其它操作的命令.
你可以从Redhat contrib目录, ftp.redhat.com/pub/contrib/i386下以RPM
包形式下载大多数的窗口和文件管理器.当然, 很难说清某一特定的软件包是
什么.Linux资源网络黄页会组织这些软件, 分类并描述看, 例如,
[url]www.chariott.com/linapps.html[/url]下的Linux应用程序和工具页面.
表4-1窗口和文件管理器(对大多数软件包,用位于Redhat Contrib目录下的
RPNI安装,ftp//ftp.redhat.com/pub/contrib/i386)
窗口管理器命令描述网址
TWMTwmTom的窗口管理

FVWMFvwm免费的虚拟窗口
管理器(v.1.24)
[url]www.hpc.uh.edu[/url]
/fvwm
FVWM2fvwm2fvwm 2.0版本(现
在是Beta版)
[url]www.hpc.uh.edu[/url]
/fvwm
FVWM95fvwm95在fvwm2上建立
的Windows95界

[url]www.terraware.[/url]
net/ftp/pub/Mirro
rs/FVWM95/fvw
m95.html
Q虚拟窗口管理

Qvwm使用直接编程写
的Windows95界

www-
masuda.is.s.u-
tokyo.ac.jp/~kou
rai/qvwm/qvwm-
e.html
XviewOlwmXview窗口管理器
(OpenLook)
sunsite.unc.edu/
pub/
olvwmolvwm支持一个
虚拟桌面
Linux/libs/X/xvie
w
续表
AfterStepAfterstep基于NeXTSTEP
的界面
afterstep.edoc.c
om
LessTifmwmMotif的一个克隆[url]www.lesstif.org[/url]
MotifMwmMotif窗口管理器
和桌面(商业产品)
类似MacintoshmlvwmMacintosh界面的
一个克隆,/linux的
虚拟窗口带有菜
单的窗口管理器
管理器
[url]www.iaseste.or.[/url]
at
amiwnamiwnAmiga窗口管理
器界面
[url]www.lysator.liu.s[/url]
e/~marcus/amiw
n
通用窗口管理器gwmGNU的窗口管理

ftp.x.org/contrib/
window
managers/gwm
WindowMakerWmakerNeXSTEP的一个
克隆
[url]www.myth.co.uk[/url]
/~ximenes
Enlightment一个原始的窗口
管理器
[url]www.rasterman.[/url]
com
续表
K桌面KwmK桌面环境窗口,
和一
[url]www.kde.org[/url]
kde些工具文件管理
器,
Freedom LiteFreedom界面的
窗口管理器
fsw.com
文件管理器
Caldera桌面
(Looking Glass)
lgCaldera桌棉的商
业产品
[url]www.caldera.c[/url]
om
Xfmxfm文件管理器col/contrib/RPM
S(打开Linux
CD-ROM)
treebrowsertb用Xview工具的
文件管理器
XV文件管理器xvfilemgr用Xview工具和
图标的文件管理

[url]www.info.polymt[/url]
l.ca/ada1/coyote
/www
续表
TKDesktkdesk一个基于TK的文
件管理器
[url]www.people.mai[/url]
nz.netsurf.de/~b
oliktkdesk
Midnight
Commander
Norton
Commander的一
个克隆
mc.blackdown.o
rg/mc
Commander
Filerunner文件管理器www-
c.informatik.uni-
hanover.de/~kai
ser/dfm
DFMdfm文件管理器[url]www.cd.chalmer[/url]
s.se/~hch/filerun
ner.html
第二部分Linux 操作
第5章Shell操作
Shell是一种命令解释器,它提供了一个面向行(line-Oriented)的用户和操作
系统间的交互式界面,你在命令行中输入命令,它们被成指令送往操作系统.Shell
这一能力提供了许多高级的特征.例如,Shell有一套特殊的字符集可以产生文
件名,它可能重定向输入和输出,它也可以在后台运行操作,使你用来完成其它任
务.
人们为Linux开发了三种不同的Shell它们分别是:the Bourne Again
shell(BASH),公众域Korn Shell (PDKSH)和TCSH Shell.你可以利用所有这三
种Shell,尽管BASH是使用较少的,本书中都使用了BASH Shell.你只需要一
种SHELL即可完成你的工作.这一章讨论了所有的Shell的共同特征,而15和
16章讨论了BASH,PDKSH和TCSH的不同之处,你可以看到如何设置SHELL
来使用别名(aliases)历史事件和系统变量.这些SHELL甚至有自己编程语言.
这一章主要讲述命令执行的共同特征;尤其是,命令行编辑,特珠字符,重定向,
管道,变量,scripts 和作业控制.
5.1 命令行
当你登录到linux时,你可以看到一个命令界面.它是一条线,在这里你可以
输入带着操作和参数的任何命令,一个Shell 提示符.如下所未,标识了命令行的
开始.
$
Linux安装了Bourne Again Shell通常叫作BASH Shell. BASH shell有
一个美元提示符;但Linux有其它几种Shell,每一种Shell都有自己的提示符. 不
同的几种Shell将在第15章讨论.
当系统提示符出现时,你已登寻到系统中,提示符标识了命令行的开始,你现在
可以准备输入命令和它的参数了.
在下一个例子中,用户输入了date命令,它可以显示日期.用户在第一行输
入了命令,然后按Enter执行命令.
$date
Sun July 7 10:30:21 PST 1996
当你登录时,你实际进入了Shell,它将你输入的命令加以翻译并传递给系
统,Shell遵循一定的语法对命令进行翻译,命令行中输入的第一个字必行是一个
命令的名字,第二个字是命令的选项和参数,命令行中的每个字必须由空格或tab
来隔开
$Command Options Arguments.
当你输入一人Linux命令时,Shell首先读入这一命令的名字,然后核实是否
确实存在此名字的命令.如果没有这一命令,Shell会显示一条出错的信息.
5.1.1选项和参数
选项是一个只有一个字母的代码,它前面有一横线,选项可用于改变命令执行
的动作的类型.有选项的命令的例子是ls命令.没有选项的ls命令列出了你当
前目录中所有文件的列表.它只列出各个文件的名字.而不显示其它更多的信
息.
加入-l项,ls命令将改变它的任务,它会为每个文件列出一行信息,诸如数据大
小和数据最后被修改的时间.在下一个例子中,用户使用了带-L选项的ls命令,-l
项之前的横线是必要的,Linux用它来区别选项和参数.
$ls -l
另一个选项-a,可以列出目录中所有的文件,包括一些被隐藏的文件,隐藏文件
通常是配置文件,文件名以点号开头.正因为这个原因,这些原因这些文件被称作
点文件(dotfiles).在大部分情况下,你可以使用组合选项.你应在选项之前加一
起始横线.然后列出你想要的选基本项.例如:选项-al,会列出你目录中所有文
件的信息,包括任何的隐藏文件.
$ls -al
ls命令的另一选项是-F.利用这一选项,ls命令可以用于前面带斜杠的形式
显示目录名,这样你便可以轻松地加以识别.
大多数命令都被设计为可以接纳参数.参数是你在命令行中的选项之后键
入的一个词.许多文件管理命令把文件名作为参数.例如,如果你只想显示某一
特定文件的信息,你可以把此文件的名字加在-L选项之后.
$ls -l mydata
你可以输入参数,也可以不用输入,取决于不同命令.一些命令,例如ls,不需
要任何参数.另一些命令可能需要一些最小数目的参数.例如,cp命令至少需要
两个参数,如果参数的数目与命令所要求的不符,Shell将给出出错信息.
记住在命令行中选项先于参数输入.以cp命令为例,用于检查覆盖状况
(overwrite condition )的选项-i先于文件名参数键入.以下是一些输入命令的例
子:
$ ls 无选项命令
$ ls -F 带选项命令
$cp -i mydata newdata 带选项和参数的命令
5.1.2命令行特征
命令行实际上是你可以编辑的一个文本缓冲区.在按回车之前,你可以在输
入时的文本上进行编辑.编辑的功能是有限的,但它的确提供了一个改正错误的
方法.BACK SPACE和DEL键允许你删除刚刚敲入的字符.利用这种字符删
除的功能,你可以整行删除,并让你所输入的东西,只要你愿意.CTRL-D组合键
可以整行删除,并让你从提示符重新开始,下一个例子中,用户键入了datl而不是
date.利用BACKSPACE,用户删除了1,然后输入了e.
$datl
$dat
$date
你将在其中进行工作的Shell是BASH Shell,你缺省的Shell,这一Shell具
有特别的命令行编辑能力,这一功能在你学习Linux时会非常有用.你可以在执
行之前对命令任意修改,也可以在命令行上任意移动并插入或删除字符.这时复
杂命令尤其必要.你可以用CTRL-D或DEL 删除光标所在位置的字符.如要
加入文本,只需将光标移动到需要加入字符的地方,然后键入字符即可.你在任何
时候都可以按ENTER键来执行命令.例如,如果在输入命令时,你犯了一个拼写
错误,无须重新输入整个命令,你只要利用编辑操作即可发改正这一错误.
你也可以利用上箭头来重新显示你刚执行的命令.然后你可以重新执行这
一命令,也可以对之修改,执行修改后的命令.当你进行一些重复性的工作,例如
编辑同一个文件时,你会发现这一个功能是非常有用的.当你执行了一个你键入
不正确的命令时这一功能也非常有用的.在这种情况下,会显示一条了出错信息
和一个空的命令行,按上箭头后便可重新显示刚才执行的命令,将之改正并重新执
行.这样,你就无需再重新敲入整个命令了.BASH shell保存着你以前敲过的命
令的列表,这一列表被称作历史列表(history list).按动上箭头,你便可以在命令
行上逐次显示各条命令.下箭头使你在列表中向下移动.当你将以前的这些命
令显示在命令行上时,你就可以修改并执行这些命令.这一特征将在第15章进
行详细的讨论.
一些命令可能很复杂,需要比较长的时间来执行.当你执行了错误的命令时,
你可以中断并中止这些命令的执行,只要利用中断键-CTRL_C或DEL.
你可以在一个命令行中置入多个命令,或者你也可以用几行来输入一个命
令.如果要在一行中输入多个命令,用分号将命令隔开.下一个例子说明了如何
在一个命令行中输入ls和cp命令.
$ls-F; cp -T mydata newdata
在按回车键之前加入一个反斜杠,你便可以在几个命令行中输入一个命令.
反斜杠可以有效地将一个命令行持续到另一行.在下一个例子中,cp命令是在三
行中输入的.开始的两行以反斜杠告终,有效地使三行保持一个命令行.
$cp -i \
my data \
newdata
5.2 特殊字符和文件名参数:* , ,[ ]
文件名是参数命令中最常见的参数.你通常只知道文件名的一部分,或者你
想参看几个有相同扩展名的不同文件,或者以相同字符开头的文件.Shell提供
了一套特殊字符来查找,匹配并产生文件名的列表.这些特殊的字符是星号,问号
和中括号(*, ,[ ]).给出一个部分文件名,Shell用找到的匹配操作来查找文件并
产生文件的一个列表.Shell用找到的匹配文件列不来代替部分文件名变量.这
些文件名更可以成为那些操作文件的命令,如ls.表5-1(在本章最后)列出了shell
的特殊字符.
你可以利用星号,*,来查找以特定字符集开头或结尾的文件.你可将星号置
于字符集的开头或结尾以形成进行文件名查找的格式.如果星号置于字符集
前,shell会查找以字符集结尾的文件.如果星号置后,则会查找以字符集开头的
文件.任一匹配的文件名都会被拷贝入此操作产生的一个文件列表中.在下一
个例子中,所有以"doc"开头的文件都会被查找并产生一个列表.然后所有以"day"
结尾的文件也会被查找并产生一个列表.
$ls
doc1 doc2 document docs mydoc monday tuesday
$ ls *day
monday tuesday
$
文件名常常包括一个扩展名,它由句号标识,同一个单字符构成.扩展名没有
特殊的地位,它只是构成文件名的字符的一部分.使用星号使选择带扩展的文件
变得很容易.在下一个例子中,星号用来显示那些具有.C扩展的文件..C前的
星号构成了ls 的参数.
$ ls * .C
calc.c main.c
你也可以使用特殊字符,*,与rm命令一起同时删除几个文件.星号首先选择
具有特定扩展的一个文件列表,或者以给定字符集开头或结尾的文件列表,然后将
此文件列表提交rm命令来进行删除.在下一例子中,rm命令删除了所有以"doc"
开头的文件.
$rm doc*
星号本身会匹配所有的文件.如果你只用一个星号作为rm命令的参数,那
么所有的文件都会删除.下一例子中,ls*命令列出了所有文件,rm*命令则删除了
所有文件.
$ls *
doc1 doc2 document docs mydoc , myletter your letter
$rm *
$ls
$
你应小心使用星号,尤其使用rm命令时,这一组合可能是非常危险的.在没
有一选项的rm命令中错误放置的星号可能会删除的你所有文件.下一例子中
第一个命令只删除了那些具有.C扩展的文件.而第二命令删除了所有的文件.
注意第二个命令中星号与句号之间的空格.在命令行中空格的作用是一个定界
符,用于分隔参数.星号被认为是一个参数与rm命令一起使用时,会指示rm删
除所有的文件.
$rm *.C
$rm * .C
问号 只匹配文件名中一个单一的不完整字符.假设你想匹配doc1和docA,
而没有document.星号会匹配所有长度的文件名,而问号会将匹配限制于一个
字符.下一例子匹配了以"doc"开头,后面只有一个不同字符的文件.
$ ls
doc1 docA document
$ ls doc
doc1 docA
如果你愿意,你可以使用多个问号,你也可以把问号放在文件搜索样式的任一
地方,下一例子寻找一个可能有三个不同字符的文件样式.
$ ls y oc
mydocs mylock sydoc1
你可以将 和其它的特殊字符组合来创建一些非常强大的匹配操作,假设你
想查找只有一个字符扩展的所有文件.你可以使用星号来做文件名的正确匹配,
使用 来做单字符扩展的匹配,:* , .下一例子中,用户显示了所有只有一个
扩展字符的所有文件.
$ls *.
clac.c lib.a
星号和问号标识的是文件名中不完整的部分,而中括号[],允许你查找一套有
效的字符.放在中括号中的任何字符都要与文件名相匹配.假设你想列出以"doc"
开头,而以"L"或"A"结尾的所有文件,你对以"I","B"其它字符结尾的文件不感兴
趣.下面即是如何来完成这一要求的方法:
$ls
doc1 doc2 doc3 docA docB docD document
$ls doc [1A]
doc1 docA
你也可以列出一个字符集的范围,而不是将之逐一列出.在上限和一限字符
之间的横线将选择此范围内的所有字符.这一范围通常由所使用的字符集来决
定.在ASCII码字符集中,a-g这一范围将选择包括a,g在内的a-g间的所有字
符.下一例子中,以"doc"开头并以"1-3"之间的字符结束的文件将被选取.然后
以B-E间字符结否的文件将匹配.
$ls doc[1-3]
doc1 doc2 doc3
$ls doc[B-E]
docB docD
你可将中括号与其它特殊字符组合在一起产生非常灵活的匹配操作符.假
设你只想列出以.C或O作扩展的文件.
$ls * .[co]
main.c main.o calc.c
可能有时候特殊字符是文件名的一部分.在这种情况下,你需要在前面加一
反斜杠来引用这一特殊字符来进行文件查找.在下一例子中,用户要查找一人
以 结尾的文件,answer .然而 是一人特殊字符它会匹配所有以"answer"开
头并另有一人或多个字符的文件.在这种情况下,用户在" "号前加一反斜杠来
qwote该字符以查找文件.
$ ls answers\
answers
你可以将一个被引用的字符与特殊字符在文件名中相组合.在下一个例子
中,用户列出所有以"answer "开头并有扩展的文件.
$ ls answers\ . *
answers .quiz answers .mid answers .final
5.3 标准输入/输入和重定向
当设计UNIX系统时,文件的逻辑结构和物理结构是有区别的.物理上,文件
以随机的块存放.逻辑上,文件是持续的byte流.作为UNIX的一个版本,Linux
也具有相同的组织形式.除了一些特别的系统调用,用户无须参照,文件的物理结
构.对用户而言,所有文件具有单一的形式-byte流.任何一个文件都可以轻易
地拷贝或添加入另一个文件,因为所有文件都具有相同的组织形式.在这种意义
上讲,Linux中只有一种文件的标准,即byte流文件.Linux 对字符文件或记录文
件,文本文件或二进制文件不作区别.
这一逻辑文件组织形式延伸到输入和输出操作.输入和输出操作中的数据
像文件一样进行组织.键盘输入的数据被置入为持续byte集的数据流中.命令
或程序的输出也被置入数据流中,并被设为持续的byte集.这种输入数据流在
Linux中被称为标准输入,而输出数据流被称作标准输出.
因为标准输入和标准输出与文件具有相同的组织形式,它们可以很容易地与
文件相互作用.Linux有一种重定向能力,利用它你可轻易地将数据移入和移出
文件.你可以将输出重定向,使之不在屏幕上显示,而是存到一个文件中.你也可
以将标准输入重定向,使之从键盘移至一个文件,那么输入就会对文件进行读取而
不是对键盘.
图5-1标准输出,标准输入和shell
当Linux命令被执行并产生输出时,这一输出被置于标准输出数据流中.标
准输出数据流的缺省目的地是一个设备,在这种情况下,是屏幕设备,诸如键盘和
屏幕,被当作文件对待,它们的组织形式接收,发送byte流,正如同那些byte流文
件.屏幕是一种显示持续byte流的设备,缺省情况下,标准输出将把数据送到屏
幕设备,屏幕将数据显示出来.例如,ls命令产生所有文件名的一个列表,并将之
输出到标准输出.在标准输出中的这一byte流被导向屏幕设备.然后文件名列
表被显示在屏幕上.cat 命令也将输出结果送往标准输出.文件的内容被拷贝
到标准输出中,而一标准输出缺省的目的地是屏幕.然后文件的内容便在屏幕上
显示出来.图5-1说明了标准输入与键盘,标准输出和屏幕设备的相互关系.
5.3.1重定向标准输出:>和>>
假如你不想在屏幕上显示一个文件列表,而想把列表存入一个文件.换言之,
你想将标准输出指向一个文件而不是显示屏幕.要做到这一点,你应在命令行中
Linux命令之后加入一个输出重定向符>(大于号)和一个文件的名字.表5-2(在
本章最后提到)列出了重定向符的不同使用方法.在下一个例子中,cat命令的输
出被由显示设备重定向到了一个文件.正如图5-2所示,mylette文件的内容并
未在屏幕上显示,它被重定向到文件mewletter当中去了.
$cat myletter >newlette2
重定向操作创建了新的目的文件.如果这一文件已经存在,它将被标准输出
中的数据所覆盖.你可以对noclobber特征进行设置,以防止在重定向操作中对
已有文件进行覆盖.在这种情况下,对已有文件的重定向操作将会失败.你可以
在重定向操作符后加一个惊叹号来强行忽略noclobber属性.下一例子设置了
BASH shell的noclobbe属性,然后对oldletter文件强行写入,假如这一文件已经
存在的话(图5-2).
$set -o noclobber
$cat mylette>! obllete
图5-2标准输出重定向到一个文件
重定向文件的创建
尽管重定向操作符和文件名都被放在命令之后,重定向并不是在命令之后执
行.实际上,它是在命令执行之前执行,重定向操作创建了该文件并在它从标准输
出接收数据之前设置重定向.如果这一文件已经存在,它将会被破坏并不被同名
的文件所代替.实际上,产生输出结果的这一命令只有在重定向文件创建之后才
被执行.
在下一个例子中,ls命令的输出被由显示设备重定向到一个文件中.首先,ls
命令作文件列表,在第二个命令中,ls命令将文件列表重定向到listf文件中.然后
cat命令显示了存在listf文件中的文件列表.注意listf中的文件列表包括listf的
名字.由ls命令产生的文件列表将会包括由重定向操作创建的文件的文件名,在
这一例子中,即listf.listf文件首先由重定向操作所创建,然后ls命令将与其它文
件一起进行列表.然后ls 的文件列表输出被重定向到listf文件中,而不是在显
示设备上输出.
$ ls
mydate intro preface
$ls> listf
$cat listf
mydata intro listf preface
当你试图将同一个文件作为命令的输入文件和重定向的目的文件时,会有错
误发生.在这种情况下,因为重定操作是先执行的,因为输入文件是已存在的,它
会存坏并被同名的文件所代替.当命令执行时,它就会发现输入文件是空的.
在下面介绍的cat命令中,文件myletter既是重定向输出的目的文件名,又是
cat 命令的输入文件名.正如下一个例子所示,重定向操作首先执行,将myletter
文件破坏,然后用一个同名的myletter文件替换它.然后再cat命令并试图读入
myletter文件中所有的数据.然而,现在在myletter文件中已经什么都没有的.
$cat mylettaer>myletter
添加标准输出:>>
你也可以利用重定向操作符将标准输出添加到一个现存的文件中去.标准
输出中的数据被添加到文件的末尾,而并不会覆盖这一文件.在下一个例子中,文
件myletter和oldletter天加到alletters中去.alletters文件将会包含mylteler
和oldletter文件的内容.
$cat myletter >>alletters
$cat oldletter >>alletters
5.3.2标准输入
许多linux命令可以标准输入中接收数据.标准输入本身从一个设备或文件
中接收数据.标准输入的缺省设备是键盘.键盘上敲入的字符置于标准输入中,
然后再被导向Linux命令.
cat命令如果没有文件参数,它将会从标准输入中读入数据.当你在键盘上
敲入数据时,每一个字符都会被置在标准输入中,然后被导向cat命令.cat命令
会将这些字符送往标准输出�D�D显示设备�D�D它会将字符在屏幕上显示出来.
当你做上述工作时,你会发现当你敲入一行,这一行会迅速在屏幕上显示出
来.这都归功于在许多Linux系统中采用的行缓冲方法.行缓冲(Line buffering)
要求用户键入整个行,然后输入才会被送往标准输入.cat 命令每次从标准输入
获得一整行,然后它会将之迅速在屏幕上显示.在下一个例子中,用户执行了cat
命令而未加任何参数.当用户输入一整行,它被送往标准输入,cat命令将之从标
准输入中读出,并送到标准输出.
$ cat
This is a new line.
This is a new line
for the cat
for the cat
command
command
^D
$
cat命令将会持续执行下去,直到一个CTRL-D字符在一行中输入.CTRL-D
是任何Linux文件的结束字符.在某种意义上,用户是在键盘上创建一个文件,并
用文件结束字符来结束文件.记住,标准输入,同标准输出一样,有着与Linux文
件相同的格式.如果你将cat命令与重定向结合起来,你就有一种简易的为存储
你敲入一个文件的数据.正如下一个例子所示,cat操作的输出被重定向到mydat
文件中.mydat 文件中将存在所有从键盘敲入的数据.cat命令在这种情况下
仍然没有文件参数.它将从标准输入-键盘设备�D�D中接收数据.重定向操作符
将cat命令的输出重定向到mydat文件,cat命令与任何文件之间并没有直接的
关系.它只是从标准输入中接收数据,然后将输出送往标准输出.
$ cat >mydat
This is a new line
for the cat
command
^D
$
5.3.3标准输入的重定向:<
如同标准输出一样,你也可以对标准输入重定向.标准输入可从一个文件获
得而不是键盘.对标准输入重定向的操作符是小于号<.在下一个例子中,标准
输入被重定向为从文件mylettev而不是从键盘中获得输入.mylertter文件中的
内容被重定向操作读入标准输入.然后cat命令读入标准输入并在屏幕上显示
myletter的内容.
$ cat < myletter
hello Christopher
How are you today
$
你可将对标准输入和标准输出的重定向结合起来,在一个例子中,cat命令没
有文件名参数.没有文件名参数的cat命令将会从标准输入中接收输入并将输
出送往标准输出.然而,标准输入被重定向为从一个文件中接受数据,而标准输出
重定向为将数据置于一个文件中.
$ cat neolettev
5.4 管道:|
你有时会发现处于这样一种情形,你需要将数据由一个命令传至另一个命
令.换句话说,你想将一个命令的标准输出送向另一个命令,而不是一个目的文
件.假设你想将一个文件列表送往打印机.你需要执行两个命令来完成这一工
作:ls命令来产生文件列表和lpr命令来将列表送往打印机.实际上,你需要获得ls
命令的输出并将之作为lpr命令的输入.你可以想象为数据由一个命令流向另一
个命令.要在linux中形成这样一种联系,你应使用称为管道的功能.管道操作
符|(竖线条字符)放在两个命令之间二者之间形成了联系.一个命令的标准输出
成了另一个命令的标准输入.管道操作接收了置于管道之前的命令的输出,并将
数据作为置于管道之后命令的输入.如下例所示,你可以用一个管道符将ls命令
和lpr命令连接起来,ls命令产生的文件名列表被通过管道送往lpr命令.
$ ls | lpr
你可以将管道操作同诸如特殊字符等shell的其它特生结合起来,并完成一些
特殊的操作.下一个例子中只打印了以.c为扩展的文件.ls命令利用星号和.c
来产生一个只具有.c扩展的文件列表,然后这一列表被通过管道送往lpr命令.
$ ls * .c | lpr
重定向只是简单地将输出放入一个文件,管道则将输出送往另一个linux命
令.你也许想知道为什么这一功能不能由重定向来完成.人在头脑中保持一个
文件和一个命令之间区别的概念:一个文件是一个包含数据的存贮媒体.你可以
对之存贮或读.一个命令是执行指令的程序.一个命令可能会对文件进行数据
的读写,但命令本身绝不是文件.重定向可将数据由一个程序送往一个文件,但它
不能将数据从一个程序送往另一个程序.只有文件才能成为重定向操作的目的
地,程序则不能.
然而你可以通过一系列的重定向操作来模拟管道的过程.你可以将一个命
令的输出送入一个文件.然后,在第二行,你可以将此文件作为要执行命令的重定
向的输入.下一个例子用了两个不同的命令的重定向来打印一个文件名列表.
同样的任务在上一个例子中已由管道操作完成.管道操作字面上获得一个命令
的标准输出并将之作为另一个命令的标准输入.
$ ls * .c > tenpfile
$ lpr sfile
$ cat -n nifle
$ lpr sfile
$ cat sfile
computer
screen
$假如,你需要将你的输出存入一个文件并且把它打印出来.这种情况下,标准
输出需要传送另一个命令.你需要利用tee命令来把输出拷贝到一个文件中,同
时让标准输出经管道关入下一个命令.在下一个例子中,sort命令的输入首先由
管道送到tee命令,tee命令将输出拷贝入文件sfile.输出本身再由管道送到lpr
命令以进行打印.
$ sort mylist |tee sfile | lpr
当你使用管道和重定向时要当心.标准输出的重定向确定 了标准输出的目
的地.标准输出会被存贮在那一目的文件中.一旦被存贮,就没有什么输出由管
道送往下一个命令了.重定向不能在管道内部发生,尽管它可以被置于一系列管
道操作的末尾.下一个例子是管道和重定向的可行的使用方法.sort命令的输
出经由管道送往带-n选项的cat命令来加入行标量,最后的结果被存贮在文件
nfile中.
$ sort mylist | cat -n >nfile
如果你想要将文件存入nfile并把它打印出来应应样 你不能做如下类似的
操作:
sort mylist | cat -n > nfile | lpr ERROR
存贮文件并将之进行打印的唯一方法是使用tee命令,
$ sort mylist | cat -n | tee nfile | lpr
你可以在管道序列的任何地方使用tee 命令.下一个例子中存贮了列表的
一个sort处理的版本并打印了一加行标号的另一个版本.
$ sort mylist | tee sfile | cat -n | lpr
5.4.2重定向和管道处理标准错误(standard Error): >&, 2>
当你执行命令时,有可能会有错误发生.你可能给出了数目不正确的参数,也
有可能发生某种系统错误.当发生错误时,系统会产生一个错误信息.通常情况
下,这一错误信息会同标准输出一起显示在屏幕上.然而,Linux系统对标准输出
和错误信息是有区别的.错误信息被放入另一个被称作"标准错误"的标准byte
流中.在下一个例子中,cat命令中的参数是一个不存在的文件名,myintro.这种
情况下,cat命令将会产生一个错误:
$ cat myintro
cat :myintro not found.
$
因为错误信息是在除标准输出外的另一单独的数据流中,即使你已将标准输
出重定向到一个文件,错误信息仍然会在屏幕上显示.在下一个例子中,cat命令
的标准输出被重定向到文件mydate中,然而,包含着错误信息的标准错误仍然被
定向于屏幕.
$ cat myintro > mydata
cat : myintro not found
$
如同标准输出一样,你也可以对标准错误重定向.这意味着你可以将错误信
息存入一个文件,以备将来参考.如果你需要一个错误记录的话,这一功能是非常
有用的.如同标准输出一要,标准错误的缺少目的地也是显示设备,但你可以利用
特殊的重定向操作符将标准错误定向到文件或你选择的任何设备.在这种情况
下,错误信息将不会在屏幕上显示.对标准错误的重定向依赖于shell重定向的
一个特殊的特征.你可以在重定向操作中利用数字访问所有的标准byte流.数
字0,1和2分别代表着标准输入,标准输出和标准错误.缺省情况下,输出重定向
>作用于标准输出.然而,利用在输出重操作符前加入2,你也可将输出重定向列
改为对标准错误进行操作.在下一个例子中,cat命令又会产生一个错误.错误
信息被重定向到以2为标量的标准byte流,标准错误中,
$ cat nodata 2> myerrors
$ cat merrors
cat : nodata not found
$
你也可以将错误信息添加入一个文件,只要利用数字2和重定向添加操作符
>>即可.
在下一个例子中,用户将标准错误添加入文件myerrors中,这样myerrors便
成为一个错误的记录.
$ cat nodata 2 >> myerrors
$ cat compls 2>> myerrors
$ cat myerrors
cat : nodata not found
cat : compls not found
$
如果要同进对标准输出和标准错误重定向,你需要为二者加入各自的重定向
操作符和文件.在下个例子中,标准输出被重定向到文件mydata,而标准错误被
重定到文件myerrors中.如果nodata确实存在,文件mydata将包含它内容的
一个拷贝.
$ cat nodata 1 > mydata > myerrors
$ cat myerrors
cat : nodata not found
$然而,如果你想把错误信息,同重定向的标准输出存入同一个文件中,你需要将
标准错误重定向到标准输出.在BASH shell中,你可以在数据流的数字前面加
入一个& 号来进行对标准数据流的访问,&1 指向标准输出.你可以在重定向操
作中利用这种访问方法,将一个标准byte流作为一个目的文件.重定向操作2>&1
将标准错误重定向到标准输出.
结果,标准输出成为了标准错误的一个目的文件.与之相反,重定向操作1>&2
将标准输出重定向到标准错误.
在下一个例子中,cat命令使用了一个不存在的文件-nodata-来作它的参数,
结果产生的错误信息的重定向到文件mydata.标准错误和标准输出的内容都将
被存入同一个文件中mydata.错误信息不再继续在屏幕上显示而是存入一个文
件之中.如果想看错误,信息只须显示文件mydata的内容即可.如果 nodata
文件确实存在,mydata将包含nodata文件的内容而不是错误信息.
$ cat nodata 1> mydata 2>&1
$ cat mydata
cat :nodata not found
>&操作的缺省输出流是标准输出,缺省输入流是标准错误.如果这一操作前
后没有数字,正如下一个例子所示,任何错误信息都会被重定向到标准输出,并同
标准输出一同存入其目的文件.
$ cat nodata > & mydata
5.5 shell变量
你在shell当中定义一个变量,这一变量被称作-逻辑上-shell变量.现在有许
多不同的shell.一些应用,例如mailx应用,有自己的shell程序和shell变量.
你也可以利用所谓的shell scripts 来创建自己的shell.你有一个一旦登录之后
便被激活的用户shell.这通常被称作登录shell.特殊的系统变量便是在这个登
录shell中定义的.shell变量在你的shell的激活状态中一直存在,意即直到你
出shell为止.例如,注销即会退出现存的登录shell.当你再一次登录时,你在登
录(login) shell 所需的任何变量都必须重新进行定义.
5.5.1变量的定义和Evaluation: =,$, set, unset
当你首次用变量名时,你便在shell中定义了一个变量.一个变量的名字可以
是字母表中任何字母的字符集,也包括下划线.变量名中也可以包含数字,但数字
不能是名字的第一个字符.名字当中不能有其它类型的字符,例如冒号,&号,甚
至不能有空格.这些符号由shell保留自用.并且,名字不能超过一个词.Shell
利用空格来区分命令行中命令的不同要素,诸如选项,参数和命令的名字.
你可用赋值操作符=来给给变量赋值.你应敲入变量名,赋值操作符,然后是
要赋的值.不要在赋值操作符前后留任何空格.诸如 poet = Virgil的赋值操
作会失败.(c-shell有一个稍微不同的赋值操作,在本章稍后的c- shell变量中将
会谈及)你可以将任何字符集赋给一个变量.下一个例子中,变量poet被赋值为
字符串Vivgil
$ poet=Vivgil
一旦你为一个变量进行了赋值,你便可以利用变量名来引用所赋值.通常你
可以把变量的值作为一个命令的参数.利用在变量名前加$操作符,你便可以引
用变量值了.美元符是一种利用变量名来引用变量值的特殊字符.Evalwation
可获得变量的值,通常是一个字符集合.这个字符集将代替命令行中的变量名.
只要变量名前加入了$符,这个变量名就会被变量值所代替.在下一个例子
中,shell变量poec被取值,它的内容,Virgil,被用作echo命令的参数.echo命令
只是简单地将字符集显示在屏幕上.
$ echo $ poet
Virgil
你必须仔细区分对变量取值和变量名本身.如果变量名之前你没有加入$
符,那么你就只有变量名本身,在下一个例子中,变量名之前没有$操作符.在这
种情况下,echo命令将"poet"作为自己的参数,因此显示了"poet".
$ echo poet
poet
变量的内容常被用作命令的参数.一种通常的命令参数是一个目录路径名.
要重复的键入相同的目录路径是很乏味的.如果你把一个目录路径名赋值给一
个变量,你不对变量取值即可.当对变量用$操作符取值时,你便得到赋给这个变
量的目录路径.下一个例子中将目录路径名赋给一个变量,并在copy命令中使
用了变量的值. ldir 的取值(即$ldir)是路径名/home/chris/letters. copy命令等
价为cp my/etter/home/chris/letters.
$ldir =/home/chris/lettevs
$cp myletter $ ldir
你可以利用set命令获得已定义变量的列表.下一个例子利用set命令显示
了所有已定义变量和它们的值.
$ set
poet virgil
ldir/home/chris/letters/old
$
5.5.2TCSH shell变量
TCSH chell中的变量与BASH chell只有一点极小的差别.在TCSH shell
中,你要用set命令和赋值操作符对一个变量赋值.要给一个变量赋值,首先键入
set,然后是变量名,赋值操作符,和要赋的值,赋值操作符必须前后都有或都没有空
格.例如�D�Dset poet=Virgil是一个错误,在下面,变量poet 被赋值为Virgil:
set poet=Vigil
同BASH shell类似,TCSH SHELL利用美元符进行取值,取值操作获得
变量的值,它通常是一套字符集.然后字符将代替命令中的变量名.在下一个例
子中,shell变是poet被取值,其值Virgil被作为echo命令的参数.
>echo $poet
Vigril
同BASH shell一样,双引号,单引号,和横线会取制特殊字符的取值.下一个例
子中,双引号限制了特殊字符 .
>set hotice="Is the meeting romorrow "
>echo $hotice
Is the meeting tomorrow
>
5.6 shell 脚本:用户定义的命令
你可以把shell命令放入一个文件,然后让shell从文件中读并执行这些命
令.在这种意义上,文件成为shell一个程序,它象程序中的语句一样执行shell
的命令.包含着shell命令的一个文件被称作shell脚本.
你可以利用一个标准的文本编值器,如Vi,来将shell命令键入一个script文
件.sh或.命令再加上文件名,将会读script文件并执行其中的命令,下一个例
子中,文本文件lsc中包含着ls 命令,它将只到出带.c为后缀的文件.
lsc
ls *c
$ sh lsc
main.c calc.c
$ .lsc
maim.c calc.c
你可以利用对script文件的执行许可的设置来避免sh或.命令的使用.当
script文件最早由文本编辑器创建时,它只有读和写的许可.chmod命令加入+
×选项将给予script文件执行许可,(第7章中将讨论许可)一旦它是可执行的, 在
shell提示符后键入文件名并加回车,文件和其中的shell命令将被执行,在效果
上,script文件名变成了一个新命令名.这样,你便可以利用script文件来设计并
创建自己的linux命令,.你只须设置一次许可,在下一例子中,lsc文件所有者的执
行许可被设置为开.然后lsc这一shell script如同其它linux命令一样得到执行.
$ chwod u+x lsc
$ lsc
main.c calc.c
如同其它limux命令一样,shell script也可以接受参数,命令行上的参数被依
次自上来引用.利用$操作符和位置的标识可以来引用参数,第一个参数可由$1引
用,第二个参数$2,以此类推,在下一个例子中,lsext script打印有特殊扩展的文
件.第一个参数是扩展,该script以参数C执行,(当然,可执行许可已被设置过了).
lsext
ls * $l
$ lsext c
main.c calc.c
在下一个例子中,打印具有行标号文件的命令已被放入一个可执行文件
/phum中,/phum以一个文件各作为参数.打印行标号的命令在后台执行.
lphum
pr -t -n$1/lp&
$ lphum mnydata
你可能会同时利用不止一个变量,变量数目可能会变化.利lphum你可能一
次想打印三个文件,也可能是五个文件.$操作符再加上星号,$*,引用命令行上所
有的参数.利用$*你便可以接收数目可变的参数.在下一个例子中,lphum使用
了$*,这样它便可以接受可变数目的参数了.
lphum
pr--t--n$*/lp&
$lphum mydata prefae
使用 shell script是为命令创建别名的另外一种方法.在下一个例子中,比
如:shell script包含着一个有一定选项的rm命令.rm在删除一个文件之前会征
求用户的认可
rmi
rm-i $*
$rmi mydata docl
5.7 作业:后台,杀除(kills)和中断
在Linux中,你不仅可以控制命令的输入,输出,也可以控制它的执行.你可
以在执行命令的同时在后台运行一个作业.你也可以在命令执行完之前取消一
个命令.你其至可以中断一个命令,然后再从断的地方继续执行,后台操作对于大
作业非常有利的,无须在终端前等待一个命令执行结束,你可以把它放入后台.这
样你便可以执行其它的Linux命令.例如,你可以在其它一些文件打印时偏辑另
一个文件.
取消一个后台的命令常常会为你节省许多不必要的开支.假如说,你执行了
一个命令来打印所有的文件,你又意识到有一些非常大的文件,你并不想打印,你
可以引用打印命令的执行并将之取消,对命令的中断是不经常使用的,有时,它是
无意中进行的,只要你想,你便可以中断一个编辑过程去发送mail,然后再回到编
辑会话中,从离开的地方开始.后台命令和取消及中断作业的命令见表5-2.
在Linux中,命令被视为一个进程�D要执行的任务,Linux系统同时可以执行
多个进程,正如同Linux系统可以同时处理几个用户一样.有一些命令可以来检
查和控制进程,而这些命令通常是为系统监察操作而保留的.实际上进程不仅包
括了用户执行的命令,还包括了系统执行的以维持Linux运行的许多任务.
用户执行的进程通常被称为作业,以此区别系统进程.当用户执行一个命令
时,它便成为等待系统执行的一个作业,shell提供了一套作业控制操作以便用户
控制作业的执行,你可以把作业在后台,取消或中断一个作业.
5.7.1后台和前台:& fg bg
在一个命令后面加入一个"&"符号,你就可以在后台执行这一命令.当你这么
做的时候,屏幕会显示一个用户的作业号和系统的进程号.放在中括号中的用户
数,是用户可以对它进行引用的号码.系统进程号是系统对这一个任务的标识
号.在下一例子中,打印文件mydata的命令被置于后台执行.
$ lpr mydata &
[1] 534
$
你可以把不止一个命令放在后台执行.每一个命令都被标识为一个任务并
且有一个名字和一个任务号.jobs命令会列出所有在后台执行的任务.表中的
每一行都包括一个中括号内的任务号,以及任务名,而不管该任务已终止或还在运
行."+"号表明该任务当前正在被处理,"-"号标明了下一个要被执行的任务.在下
一个例子中,两个命令被放入后台执行.jobs命令列出了这些任务,并显示哪个
任务正被执行.
$ lpr intro &
[1] 547
$ cat *,C > mnyprogs &
[2] 548
$ jobs
[1] + Running lpr intro
[2] - Running cat * c >nnyprogs
$
如果你愿意,可以在命令行上以"&"号为间隔敲入几个命令,然后将这些命令
同时放入后台执行.在这种情况下,"&"号不仅在命令行上将命令进行了隔离,还
将这些命令置于后台执行.在下一个例子中,第一个命令将所有具有.l扩展的文
件sort处理并且重定向,这个命令被置于后台.在同一命令行上的第二命令,打
印有.c扩展的文件,也被放到后台执行.注意这两个命令都是以"&"号结尾的.jobs
命令然后将sort和lpr命令作为单独的操作列出.
$ sort *.l >/ldocs & /lpr *.c &
[1] 534
[2] 567
$ jobs
[1]+ Running sort *.l > ldocs
[2]- Running lpr
$
在你执行完linux中的任何命令时,如果你有运行于后台的作业,系统会通知
你这些后台作业是否完成,系统不会中断任何操作,例如编辑,来通知你一个工作
已经完成.如果你希望某个任务完成时立即通知你,而不管你正在系统中用何种
操作,你可以利用notify命令来指示系统通知你,notify命令的参数是作业号.当
这一任务完成时,不管你在做什么,系统都会打断你并通知该任务已完成,下一例
子中告诉系统当2号任务完成时即通知用户.
$ notify%2
你可以利用前台命令,f g,当一个任务自后台取出,如果后台只有一个任务,单
独的fg 命令就可将其带到前台,如果后台有多个任务,使用此命令时,你必须加入
任务量.你应将任务量置于fg 命令之后,并在任务量前加一个百分量,下一个例
子中,第二个任务被置入前台.你可能不会立即发现提示符,因为第二个命令正在
前台执行,当这一个命令执行完时,提示符会重新出现,这时候你就可以执行另一
个命令了.
$ fg % 2
sat *.c nnyprogs
$
也有一个bg命令可以将任务置于后台,这一命令通常用于中断的任务.它
将会"中断,CTRL- Z" 中进行简短的讨论.
5.7.2取消任务:Kill
如果你想停止一个正在后台运行的任务,你可以使用Kill命令使其强行结
束.kill作业号或系统进程号作为其参数.用户的作业号前必须加%量.利用jobs
命令你可以查到作业号.在下一个例子中,jobs命令列出了后台的任务,然后任
务2被取消.
$ jobs
[1]+running /pr intro
[2]-running cat *.c > nnyprogs
$ Kill %2
$
你也可以利用系统进程号来取消一个任务.利用ps命令可得到系统进程号.
ps命令比 jobs命令显示了更多信息.在系统管理中将会对之详细讨论,下一个
例子列出了用户正在运行的进程. PID是系统进程号,也被称作进程的ID.TTY
是终端识别量.时间是进程被运行的时间长度.Command是进程的名字.
$ ps
PID TTY TIME COMMAND
523 tty24 0:05 SH
567 tty24 0:01 lpr
570 tty24 0:00 ps
然后你会可以在Kill命令中引用系统进程号.在此进程无须加%号.下一个
例子取消了进程567
$ Kill 567
5.7.3中断: CTRL-Z
你可以用CTRL-Z命令中断并停止一个任务.这一命令将任务置于一边直
到任务被重新启动.任务本身并没有结束,它只是被暂停了,等待你希望它继续进
行的命令.当你准备好后,使用fg或bg命令你可以继续进行这一任务.fg命令
将在前台继续一个中断的任务.bg命令则将这一任务放入后台执行.
有时你需要将一个正在前台运行的任务移至后台.但是,你不能下接将一个
正在执行的例子中,列表并重定同.C文件的命令首先被用CTRL-Z中断.然后这
一任务被置于后台.
$ cat *.c nnyprogs
^ z
$ bg
5.7.4延迟执行:at
利用at命令,你可以在某一特定的时间执行命令.你可以指定一个你希望命
令执行的时间,而不是立刻将一个任务放入后台.然后你可以退出,由系统的监视
执行什么命令及何时执行.
at命令以你希望命令执行的时间作为参数.时间是一个标识小时的数字以
其后的关键词a.m或p.m.你也可以加入一个日期.如果未指定日期,系统即认
为当前的日期.然后at命令会从标准输入中输入linux命令.你可以在键盘敲
入上述命令,并以CTRL-D来结束标准输入,你也可以把它敲入一个文件,并将文
件由标准输入重定向到at命令.在下一个例子中,用户决定在4:00 a.m执行一
个命令.
$ at 4am
lpr iwtro
^ D
$
在在下一个例子中,用户将几个命令放入一个latecmds文件中,然后将文件
内容重定向为at命令的输入.at命令将在6:00p.w执行这些命令.
latecmds
lpr intro
cat *.c > nnyprogs
$ at 6pm < letecnnds
你可以有许多方法来标定时间和日期.at命令假定了一个24小时的时间序
列,除非被关键字a.m或p.m修改.你可以在小时和分钟之间加入":"号来标定小
时中的某一分钟,例如:6:30.at命令也能识别一些标定某些日期和时间的关键
词.关键词noon标定的是12p.m,你可以使用关键词midniqht 来代替12a.m.
在下一个例子中,用户执行了一个分钟标定的命令和一个关键词 noon标定的命

$ at 8:15pm < latecods
$ at noon < latechds
日期可以是一月中的某一天,也可以是一周中的某一天.一月中某日包含着
天数于一个代表月份的关键词.月份可以三个字母由子缩略词表示.例如,一月
(January)被写作jan,天数跟在月份名之后.如果没有月份名,叫被认为是当前
月.Feb14指明二月十四号;21本身指的是本月的21号.在下一个例子中,用户
首先指定在本月15号执行命令,而后又指定在10月29日执行.
$ at 8:15pm 15 < lsteconds
$ at hoon Oct 29 < lsteconds
如果你只想在本星期内运行任务,那么,你只需指定星期几.而无须指定月和
日.星期的每天都由其名字表示,这样,敲入Tuesday 即意味着将在星期二运行
你的任务.你也可以利用today 或romorrow这样的关键词来指定日期.在下
一个例子中,用户在周五和明天运行任务.
$ at 8;15 am Friday < latecods
$ at noon tomorrow 利用时间或日期,你也可以指定一个增量,例如,你可以指定一个任务在距今天
一周后执行或周五后两个月执行.你可以使用+号跟着一个指定时间段长短的关
键词来指定增量,时间段关键字有:minutes,hours,days, weeks, months, 或者
years 复数符s可去掉以表示单一的时间间隔.
例如,在19号后的一个月运行命令,你可以输入19+ month.明天后的一
星期是tomorrow+ week.今天之后的两周是today+2weeks. 在下一个例子
中,用户指定在周一后的6周和今后之后的3个月时执行命令.
$ at 8:15pm monday + 6weeks $ at noon today +3months at有一些选项可以让你列出所有等待执行的at任务,也可以取消任-at任务.
每次你执行at命令,你指定以后执行的Linux命令都被放入队列并作为一个at
作业列出.at命加l选项可以列出所有的at任务,每一个任务都有一个你可以引
用的编号.
$ at -l
732893802 ,a Fri sept 27 20:15:00,1996
732893803,a Fwe sept 24 12:00:00 1996
用-r选项你就可以取消at任务,要取消一个特定的任务,你需要在-r选项后敲
入任务编号,在下一个例子中,用户取消at 任务732893802,a
$ at -r 732893802 ,a
$ at -l
732893802, a Tue sept 24 12:00:00 1996
通常,at命令不会通知你任务已经执行完毕,然而,利用-m选项,你可以要求当
任务执行完后,用mail通知你,你可以指定接受mail的一个特定的任务编号.在
下一个例子中,当任务732893803,a执行完毕后,将后有mail通知你
$ at -m 732893803,a
5.8 总结: shell操作
shell 是用户和操作系统之间提供接口的一个命令解释器.你在命令行上输
入命令,这此命令被shell解释,并作为指令送往操作系统,shell有非常复杂的特
征,诸如特殊字符,重定向,管道,scipts和任务控制.
shell有三个特殊字符,*, , [], 它们可以使你产生一系列的文件名作为命令行
上的参数,*号会匹配所有可能的字符序列, 是会匹配任意一个字符,[]匹配一个字
符集.你甚至可以利用特殊字符来组成复杂的匹配.
在linux中,文件和设备,以及和命令的输入和输出,都有相同的结构一byte流,
命令的所有输入数据流中,因为标准输入和标准输出同文件有着相同的结构,它们
可以很容易地与文件交互,利用重定向操作符,你可以将标准输入和标准输出指向
一个文件.利用"<"重定向符,你可以将标准输出由一个命令重定向到一个文件.
利用">"将标准输出添加到一个已存的文件中去.
既然命令的标准输入和标准输出有着相同的标准格式,你可以很容易地将一
个命令的输出作为另一个命令的输入,管道允许你接收一个命令的标准输出,并由
管道将这作为另一个命令的标准输入,在同一个命令行上,你可以串连几个命令,
每一个的输入都另一是个命令的输出.
使用编辑器,你可发创建一些包含 shell命令和变量定义的文件.这些文件
被称作shell scripts,.shell scripts甚至有参数变量,它们将从命令行上接收参
数,通过设置shell script的执行许可,你可以把shell script的各字当作shell
命令对待.
你在shell中也可以定义变量变对其赋值.在变量名前加$,你可以就引用一
个变量.你可以把变量作为命令参数使用.它们可以包含目录络经名或者要执
行的命令.
当你执行一个命令时,它被Linux当作一个要执行的任务.你可以指示Linux
在后台执行任务,以使你执行其它命令,将后台操作符放于命令行末尾会指示
Linux在后台执行这一命令.用 jobs命令可列出你在后台的任务.用fg 命令,
你可将一个任务由后台移至前台.你可以用kill命令来终止后台任务,或用
CTRL-8命令来中断任务.
表5-1shell符号
标准错误/重定向符号 执行
ENTER 执行一个命令行
; 在同一命令行中分隔命令
'命令' 执行一条命令
* 匹配文件名中的任何符集
匹配文件名中的单个字符
[] 匹配文件名中的可能的字符集
\ 引用紧跟的字符,用于引用特殊字符
> 将标准输出重定向回到文件或设备.
如文件不存后,则创建新文件;如文件
已存在,履盖该文件假设文件存在,则强
制进行履盖,掩盖noclobber选项
> 将标准输出重定向到一个文件或设备,
将输出添加到文件尾
l 将一个命令的标准输出由管道作为另一
命令的输入
& 在后台执行命令
! 历史命令
2> 将标准错误重定向到一个文件或设备
2>> 将标准错误重定向并添加一个文件或设

2>&1 将标准错误重定向标准输出
1& 将标准错误由管道作为另一命令的输入
>& 把标准错误重定向到一个文件或设备
表5-2shell操作
命令 执行
ENTER 执行了一个命令行
; 在同一命令行上分隔命令
commard \opts args 在回年之前键入后斜杠以复在另一命
令行继续输入
命令
'commerel' 执行一个命令
BACKSPCE 删除前一个字符
CTRL-H
CTRL-U 删除命令行并重新开始
CTRL-C 中断并停止一个命令的执行
文件名Gerererion 执行
的特殊字符
* 匹配任何字符集
匹配任何单个字符
[] 匹配可能的字符集
\ 引用跟的字符.用于引用特殊字符
重定向 执行
command.>filnemme 将标准输出重定向到一个文件或设备
commane >filerane 将标准输出添加到一个文件末尾
commane>!filerane 在C-Shell和K-Shell中,强制写入一个
已存在的文件
commane2>filerane B-Shell中,将标准错误重定向到某文件
commane2>>filerane B-Shell中,将标准错误添加到文件末尾
commane2>&1filerane B-Shell中,将标准错误重定向到标准输出
commane>&filerane C-Shell中,将标准错误重定向到文件
管道 执行
管道|管道 把一个命令的输出当作另一个命令输入
管道|&管道 执行 TCSH-Shell中,把标准错误作为另一
个命令输入
后台任务 执行
& 后台执行任务
fg % jobnum 将后台的命令放入前台或继续被中断的程序
bg 将前台的命令放入后台
CTRL-Z 中断并停止以后正运行的程序,程序在将之继
续之前保持信止和等待状态
notify % jobnum 将任务结束时通知用户
kill % jobnum 取消并结束在后台运行的任务
kill processnum
jobs 列出所有后台任务,除非使用jsh shell, 否则
在Boune shell中不存在
ps 列出包括的后台任务在内的所有在运行的进程
at time date 在某一特定的时间和日期执行命令;time可用分
钟和小时输入,并由am和pm加以限定
hour: minutes am pm
日期可用一日或一周中某天确定
mpnth day
month可由三字因缩略词表示
3 am, Feb etc
day是由名字表示
monday Tuesday wedanesday ,etc
可利用关键词业来标识日期和时间
am, pm., how, hoon , midnighi goday,
tomorrow
你可利用+操作符由某一天或时间增加一个时
间段.+操作符之后数字标明时间段的个数
date + nuw time - segmelt
time - segmeut可以是
hours minutes days weeks months
years
关键是keyword 从现在时间增加一个时间段
wext time -- segnert
next week
选项
l jobnum (列出现有的at 任务)
r jobnum (取消一个任务)
m jobnum (任务结束时用mail进行通知)
第6章Linux文件结构
在Linux中,文件被组织在目录中,反过来,文件又在统一的文件结构下相互联
系.文件引用不仅仅是依照它的名字,此外还依照它在文件结构中的位置.你想
创建并向文件结构增加多少目录都可以.Linux文件命令可以执行复杂的操作,
诸如移动文件,带同子目录的整个目录的拷贝.使用文件操作,诸如find, cp,mv
和ln,你可以对文件定位,拷贝或将他们由一个目录连接到另一个目录.
这些特性一齐构成了Linux的文件系统.本章首先介绍不同的文件类型和
类别(clacses),然后,本章介绍了Linux文件总体结构,以及如何利用路径名和工
作目录即可实现对目录和文件的引用.本章的最后部分讨论了诸如拷贝,移动,
连接文件等不同文件操作.
6.1 Linux文件
你可以用任何字母表中字母,下划线和数字来命名一个文件.你也可以使用
句号和逗号.但是,文件名不能以数字开头.此外,除非在特殊的情况中.你都不
应该以点号作为文件名开头.其它的字符,如横线,问号或逗号,它们都是系统保
留的特殊字符,不能用于文件名.文件名可长达256个字符.
你可以把扩展作为文件名的一部分.句号用于区别文件名和扩展.扩展对
于将你的文件分类是非常有用的.你可能对某些大众已接纳的标准扩展比较熟
悉.例如,C的源代码文件总是有C的扩展.包含编辑过的目标代码文件有O
扩展.当然,你可以加入自己的文件扩展.下一例子都是有效的Linux文件名.
preface
chapter 2
Calc.c
intro.bk 1
有一些特殊的初始化文件用于包含shell的设置命令.这些文件是隐藏的或
者是点号文件,如第5章所述,以点号开头的文件.点号文件有预先已定好的名
字.回想一下当使用ls命令来显示文件名时,点号文件不会被显示.要包括点号
文件,你需要在ls命令中加入-a选项.点号文件将在14章详细讨论.
6.1.1文件类型
正如在第5章中所知道的,linux中所有文件只有一种物理格式-byte流.byte
流只是一个byte的序列.这一点使linux将文件概念应用于系统中所有的数据
元素.目录和设备都被分类成文件.将所有东西都当作文件对待,可使linux很
方便地组织并交换数据.文件中的数据可以被直接送往设备,例如屏幕因为设备
与常规文件一样,与系统有着相同的byte流文件格式接口.
这种相同的文件格式被用于其它操作系统元素的执行.设备,诸如屏幕或键
盘的接口也被设定为一个文件.其它元素,如目录,本身也是byte流文件,但它们
有着不同的内部组织形式.一个目录文件包含着目录信息,并以一种特殊的目录
格式组织.既然这些不同的元素都被作为文件对待,他们可被视为构成不同的文
件类型.字符设备是一种文件类型.目录又是另一种文件类型.这些文件类型
的数目因你所用Linux类型不同而变化.然而,有四种常见的文件类型:普通文
件,目录文件,字符设备文件和块设备文件.尽管你可能很少会引用文件的类型,
但搜索目录或设备时它还是非常有用的.在本章的后面,你将会看到在find的命
令的搜索标准中,如何利用文件类型的确定搜索的目录和设备.
6.1.2文件分类(classification):文件和od命令
尽管所有的普通文件都有byte流的格式,但它们有不同方面的应用.最显著
的区别是二进制和文本文件之间.编译过的程序是二进制文件.然而,即便是文
本文件也可根据不同的用途加以分类.你可以创建包含C编程源代码或shell
命令的文件,甚至可以有空的文件.文件也以是可执行程序或目录文件.Linux
中的file命令可帮你判定一个文件的用途.它对文件的头几行进行检查并试图
对文件进行分类.file命令在文件头几行中查找特殊关键词或特殊数字,但这一
命令并不总是正确的.在下一个例子中,file命令检查了两个文件的内容并对它
们进行了分类.
$ file monday reports
monday: text
reports: directory
为了描述文件分类的不同,在下一个例子中,file命令检查了一个C源代码文
件,一个可执行文件和一个空文件.
$ file calc.c proj newdata
cale c: C program text
proj: exe cutable
newdata: empty
file命令也接受-f选项使你可以从文件读入文件名,而无须在命令行上敲入.
在下一个例子中,文件名从文件myfile中读出.
$ cat myfiles
calc.c proj newdata
$ file -f myfiles
calc.c: c program text
proj: exe outable
naodata: empty
如果你要逐字节地检查文件,可以使用od命令完成.od命令执行对文件的
(dump).缺省情况下,它将以八进制形式打印文件每一个字节.当然,你也可以
指定字符,十进制或十六进制的表示形式.od命令在你需要查找文件中的特殊
字符,或显示二进制文件时是非常有帮助的.如果你进行字符的清查,某些特定无
法打印的字符将以字符定义的形式表示.例如,回车键将用\n表示.file和od命
令的选项都列在本章后的表6-1中.
6.2 文 件 结 构
Linux将文件组织在一个分层相连的目录集中.每一个目录中可包含文件或
其它的目录.在这种意义上,目录有两个重要的功能.一个目录包含文件,正如同
文件放入文件柜中,一个目录又同其它目录相关联,正如同树枝与其它的树枝相关
联.对文件而言,目录就如同文件柜,每个抽屈之中都放着几个文件.要访问文件,
你只要打开抽屈即可.然而,同文件抽屈不同,目录不只可以包含文件,还可以包
含其它目录.这样,一个目录便可与另一个目录关联.
因为这一结构与树的相似性,在计算机术语中它通常被称作树形结构(tree
structure).然而,把它想像成一株倒置的灌木更为贴切.没有主干,树是倒置的,
头上根下.由根部向下扩展.每一个分支都只来自另一个分支,但它可以有许多
低层的分支.在这种观点上,可以认为它有一种父子结构(parent child
structme).同样,每一个目录也是另一个目录的子目录,每一个目录中都可以包
含许多子目录,但它只是某一个父目录的子目录.
图6-1描述了文件的分层结构.由顶部的根目录开始,其它的目录不断分支.
每个目录都包含其它几个目录或文件,但每个目录只能有一个父目录.例如,目录
chris有两个子目录,reports和pregrams,然而Chris只跟一个父目录相连,这一
目录叫作home.
图6-1Linux树结构
图6-2Linux文件结构,从根目录开始,包括系统,home和用户目录
Linux文件结构以根目录,开始,分支成几个目录.在根目录中有几个系统目
录,它们包括着描述Linux系统特征的文件和程序.根目录也包含着一个用于容
纳系统中所有用户的home目录.每个用户的home目录中都包含着用户自行
创建的子目录.这其中的目录都可以再包含其它目录.这一网状目录将从用户
的home目录进行分支.
6.2.1Home目录
当你登录入系统,你便处于你的home目录中.系统起这个目录起的名字同
你登录的名字相同.你第一次登录后创建的所有文件都会被置于你的home目
录中.然而,在你的home目录中,你也可以创建其它新的目录.你可以转向这些
目录并把文件存于其中.这于系统中其它用户而言也是相同的.每一个用户都
有自己的以正确的登录名标识的home目录.它们也可以用于创建其它自己的
目录.
通过目录名或将目录定为缺省目录,你便可以访问一个目录.每个目录在创
建时都有一个名字.在文件操作中,你可利用这个名字进行目录中的文件访问.
你也可比将目录设为你的缺少目录.如果在文件操作中你不使用任何目录名,那
么将会对缺省目录进行访问.缺省目录被叫作工作目录(working directory).在
这种意义上,工作目录是你当前正在进行工作的目录.
当你登录时,工作目录便是你的home目录,它通常与你的登录名有相同的名
字.你也可以更换工作目录,用cd命令来指定另一个工作目录.工作目录更换
之后,你便可由一个目录移往另一个目录.另一种考虑目录的方法是把它认为一
条走廊.在走廊上,每个门上都有自己的名字.一些门通向房间,另一些门通向其
它的走廊.通向房间的门就是目录中的文件.通向其它走廊的门就是其它的目
录.从一个走廊去往另一个走廊就是更换工作目录.穿越几条走廊即是更换几
个目录.
6.2.2路径名
在创建文件或目录时,你所给的名字并不是它们的全名.一个目录的全名是
它的路径名.目录之间分层的网状关系构成了路径,这些路径可无歧义的标识及
引用目录和文件.在图6-3中,有一条路径从根目录"/"开始,通过home目录到达
robert目录.有另一条路径,从根目径通过home和Chris目录到达report目录.
尽管路径的某些部分开始是一样的,但在某一点它们不同了.目录robert和report
有两个目录是共享的:根和home.然后它们便不同了.在home目录中,robert
以robert告终,而目录Chris还引向reports.这样,文件结构中的每个目录都可以
说有着单独的路径.系统来标识一个目录的真实名字总是一个以根目录开头及
包含目录上方所有网状目录的名字.
在Linux中,在路径中列出各个目录名并用斜杠加以分隔就可以写出路径
名.路中第一个目录前的斜径代表根目录.目录robert的路径名是/home/robert.
目录reports的路径名是/home/chris/reports.
路径名也适用于文件.当在目录中创建一个文件时,你起文件起了一个名字.
然而,系统标识文件的真正名字是文件名和从根目录到文件所在目录的目录路
径.在图6-4中,文件weather的路径包括根目录,home和chris目录以及文件
名weather.weather的路径名是/home/chris/weathes.(根目录由第一个斜杠代
表).
路径名可以是绝对的或相对的.绝对路径名是文件或目录由根目录开始的
完全路径名.相对路径名(relative path name)是工作目录开始的,它是与你的工
作目录相对的文件的路径.
图6-3目录路径名
利用图6-4所示的目录结构.如果chris是你的工作目录.文件monday的
相对路径是/reports/monday monday的绝对路径名是
/home/chris/reports/monday.
图6-4weather的路径名:/home/chris/weather
6.2.3系统目录
开始Linux文件结构的根目录包含几个系统目录.系统目录中包含着系统
运行和维护的必不可少的文件和程序.许多还包含有子目录,子目录中有许多系
统设备的接口,如打印机或终端.表6-2列出了基本的系统目录,图6-5表明这些
目录在树形结构中是如何组织的.
图6-5Linux中系统目录
6.3 列表,显示及打印文件: ls, cat, more 和 lpr
操作系统的主要功能之一是文件管理.你可能会对你的文件执行某些基本
的输出操作,诸如把它们显示在屏幕上或把它们打印出来.linux系统提供了一套
命令来完成诸如列表,显示,文件打印及拷贝,复命令,文件,删除等基本文
件管理操作.这些命令通常是由简写的词构成.例如,ls命令是"list"的化简形式,
它将对目录中的文件进行列表.lpr命令是"line print"的……,它将打印文件.cat
和more命令将文件的内容显示在屏幕上.表6-3列出了这些命令和它们的不
同选项.
当登录到你的linux系统中后,你可能会对你目录中的文件进行列表.ls命令
会输出一个你的文件和目录名的列表,它是非常有用的.ls命令有许多选项用于
显示有不同特征的文件的列表.这些在第5章中有详细的讨论.
6.3.1显示文件:cat和more
你可能需要查看一个文件的内容.cat和more命令将文件的内容显示在屏
幕上.cat代表"concatenate"(连锁).正如第7章所述,它实际上是一个非常复
杂,功能强大的命令.这里只是被有限的利用,用于将文件的文本显示在屏幕上.
$ cat sncydata
computers
cat命令将一个文件的全部文本一次全部送往显示设备.将文件较大时,就
带来一个问题.因为文本在屏幕上迅速地闪过,more命令即是设计用来克服这
一限制的,它一次可只显示一屏的文本.你便可以随心所欲地在文本上上下移
动.你可键入more命令,然后键入你想查看的文件名来使用more命令.
$ more mydata
当more命令调用一个文件时,显示第一屏的文本.按f键或空格可进入下一
屏.要想在文本中前移,你可按b键.按q键即可退出.
6.3.2文件打印:lpr,lpq和lprm
当你希望打印文件时,可使用lpr命令将文件送往与系统相连的打印机.在
下一个例子中,用户打印了mydata文件.
$ lpr mydata
如果你一次想打印多个文件,那么在命令行的lpr命令之后你可以指定不止
一个文件.在下一个例子中,用户打印文件mydata和preface.
$ lpr mydata preface
打印作业被放入队列中,并在后台依次打印.当进行文件打印时,你可以继续
从事其它的工作.用lpq命令你可以看到某一时刻一个打印任务的位置lpq给
出打印任务的用户(发送作业用户的登录名),打印任务的ID,以bye标识的大小,
以及它所贮存的临时文件.在下一个例子中,打印任务的用户是Chris打印功能
是000/5.
$ lpq
Owner ID Chars Filename
Chris 000/5 360 /usr/lpd/cfa 000/5
如果您想取消一个不需要的打印任务,你可以利用lprm来完成.lprm以打
印作业的ID号或者其用户名作为参数.lprm会将打印任务目打印队列中移出.
在这项工作中,lpq是非常有用的,它可以给你提供打印任务ID号和同户名以便
lprm使用.在下一个例子中,15号打印任务被取消.
$ lprm 000/5
你的Linux系统可以连接若干台打印机,其中一台会被指定为缺省打印机,除
非指定另一台打印机,否则lpr命令将会在此打印机上打印.用lpr命令你可以指
定想要进行打印的特定的打印机.系统中的每一台打印机都有自己的名字.利-
p选项及打印机的名字,你可以指定使用哪一台打印机.在下一个例子中,文件
mydata在打印机enansl上进行打印.
$ lpr -Pevansl mydata
6.4目录管理:mkdir, rmdir, ls, cd和pwd
如第4章所述,你可以创建并移动你自己的目录,也可以改变自己的工作目录,
利用mkdir,rmdir和cd命令.每个命令都可将目录的路径名作为自己的参数.pwd
命令会显示你工作目录的绝对路径名.除这些命令之外,特殊字符如点号,双点
号和~符号都可被用来引用工作目录,工作目录的父目录和home目录.所有这
些命令加在一起,你便可以对你的目录进行管理.你可以创建网状的目录,从一个
目录移动到另一个目录,或利用路径名来引用你其它的目录.用于管好目录的这
些通常的命令在表6-4中列出.
6.4.1创建和删除目录:mkdir和rmdir
用mkdir和rmdir命令你便可以创建和删除目录.两个情况下,你都可以使
用目录的路径名.在下一个例子中,用户创建了目录reports.然后用户用路径名
创建了letters目录.在rmdir命令后加入目录名可以删除目录.在下一个例子
中,用户用rmdir命令删除了目录reports,然后用路径名删除了目录letters.
$ rmdir neports
$ rmdir/home/chris/letters
6.4.2目录列表:ls
你已看到如何使用ls命令列出工作目录中的文化和目录.然而,为了区分文
件名和目录名,你需使ls命令的-F选项.然后列表中每个目录名后会加入一条
斜线
$ ls
loeathes neports letters
$ ls -F
weather reports/ letters/
ls命令也可以目录名或目录路径名作参数.这样你无需先改换向该目录,便
可列出此目录中的文件.在下一个例子中,ls命令的参数是一个目录名,reports.
然后ls命令又被执行了一次,不过这次使用了reporns的绝对路径名.
$ ls reports
monday tnesday
$ ls/home/chris/reports
monday twesday
$
6.4.3路径名:pwd命令
在每个目录中,你可以再创建另外的目录,即在实际上成为网状目录.利用cd
命令,你可以一个目录改换入另一个目录.然而,没有指示符来告知你目前处于哪
一个目录中.要找出你改换到了哪个目录,用pwd命令可以显示你目前的工作目
录.pwd命令不仅仅显示目录名,它显示了整个路径名,如下例所示,这里显示的
路径名包括home目录,dylam它是home目录的一部分.每一个目录名都用斜
线隔开.根目录以开头的斜线表示:
$ pwd
/home/dylan
6.4.4更换目录:cd命令
如何所知的,用cd命令可以更换目录.更换后的目录当成为工作目录,它是
你的缺省目录.文件名诸如ls和cp,都将对你工作目录中的文件除当操作当特
别的指定.
当你登录入系统,你的工作目录是你的home目录.当一个用户帐号创建时,
系统也为该用户创建了一个home目录.当你登录时,你便总被置于home目录
中.cd命令允许你将另一个目录作为工作目录.在某种意义上,你可从你的home
目录移到另一个目录中.这一目录便成为任何命令和新文件创建的缺省目录.
例如,ls命令将列出新的工作目录中的文件.cd命令将你想转移的目录名作的参
数.
$ cd directory-name
在下一个例子中,用户从home目录更换到props目录中.用户执行了pwd
命令来显示工作目录.
$ pwd
/home/dylan
$ pwd
/home/dylan/props
$注意,当你创建一个新目录时,你已经处于一个工作目录当中了.你所创建的
任何目录都在工作目录之中.工作目录和你在其中创建的新目录之间有父子关
系.工作目录是新建目录的父目录.如果用户在home目录中,创建了一个props
目录,那么home目录便是props目录的父目录,props是home目录的子目录.
你可用两点". ."来代表一个目录的父目录.在字面上,它表示着父目录的路径
名.你可用cd命令和双点号移回到父目录.将父目录作为当前目录.在下一个
例子中,用户进入props目录,然后又移回home目录.
$ cd props
$ pwd
/ home/dylan/props
$ cd..
$ /home/dylan
如果你想改换回home目录,你只需键入cd命令本身,而无须加任何文件名
参数.你将移回home目录,将主再次作为工作目录.在下一个例子中,用户改换
回home目录.
$ pwd
/home/chris/letless
$ cd
$ pwd
/home/chris
你会发现你会频繁地用home目录进入其它目录,然后再返回.在下一个例
子中,用户由自己的home目录,dylan,进入props目录.然后用户用单独的cd
命令,又返回了自己的home目录.在每次改换之前,用户使用pwd命令来显示
工作目录.
$ pwd
/home/dylan
$ cd props
$ pwd
/home/dylan/props
$ cd
$ pwd
/home/dylan
6.4.5网状目录(nested Directories)
让我们来看一下cd命令如何在一系列网状目录间穿梭的.在下一个例子
中,cd命令进入letters目录.mkdir命令建了一个叫作thankyou的letters的子
目录.再次使用cd命令,用户进入thankyou目录.在此目录中,又创建了一个
目录birthday.用户又进入该目录.每次,pwd命令都显示了路名.最后,没有参
数的cd命令回到了home目录中.ls命令加-R选项将打印出,工作目录下的所
有网状子目录.
$ pwd
/home/chris
$ cd letters
$ pwd
/home/chris/letters
$ mkdir thankyou
$ cd thankyou
$ pwd
/home/chris/tetters/thankyou letters:
$ mkdir birthday
$ cd birthday
$ pwd
/home/chris/letters/thankyou/birn
$ cd
$ pwd
/home/chris
$ ls -R
thankyou
letters/thankyou
birthday
letters/thanbyan/birthday
$
6.4.6引用工作目录和父目录: .和..
一个目录总是有父目录的(当然,根目录除外).例如,在上一列表中,thankyou
目录的父目录是letters目录.将一个目录被创建后,便有两个入口.一个以.表
示,另一个以..表示.点是表示目录的路径名,双点号表示目录的父目录的路径名.
双点是可以命令中作为参数,代表的父目录的引用.单点代表目录本身.在下一
个例子中,用户进入letters目录.ls命令与.参数一起列出了letters目录中的文
件.ls命令和..参数一起列出了letters的父目录,Chris中的文件名.
图6-6工作目录(用点表示)是letters,它的父目录,chris用两个点表示,是home目录
$ cd letters
$ ls.
thankyou
$ ls..
weathen letters
$图6-6描述了点号和双点号代表工作目录和父目录的使用.正如上例所示,
父目录是home目录:chris.工作目录是letters.
你可以用单点号来引用工作目录,而不用它的路径名.例如,将一个文件以原
名拷贝入工作目录,点号可用来代替工作目录的路径名.在这种意义上,点号是工
作目录的另一个名字.在下一个例子中,用户将文件weather由目录chris拷贝
入目录reports中.reports目录是工作目录,因此可用点号代替.
$ cd reports
$ cp/home/chris/weather
双点是常用于引用父目录中的文件.下列中,cat命令显示了父目录中的
weather文件,文件的目路径名是..是加斜杠和文件名.
$ cat ../weather
raining and warm
利用cd命令和..是你可以从一个低的目录间到连续的相应父目录中.在下
一个例子中,user在目录thankyou中.然后不断用户回到chris中,使用cd命令.
$ pwd
/home/chris/letters/thankyou
$ cd..
$ pwd
/home/chris/letters
$ cd..
$ pwd
/home/chris
很多时候你会同时使用..和.作为命令参数.例如,以letters作为工作目
录,weather可被拷贝到letters之中,只需用..引用chris目录及用.引用letters
目录.
$ cp /weather.
6.4.7使用绝对和相对路径名:~
如前所述,你可用绝对或相对路径名来引用文件和目录.然而,每一个都有其
限制.尽管绝对路径名可引用任何文件或路径,它通常以较常并且复杂,使之很难
使用.相对路径名通常较短且易于使用,但它在引用文件的数目上受到限制.通
常,你会尽可能地使用相对路径名,只有在必要时,只有在必要时,不使用绝对路径
名.一些Shell提供了缩略路径名的方法 .相对路径名由工作目录开始.在下
一个例子中,ls命令利用了文件thankgan的相对路径和绝对路径.工作目录是
用户home目录,Chris thakyan的相对路径名是letters/ thankyan.
$ls letters/ thankyan
larisa
$ls/home/Chain/letters/thankyan
larisa
$.
相对路径名只能引用工作目录的子目录中的文件.这一子目录以在任何深
度,但它们的路径必须从工作目录开始分支.假如你要引用某一在目录树上更高
的目录或在另一分子上的目录.例如说,reports目录.在这种情况下,你需要利
用reports的绝对路径名.在下一个例子中,用户用绝对路径名引用了reports目
录中的monday文件.
$cat/home/Chris/reports/monday
将引用目录树中更高层目录时也需要绝对路径名.假定thandyan是工作目
录,一个用户想显示你的home目录:/home/Chris中的文件.Chris目录不是
thankyan的一个子目录,不能用相对路路径名加以引用.在这种情况下,用户为
了引用home目录中的文件就必须使用全路径名.在下一个例子中,用户想在
thankyan目录中显示home目录:/home/chris中的一个文件weather.用户需
要使用weather的绝对路径名来完成这一工作.
$Pwd
/Home/Chris/letters/thankyan
$cat/home/chris/weather
raining and waim
由根目录到你的home目录的绝对路径名可能非常复杂,并有可能因系统管
理员的原因而改变.为了让它更易使用,你可以使用特殊字符,波浪线~,它代表
你的home目录的绝对路径名.在下一个例子中,用户在weather之前加入了波
浪线和斜和来完成对home目录中weather文件的引用.
$Pwd
/home/Chris/letters/thankyon
$cat /weater
raining and warm
$
你必须指定由home目录之后的其它路径.在下一个例子中,用户引用了
reports目录中的monday文件中.波浪线代表了用户的home目录的路
径:/home/Chris,然后又指定了到monday文件的剩余路径.
$cat /reports/monday.
6.5 文件和目录操作:find.cp.mv.rm和ln
随着你创建文件数目的增加,你可能希望将之备份,改变它们的名字,删除部分
文件,或者给它们增加命字.Linux为你提供了几个文件命令朵查找文件,拷贝
文件,重命名或删除文件.如果你有大量的文件,你可以对不查找并确定某一特
殊文件.这些命令是整词的缩略形式,由两个字符组成.CP命令代表"copy",可
以完成文件拷贝命令,mr代表"more",可对文件重定各或移动文件,rm代
表"remore",可以删除一个文件,ln代表"link",可对文件添加一个名字.这一规则
的例外是find命令,它对文件名进行搜索来找到一个文件.表6-5列出了包括它
们的选项在内的不同的操作.
6.5.1查找目录:find.
一旦在许多不同目录中有大量的文件,你便需要对某一文件或某一类型的文
件进行查找.利用find命令可以进行此种查找.find命令的参数是目录名和几
个指定查找类型和查找标准的可能的选项.然后find将在指定的目录及其子目
录中查找符合标准的文件.find命令可按文件名,文件类型,用户名甚至最新更
改的日期来查找文件.
$find directory-fist option criteria
-name选项确定了查找标准并指导find命令查找与此标准匹配的文件名.
要按文件名进行查找,可使用find命令,加带目录名,其后再加上-name选项和文
件名.
$find directory-list -name filenane
find命令也有些只是执行操作的选项,如将查找结果输出的操作.如果你希
望find命令显示找到的文件,只须在命令行上将-print选项和其它任何选项加入
即可.-print选项指示find命令将所查找到的所到文件名送入标准输出.在下
一个例子中,用户搜索了reports目录中所有以monday为名的文件.一旦找到,
这一文件和它的相对路径名将会被打印出来.
$find reports -name monday -print
reports/monday
find命令将用目录列表中指定的目录名来显示一个文件名.如果你指定了
一个绝对路径名,找到的目录的绝对路径将被显示.如果指定了相对路经名,那么
只会显示目录的相对路径.上例中,用户在目录列表中拽定了一个相对路径
名,reports.查找到的文件名也以这个相对路径名为开始.在下一个例子中,用户
指定了目录列表中一个绝对路径名,查找的文件名则会以绝对路径名输出.
$find /home/chais -name monday -print
/home/chris/reports/monday.
如果你想搜索你的工作目录,可以使用目录路径名中的点是来代表工作目
录.双点是代表父目录.下一个例子用点呈代表工作目录,搜索了工作目录中的
所有文件和子目录.如果你位于home目录中,这是一种搜索你所有目录的方便
的方法.注意找到的文件是以点是开头而输出的.
$find -name weather -print
./weather
你可以将shell特殊字符作为搜索标准的一部分.然而,特殊字符必须加以引
用以免shell对之取值.在下一个例子中,将对programs目录中所有以.c为扩展
的文件加以搜索.
$find programs -name '*.c' -print
搜索标准
你也可利用find命令来查找其它目录.在Linux中,一个目录被正式划分为
一种特殊类型的文件.尽管所有的文件都有byte流的格式,但是一些文件,诸如
目录,有特殊的用法.在这个意义上,一个文件也说是有一种文件类型.find命令
有一个-type选项,可用来查找一个文件或一种文件类型.-type选项有一个字符
代表文件类型.这一代表目录的字符是d,在下一个例子中,利用了目录名和目录
文件类型来查找称作thankyon的目录.
$find /home/chris -name thankyon -type d -print
/home/ chris/letters /thankyon
如上文所述,文件不同类型并不像操作系统的其它元素�D�D诸如设备的文件
格式那样是截然不同的文件.在这种意义上,一个设备被作为一种类型的文件看
诗,你可以用find命令来查找设备,目录,和普通的文件.表6-6列出了find命
令的-type选项可使用的不同文件类型.
find命令包含许多不同的搜索标准.你可以按文件大小,文件最后被修改
的时间,它所具有的连接,它所属的组群,及其它一些标准来查找文件.表6-6中
列出了这些不同的查找标准.其中两个比较常用的是-size和-mtime选项.每
一个都以一个数字作参数.-size选项缺省以块作度量单位,如果在数字后加入c,
它将以字符cbyte为度名单位.你可用"+""-"来修改一个数字以查找比指是大小
要大或小的文件.例如+100C会选择超过100个字符的文件.-mtime选项以
它们多少天之前被修改过为查找标准.例如,利用这一选项,你可以查找你两天前
使用过的文件.在下一个例子中,find命令用-size选项来查找所有大于10个字
节的文件.第二个例子中,find命令用-mtime选项来查找三天前修改过的文件.
$find .-size +10c -print
.weather
./reports/monday
$find . -mtime +3 -print
./weather_
复杂的搜索
当选项在命令行上列出时,它们之间是潜在的与操作.只有满足所有要求的
文件名才会被列出.然而利用引用的括号和逻辑上的OR和NOT操作符,你便
可以创建复杂的搜索查询.find命令的NOT操作将是一个惊叹号"!",放在任何
搜索标准前的!号将对比标准取反.如果这一标准的匹配结果为假,那么文件便是
有效匹配.便如,下述命令列出所以无.C扩展的文件名.
$/s
main.c/ib.o today
$find . !-name "*.c"-print
/ib.o today
find命令的逻辑或操作符是-o,放在两个搜索标准之间的-o选项表明二者之
间是或的关系.如果文件满足其一或两者的要求,那文件就是一个有效的匹配.
你需要把-o每项和它的搜索标准操作数放入括号内.括号之前加左斜杠并在前
后加入空格将会实现对括号的引用,下一个命令查找有weather名字的文件和目
录.注意在引用的括号前后的空格.
$ find . \(-name weathee -o -type d \) -print
./weather
./reports
./cetters
./cetters/ thankyou
用引用的括号将搜索标准组合起来,你便可以实现复杂的逻辑操作.下列中
对一个名为reports的目录和所有尺寸大于lobyte的文件进行查找.引用的括
号放在-name和-type的与操作和与-size的或操作之外.这一命令的逻辑操作
可被表达为:
((name=reports) AND (file=directory type)) OR (size>10)
$find.\(\(-name reports -type d\)-o -size+10\)
-print
./reports
./weather
6.5.2文件拷贝
要进行文件拷贝,只须将两个文件名指定为cp命令的参数.第一个文件名是
要被进行拷贝的文件�D�D已存在的那个文件.这通常被称作源文件.第二个文
件名是拷贝的文件.这一操作会产生一个包含着源文件全部数据的新的文件.
第二个参数通常被称作目标文件.cp命令的语句如下:
$cp source-file destination-file
下列中,用户将一个叫作proposac的文件拷贝到叫做oldprop的新文件中.
$cp proposal oldprop
当用户对目录中文件列表时,新的拷贝也在列表中.
$ ls
proposat oldprop
你在不经意间用cp命令破坏了另一文件是有可能的.cp命令进行拷贝时,
首先创建一个文件,然后将数据拷贝入其中.如果另一文件与目标文件同为,那么
这一文件将被破坏,而另一同名的新文件会被创建.在某种定义上,原有文件被新
的拷贝覆盖了.在下一个例子中,proposal文件被newprop文件覆盖了.因为
proposal文件已经存在了.
$cp newprop proposal
在15章,你将学习如何对系统进行设置来查觉这种覆盖.那时,用cp命令和
-i选项会更安全.利用这一选项,cp首先会察看这一文件是否已存在.如果已存
在,便会问你是否愿意覆盖已存在的文件.如果你输入y,这一文件将被破坏并创
建一个新文件作为拷贝文件.如果你输入其它任何东西,它便认为是否定的回
答,cp命令将会被中断,保留原有的文件.
$cp -i newprop proposal
Orerwrite proposal n
$
将文件拷入目录
要将文件由工作目录拷贝到另一目录,只须将目录名作为命令的第二个参数
即可.新的拷贝文件名与原来相同,但拷贝文件在一个不同的目录中.
不同目录中的文件可以有相同的名字.因为它们在不同目录中,它们被当作
不同的文件登记.
$cp filename directoly-name
要将一个文件由home目录拷贝入一个目录,你只须指定子目录名即可.下
列中,文件newproop被由工作目录拷贝入props目录.
$cp newprop props
CP命令可将几个文件名列表作为自己的参数,因此你可以同时将几个文件
拷贝入一个目录.只要在命令行上列出文件名,并将目录名作为最后一个参数,然
后所有文件便被拷贝入目标在下一个例子中,用户将文件preface和docl拷贝到
props目录中,注意props是最后一个参数.
$cp preface doc props
你可以利用第5章介绍的特殊字符来创建文件名列表供cp或mv使用.例
如,你想把所有的C源代码文件拷贝到指定目录.无须在命令行上将每个文件名
逐一列出,只要用特殊符"*"和.c扩展即可匹配并列出所有的C源代码文件(所有
此类文件都有.c扩展名).在下一个例子中,用户将propes目录中所有文件拷贝
到oldprop目录中.注意在*.*之前props路径名的使用.在这种语境下,props
是一个加在*.*产生的文件列表上的路径名.
$cp props/ *.* oldprop
你当然可以使用其它的特殊字符,如"."" "或"[]".在下一个例子中,用户将源
代码和目标代码文件(.c和.o)拷贝到projbk目录.
$cp *.[oc] projbk
当你拷贝文件时,你可能想给拷贝文件起一个前的名字.将新文件名对目录
名之后,并以斜杠隔开即可完成这一任务.
$cp filename directory-name/new-filename
在下一个例子中,文件new prop被拷贝到props目录中,拷贝文件名字为
version1.用户然后进入props目录并对文件列表.其中只有一个叫作Version1
的文件.
$cp newprop props/version/
$cd props
$ls
versionl.
当你想把一个文件由子目录拷贝到父目录中时,你需要指定子目录的名字.cp
命令的第一个参数是需要拷贝的文件名.文件名前必须加由斜杠分隔开的子目
录的名字.第二个参数是将拷贝在父目录中的文件名.
$cp Child-directory-name/filename new-filename
下列中,文件versionl被由props目录拷贝到home目录.
$cp props/version/ version1
假定,你已将工作目录更换到了一个子目录,你想将一个文件中子目录拷贝入
父目录.你需要通过一些方法来引用父目录.你可以用双点号来完成,它代表着
父目录的路径名.
$cp filename ..
$cp filename../new-filename
例如,如果props目录是你现在的工作目录,你想将文件Version′的拷贝到
它的父目录中(本例中,是用户的home目录),你需要把双点是作为cp命令的第
二个参数.
$cp version1..
如果你想给以version/的拷贝起一个新名字,将名字加在第二个参数之后,名
字之前加斜杠.
$cp version 1../newversion
6.5.3移动文件
你右使用mv命令来为文件改名或将文件由一个目录移入另一个目录.当利
用mv来对文件改名时,只需将新文件名作为其第二个参数.第一个参数是你正
在使用的文件名.
$mv original-filename new-filename
$mv proposal version1
与co相同,mv命令也很有可能意外地删除一个文件.将对文件更名时,你可
能不小心选择了另一个已存在的文件的名字.mv命令的一个选项也可以事先查
看有相同文件名的文件是否存在.如果存在,会向你询问是否将之覆盖.下列中,
一个以version1为名的文件已经存在.
覆盖状况被查觉到,你会被询问是否将那个文件覆盖.
$ ls
proposal version1
$mv-i version1 proposal
over write proposal n
$
你可将文件由一个目录移动到另一目录,只要将文件名作为mv命令的第二
个参数.这种情况下,你可以认为mv命令是简单地将文件由一个目录移到另一
个,而不是将文件更名.在将文件移动之后,文件将与在原目录中具有相同的文件
名,除非你有特殊的指定.
$mv filename directory-name
在下一个例子中,文件newprop由home目录移动到props目录.
$mv newprop props
如果你想在移动文件时对文件更名,可在目录名后指定新的文件名.目录名
和新的文件名之间由斜杠分隔.在下一个例子中,文件new prop移动到props
目录并被更名为verion1.
$mv newprops props/version1
$cd props
$ls
通过在文件名前指定子目录名,一个文件也可以被很容易地由一个子目录移
动到父目录.
$mv props/version1 version1
假定,你已将你的工作目录移到工作目录的子目录中,你想将一个一个由子目
录移到父目录中.如同CP命令一样,你也可以用双点是来引用父目录.
$mv filename ..
$mv filename ../new-filename
如果props是你现在的工作目录,你想将文件由props目录移到它的父目录
中,-home目录中,那你应把双点是作为mv命令的第二个参数:
$mv version1..
如果你想在X目录中给文件revsion1更换一个新名字,只要将新名字加在mr
命令第二个参数之后,名字之前加斜杠.
$mv version1 ../ddprop
一个文件的实际名字是文件名之前加它的目录路径.当文件tuesday移到
reports目录后,实际上它的路径名已经变了.文件tresday的全名已由
/home/chris/tuesday变成/home/chris/reports/tuesday,它的路径名现在包括目
录reportss.在这种意义上,将文件更名更像是将文件进行了移动.
利用绝对路径名也同样方便.在下一个例子中,文件today移到目录reports
中,并更名为tuesday,注意在mv和ls命令中都使用文件的绝对路径来作文件名
参数.
$mv today/home/chris/reports/tuesday
$ ls/home/chris/reports
monday tuesday
$同cp命令一样,mv命令也可以同时将几个文件由一个目录移到另一目录.
你只需在命令行上列出文件名.你最后输入应该总是目标目录.在下一个例子
中,用户将文件wednesday和friday移到了lastleek目录中.
$cp wednesday friday lastloeek
你也可以利第5章描述的任一个特殊字符产生文件名的列表以供mv命令
使用.在下一个例子中,用户将现有目录中的所有源代码文件移到newproj目录
中.
l209 $mv *.c newproj
如果你想将一个给定目录中所有的文件移到另一个目录,你可以用*.*来作匹
配以产生这些文件的列表.在下一个例子中,用户将reorts目录中所有的文件都
移到lepbks目录 .
$mv leports/*.* lepbks
6.5.4目录的移动和拷贝
你也可以对目录进行移动和拷贝.cp和mv都可以把目录名作为第一个参
数,使你可以把子目录由一个目录拷贝或移动到另外一个目录中去.第一个参数
是要被拷贝成移动的目录名,第二个参数是将要把子目录置于其中的目录名.文
件适用的路径名结构同样适用于目录的移动或拷贝.
将子目录由一个目录拷贝到另一个目录也同样容易.要进行目录拷贝,cp命
令要求你使用一个选项.一个选项代表了"回归的".它指示cp命令拷贝一个目
录和它所包含的子目录.换句话说,整个的目录树,由那个目录起,都会被拷贝.
在下一个例子中,目录thankyou被拷贝到目录oldletloos中.现在就有两个
thankyou子目录了.一个在letters中,另一个oldletters中.
$cp-r letters/thankyou oldletters
$ls-F letters
/thankyou
$ls -F oldletters
/thankyou
假定,你只想拷贝一个目录中的文件,而不想拷贝一个目录,使之成为另一个目
录的子目录.要将一个目录中的全部文件拷贝到另一个目录中,你必须指定它们
的文件名.特殊字符星号可以匹配一个目录中的全部文件和子目录名.要将
letters目录中的全部文件拷贝到oldletters目录中,你应将星号作为你的第一个
参数以便产生letters目录中所有文件名的列表.如果你要为第一参数指定一个
路径名,你可以把星号放在末尾.在下一个例子中,letters目录中所有的文件都被
拷贝到oldletters目录.为letters指定了一个路径名,路径名末尾的星号匹配了
letters目录中所有的文件.
$cp-letters/* oldletters
为了将子目录包含在拷贝操作中,你需要使用cp的一个选项.
$cp-r letters/* oldletters
6.5.5特殊字符~
你已经看过你可以如何利用波浪线来代表home目录的绝对路径名.例如,
为了将一个文件由低层的目录拷贝到home目录中,你可以用波浪线来代表
home目录的绝对路径名.在下一个例子中,用户进入reports目录,然后将文件
monday由reports目录拷贝到home目录中.
$cd reports
$cd monday ~
为了在将文件拷贝到home目录时给文件更换一个新的名字,你可将名字放
在~/之后.在下一个例子中,文件monday被拷贝回home目录中,拷贝被更名
为today.
$cp monday ~/today
在mv命令中也可以用同样的方法使用波浪线.在下一个例子中,文件
monday被从reports目录移动到home目录.
$mv monday ~
如果将文件由低层目录移到home目录时你想将之更名,新名字前应加波浪
线和斜杠:~/.在下一个例子中,用户进入了reports目录,文件monday被移动
回home目录并被更名为
today.
$cd reports
$mv monday ~/today
当你将利用home目录的路径名时你就可以使用波浪线.在下一个例子中,
以前介绍过的一个mv和ls命令与波浪线一齐执行.
$mv weather ~/ reports/monday
$ls ~/reports
monday
$
6.5.6删除文件:rm命令
当你使用linux时,你会发现你所使用文件的数目剧增.在linux中创建文件
是很容易的.诸如象编辑器的应用程序,象cp命令,都很容易地可以创建文件.
最终,这其中的许多文件会变得过时且毫无用处.你可以用rm命令将之删除.
在下一个例子中,用户删除了文件oldprop.
$ rm oldprop
rm命令可接受任何数目的参数,使你可以列出几个文件的名字并一次把它们
同时删除.你只要在输入rm之后把它们列在命令行上即可.
$rm proposal version1 version2
使用rm命令时要小心.它是不可恢复的.一旦一个文件被删除,它是不能
被修复的.例如,假如你在输cp,rm或其它命令时,不小心误输入了rm命令.当
你按了回车键并认识到自己的错误时,已经太晚了.文件已经没有了.为了防止
此种情况的发生,你可以使用rm命令的一个选项来确保你想删除一个文件.利
用一个选项,你会被每个文件揭示是否确定将之删除.如果你输入y,文件将被删
除.如果你输入任何其它东西,文件将被保留.在下一个例子中,rm命令被指示
去删除文件proposal和oldprop.然后它会询问对每个文件的确认.用户决定
删除oldprop,保留proposal.
#rm -i proposal oldprop
Remove proposal n
Romove oldprop y
$
6.5.7连接:ln命令
用ln命令有两个参数:文件的原名和文件新的添加名.ls操作会列出两个文
件名,但是物理文件只有一个.
$ ln original-file-name added-file-name
在下一个例子中,文件today有一个另外的名字weather.它是today文件
的另一个名字.
$ls
today
$ln today weather
$ls
today weather
将ln命令对同一文件使用多次,你可以给同一文件几个不同的名字.在下一
个例子中,文件today有了weather和weekend名字.
$ln today weather
$ln today weekend
$ls
today weather weekend
你可以使用ls命令的一个选项来察看一个文件有几个连接.有一个选项的ls
命令列出了若干条信息,诸如许可(将在下章中介绍),和一个文件拥有的连接数,文
件大小和最后修改的日期.在这行信息中,在用户登录名前的第一个数字,标定了
一个文件的连接数.在日期之前的数字是文件的大小.日期是文件最后被修改
的时间.在下一个例子中,用户列出了文件today和weather的全部信息.注意
二者的连接数都为2.而且,文件大小和修改日期相同.这意味着这两个文件确
实是一个文件的不同名字.
$ls -l today weather
-rw-rw-r-- 2 Chris group 563 Feb 14 10:30 today
-rw-rw-r-- 2 Chris group 563 Feb 14 10:30 weather
这些仍然没有告诉你哪些文件名是确切相连的.当文件有相同连接数,大
小和修改日期时,如上面today文件和weather文件的情况,你在某种程度上可以
确认二者是同一文件.然而,要想完全确认,你应使用ls命令的一个选项.利用
一个选项,ls命令列出了文件名和它的i节点(inode)数.I节点数是系统来标识文
件的一个特殊数字.如果两个文件有相同的I节点数,它们代表了相同的文件.
它们是同一文件的不同名字.在下一个例子中,用户列出了文件today,weather
和larisa.注意today和weather有相同的I结点数.
$ls -i today weather larisa
1234 today 1234 weather 3976 larisa
添加名,或连接,它们由ln命令创建,并通常用于在不同目录中对同一文件的
引用.在一个目录中的文件可以被链接到另一个目录并在另一个目录中进行访
问.假定你想在另一个目录中引用home目录中的文件.你可在那个目录中建
立一个home目录中文件的连接.这一连接实际是文件的另一个名字,因为连接
在另一个目录中,它可与原文件有相同的名字.要将home目录中的一个文件连
接到另一个目录,将另一个目录名作为ln命令的第二个参数即可.
$ln filename directory-name
在下一个例子中,Chris目录中的文件today被连接到目录reorts中.ls命令
会列出Chris目录中的文件today被连接到目录reports中.ls命令会列出Chris
目录和reports目录中的today文件,实际上,只存在today文件的一份拷贝,即
home目录中的原文件.
$ln today reports
$ls
today reports
$ls reports
today
$如同cp和mv命令一样,你也可以给连接一个新名字.只要将新名字放在目
录名之后,并加斜杠分隔即可.在下一个例子中,文件today被用wednesday的
名字连接到目录reports中.这时也只有一个真实的文件,即Chris目录中叫作
today的原文件.然而,现在today is wednesday的名字连接到了目录reports
中,在这种意义上,today有了另外一个名字.在目录reports中,today以
wednesday的名字存在.
$ln today reports/wednesday
$ls
today reports
$ls reports
wednesday
$
你可以引用文件的路径名很轻易地把一个目录的一个文件连接到另一个目
录的另一个文件中去.在下一个例子中,reports目录中的文件monday被连接
到目录Chris中.注意第二个参数是绝对路径名.
$ln monday/home/Chris
要删除文件,你需要删除它所有的连接.一个文件名实际上被认为是到文件
的一个连接.命令rm将到文件的连接删除.如果你的文件有几个连接而你只
删除了其中一个,其它的原地未动,那么你便可以通过其它的文件名来引用文件.
即使你将初始的连接�D�D文件的初始文件名删除,情况仍然如此.任何增加的连
接都会一样地起作用.在下一个例子中,today文件被rm命令删除.然而,同一
个文件还有一个叫weather的连接,文件可由weather的名字加以引用(见图6-
7).
$ln today weather
$rm today
$cat weather
The storm broke today and the sun came out.
$
图6-7要删除一个文件,你需要删除它的所有链接
符号连接和硬连接
Linux支持所谓的符号连接,就我们所介绍的而言,被称作硬连接.尽管,硬连
接可以满足你大部分的需要,但它仍然有很大的局限性.当你试图连接其它用户
的目录中的文件时,硬连接可能会失败.这是因为Limux文件结构可被物理上划
分为称作文件系统的部分.一个文件系统可由许多物理存贮设备或设备组成,从
一个软盘到一系列的硬盘.尽管所有文件系统中的文件都被连接到同一个总的
目录树中,每一个文件系统在物理上将管理自己的文件和目录.这意味着一个文
件系统中的文件不能由硬连接到另一个文件系统的文件上.如果你试图连接另
一个文件系统中另一用户目录中的文件,硬连接将会失败.
使用符号连接使可以克服这一限制.符号连接中包含着它所连接到的文件
的路径名.它不是一个直接的硬连接,而是如何定位一个特定文件的信息.不像
硬连接一样为同一个文件再登记一个名字,符号连接只是被认为是代表路径名的
另一种符号.它是文件路径名的另一种写法.
使用ln命令的-S选项你便可以创建一个符号连接.在下一个例子中,用户为
文件/home/george/veglist创建了一个叫作lunch的连接.
$ ln-s lunch/home/george/veglist
如果你列出了一个符号连接和它的文件的信息,你会发现显示的信息是不同
的.在下一个例子中,用户用ls命令和一个选项列出了lunch和
/home/george/veglist的全部信息.命令行中第一个字符标识了文件的类型.符
号连接有它们自己的文件类型�D�D用L表示.lunch的文件类型是L,表明它是
一个符号连接,而不是一个通常的文件.在术语"group"之后的是文件的尺寸.注
意到二者的大小是不同的.文件lunch仅有4byte大.这是因为Lunch只是一
个符号连接�D�D包含着另一文件的路径的文件�D�D路径名只会占用几个字节.
它不是文件veglist的一个直接的硬连接.
$ls lunch/home/george/veglist
Lrw-rw-r--1 Chris group 4 Feb 14 10:30 lunch
-rw-rw-r--1 george group 793 Feb14 10:30 veglist
要删除一个文件,你只需删除它的硬连接.如果还有一些符号连接,它们不会
完成对文件的访问.在这种情况下,符号连接中将包含一个已经不存在的文件的
路径名.与硬连接不同,使用符号连接你可以创建目录的连接.在效果上,你可以
创建另一个名字来实现对目标目录的引用.然而,如果你用符号连接来代表一个
目录名,你要记住pwd命令总是会显示实际的目录名,而不是符号名.在下一个
例子中,用户将目录thankyou连接到符号连接gifts上.当用户使用cd命令和gifts
时,用户实际上将进入thankyou目录.pwd会显示thankyou目录的路径名.
$ln -s/home/chris/letters/thankyou gifts
$cd gifts
$pwd
/home/chris/letters/thankyou
$
如果你想显示符号连接的名字,你可用cwd变量对之访问.cwd是一个特殊
的系统变量,它容纳着一个目录的符号递接的名字,如果存在这一符号连接的话.
cwd变量将在15章加以讨论.你可echo $ cwd命令显示了cwd的内容.
$pwd
/home/Chris/letters/thankyou
$echo $cwd
/home/Chris/gifts
6.6 总结:Linux文件系统
在Linux中,文件被组织在目录中.目录本身相互间分层连接,构成一种树形
结构.每一个目录中都包含了文件和其它目录.在分层结构的顶端是根目录,由
它分支出系统目录和用户的home目录.系统目录中包含着维持Linux系统运
行的应用程序,home目录是用户的登录目录.
目录的网状结构构成了一个由高层目录到底层目录的路径,反之亦然.由根
目录到一个特定目录之间的目录集就是目录的路径名.实际上,每一个文件都由
一个路径名,由根目录开始到文件所在目录.路径名和文件名一同构成了文件的
绝对路径名.
你可以轻松地管理目录�D�D创建新目录,删除旧目录,由一个目录更换到另一
个目录.在一个目录中你还可以创建任何深层的子目录.当然录入系统后,你总
是处于一个缺省的目录中.这一缺省目录叫作你的工作目录,你创建的任何文件
都会被放入这一目录中,除非另加指定.
你可以用cd命令来改变缺省目录.在此意义上,你可以从一个目录移到另一
个目录.当你首次登录入系统时,你缺省的目录是你的home目录.
你可在目录之间或目录本身上进行文件操作.你可将文件由一个目录拷贝,
移动到另一个目录.你甚至可以移动,拷贝整个目录,你也可以给文件创建连接.
连接是文件的另一个名字.可你以在一个目录中有一个可引用另一目录中文件
的连接.
表6-1file和od命令
命令 执行
file 检查一个文件的头几行以确定其分类
-f filename 将要进行检查的文件名由一个文件中读出
od 将文件的内容以八进制,字符,十进制或十六
进制的形式逐一打击;八进制是缺省格式
-c 将byte值以字符形式输出;非打印字符有
相应的字符表示形式
-d 将byte值以十进制形式输出
-x 将byte值以十六进制形式输出
-o 将byte值以八进制形式输出
表6-2Linux中标准系统目录
目录 功能
/ 文件系统结构的开始�D叫作根目录
/home 包含着用户的home目录
/bin 包含着所有标准的命令和应用程序
/usr 包含着系统使用的文件和命令;这一目录被分为
若干子目录
/usr/bin 包含着面向用户的命令和应用程序
/usr/sbin 包含系统管理命令
/usr/lib 包含编程语言的序
/usr/doc 包含Linux的文档
/usr/man 包含在线的手工man文件
/usr/spooc 包含缓冲文件,如一些打印作业和网络传输
/sbin 包含系统重启动的系统管理命令
/var 包含一些如信箱文件之类的可变文件
/dev 包含与诸如终端和打印机的文件接口
/etc 包含系统设置和其它系统文件
表6-3文件列表,显示和打印
命令选项 执行
ls 列出文件和目录名
$ls
cat 这一过滤器被用于文件显示,它可将文件名作
为参数.它将文件内容直接送入标准输出,后者
在缺省情况下指向屏幕
more 这一应用将文件逐屏显示.它可将文件名作为
参数.它将文件的内容输出到屏幕,一次只显示
一屏内容$more filenames
+num 从文件的第num页开始显示
numf 跳过num数的屏幕
numb 返回num数的屏幕
d 显示半屏
h 列出所有more命令
q 退出more命令
lpr 将文件送往在线打印机打印;参数可以是一个文
件的列表
-p printername 选择一个特定的打印机
lpq 列出打印任务的队列
lprm 将一个打印任务自打印队列中删除
表6-4目录命令
命令 执行
mkdir 创建一个目录
$ mkdir reports
rmdir 删除一个目录
$ rmdir letters
ls -F 用斜杠列出目录名
$ls -F
today reports/letters/
ls -R 列出工作目录和子目录
cd directory name 进入特定的目录,并将之作为工作目录;没有指定
目录名的cd命令将回到home目录中
$cd reports
$cd
pwd 列出一个工作目录的路径名
$pwd
/home/chris/reports
directory name/filename 在路径名中的斜杠用于分隔每个目录名.对文
件的路径名而言,斜杠将文件名同前面的目录名
分开
$ cd/home/Chris/reports
$ cat/home/Chris/reports/mydata
引用工作目录.你可将之作为参数或路径名的
一部分
$ ls.
$ mv ../aleina.
~/pathname 波浪线是一个代表home目录路径名的特殊字
符.当使用文件或目录的绝对路径名时它是很
有用的
$ cp monday ~/ today
$ mv tuesday ~/ weather
表6-5文件操作
命令 执行
cp filename filename 拷贝文件.CP有两个参数:原文件名和新的拷贝
文件名.你可以使用文件的路径名以进行跨目录
的拷贝
$cp today reports/monday
cp -r dirname dirname 将一个子目录由一个目录拷贝到另一个目录中.
被拷贝的子目录将包含它所有的子目录
$cp -r letters/thankyou oldletters
mv filename filname 移动或将文件更名.mv有两个参数:第一个是要
移动的文件第二个是新文件名或目录的路径名.
如果它是一个目录名,这一文件在字面上被移到那
一目录中,并且将文件的路径名加以改变
$mv today/home/Chris/reports
mv dirname dirname 移动一个目录,在这种情况下,两个参数都是目录
$mv letters/thankyou oldletters
ln filename filename 为文件创建一个名为连接的增加名.可在一个
目录中创建另一个目录中文件的连接
$ln today reports/monday
rm filenames 删除文件.可以有任意数目的文件作参数.字
面上删除了文件的连接.如果一个文件有多个
连接,你应当连接全部删除以最终删除一个文件
$rm today weather weekend
表6-6find命令
命令或选项 执行
find 根据一个标准搜索目录以查找文件.这一命
令有许多参数确定搜索标准和要采取的行为
-have pattern 查找名字中具有pattern的文件
-group name 查找属于那一组名的文件
-size name 查找具有num块大小的文件.如果在num之后
加入C,那将以byte为单位进行查找
-mtime num 查找num天之前修改过的文件
-newer pattern 查找与pattern匹配文件之后的修改过的文件
-print 将查找结果输出到标准输出.结果通常是文
件名的列表,包括它们的全路径名
-type filetype 查找特定类型的文件
b 块设备文件
c 字符设备文件
d 目录文件
f 常规文件
p 指定的管道(fifo)
l 符号连接
第7章文件管理操作
Linux在文件管理和目录管理上有几个特征,你可以找到文件的详细信息,如
它们最近何时被修改过和它们拥有的连接数.你可以控制对文件的访问.Linux
中的每一个文件都有许可,它确定谁有权对之访问,以及何种访问.你可以允许其
它用户访问指定的文件或者限制为只由你自己访问.
文件存在于诸如CD-ROMS或软盘等物理设备上.每一设备上的文件都被
组织成为一个文件系统.要访问一个设备上的文件,你便将它的文件系统连到一
个特别的目录中.这被称作装卸文件系统.例如,要访问软盘上的文件,如何可以
访问CD-ROMS,软盘和硬盘分区.你甚至可以访问MS-DOS的硬盘分区和软
盘,以及一个远程服务器上的文件系统.
你也可以将你的文件备份到一个档案中,以备以后读取,你也可以把它们组合
成为一个档案文件已通过网络传到另一系统中.你也可以将文件压缩以进行更
有效的传送或只是为了占用更少的空间.档案和压缩是在线软件包经常使用的
方法.你可以下载一个压缩并存档的软件包,然后将之解压并将档案扩展开.然
后你便可以把新的软件包安装在你的系统上了.这是一种取得Linux软件的常
用方法.
7.1 显示文件信息:ls -l
如图7-1所示,ls -l命令显示文件的详细信息.首先显示的是许可,其次是连
接数,文件的所有者,用户所属的组名,以byte度量的文件大小,文件最后被修改的
日期和时间,以及文件的名字.组名指的是有组许可的组群.在图7-1中,文件
mydata的类型是一个普通文件.只有一个连接,即文件没有其它的名字.所有
者的名字是Chris,与登录名相同,组名是Weather可能还有些属于Weather组
的其它的用户.文件的大小是207bytes,它最后一个被修改是在February 20,在
上午11:55分.文件名是mydata.
图7-1用ls和-l选项显示的文件信息
如果你想显示一个目录中有文件的详细信息,只要用ls-l命令即可,无须加任
何参数.
$ls-l
-rw-r--r--1Chrisweather207Feb 2011:55mydata
-rw-r--r--1Chrisweather568Feb 1410:30otday
-rw-r--r--1Chrisweather308Feb 1712:40monday
7.2 文件和目录许可:Chmod
Linux系统中的每个文件和目录都有一许可来确定谁可以通过何种方式对文
件和系统加以访问,你可以设置许可将记问限制在三种方法之内:你可以只限由自
己进行记问;你可以允许一个预先指定的组中的用户记问权,或者你可以允许系
统上的任何一个人记问,你也可以控制一个文件和目录如何被记问.一个文件和
目录可能有读,写和执行许可,当文件被创建时,文件所有者自动拥有读和写权限,
以例将文件显示和修改.你可把许可改为你想要的任何组合.一个文件可以有
只读许可,禁示任何的更改操作.它可以有执行许可,允许它作为一个程序执行.
有三种不同类型的用户可对目录和文件加以记问:文件所有者,组,或其它
人.所有者是文件的创建者.你创建了任何文件,你使是它的拥有者.你也可以
允许你的组群有权访问文件的权限.用户被分为组.例如,某一班或一个工程的
所有用户被系统管理员分为组.一个用户有可能将文件的高问权限赋予组中的
其它用户.最后,你还可以将文件的记问权赋予系统中所有其它的用户.在这种
情况下,系统中每一位用户可能都能访问你的某一文件或目录.在这种意义上,系
统中的任何其它用户都构成了"其它"这一类.
每一类用户都有自己的一套读,写和执行许可.第一套许可控制用户对自
己文件的访问�D�D所有者的访问.第二套控制组对一个用户文件的访问.第三
个控制着所有其它用户对用户文件的访问.这三类一所有者,组和其它的三种
读,写,执行许可能成了九种类型的许可.
正如你在上节中所知,ls命令和-l选 项列出了文件的详细信息,包括许可.在
下一个例子中,最右边的一套字符就是为文件mydata设定的许可.
$ls-l mydata
-rw-r--r--l Chris weather 207 Feb 20 11:55 mydata
横线代表的是空许可.r代表的是读许可,w代表写,执行许可由x代表.注
意这里共有10个位置.第一个字符指定了文件类型.在通常意义上,一个目录
可被认为是一个文件.如果第一个字符是横线,那么列出的是一个文件.如果是
d,那么列出的是一个目录.
图7-2属主,组和其它文件许可:r表示读许可,w表示写,x表示执行,横线表示无权限
后面的九个字符是按不同的用户类型安排的.第一套三个字符是用户自己
的文件许可.第二组三个字符是组的文件许可.最后三个字符是其它用户的文
件许可.在图7-2中,文件mydata的所有者有读和写许可,组类只有读许可,其它
用户类也只有读许可.这意味着,尽管组中的其它用户或系统中任意其它用户都
可以进行读操作,只有所有者可对文件修改.
你可以使用Chmod命令来创建不同的许可设置.Chmod的参数是两个列
表:许可变更和文件名.你可用两种不同方法指定许可列表.一种方法是使用许
可符号,它被叫作符号方法(symbol method).另一种方法利用被称作二进制屏
蔽,它被叫作绝对或相对方法.两种方法中,符是法更简单,因此会首先介绍它.
在本章最后的表7-1.列出了Chmod命令的选项.
7.2.1设置许可:许可符号
正如你所预料的,设置许可的符号方法使用字符r,w和x来各自代表读,写
和执行.每一项许可都可以进行添加或删除.加入一个许可的符号是加号,十,
删除许可的符号是减号,一o在下一个例子中,Chmod命令加入文件mydata的
执行许可并删除了写许可.读许可没有变动.
$ chmod +x-w mydata
还有用于标识每种用户类型的许可符号.所有者,组和其它用户分别由字
符u,g和o代表.注意所有者这一类是由u代表,可认为它是代表用户.类别
字符是放在写,读和执行许可前面的.如果未使用类别字符,那第就认为是所有
的类,设定的许可适用于用户所有者,组和其它用户.下例及图7-3中,第一个
Chmod命令将组许可设为读和写.第二个Chmod命令将其它用户许可设为读.
注意在许可和类别之间没有空格,许可列表也是一个长短语,中间没有空格.
图7-3用许可符号来设置权限
$ chmod g+rw mydata
$ chmod o+r mydata
用户可以同添加许可一样删除许可.在下一个例子中,其它用户被设置了读
许可,而写必执行许可被删除了.
$ chmod o+r-wx mydata
还有一个类别符号,a,它代表所有的类别.符号a是缺省的,在下一个例子中,
两个命令是等价的.显式地利用了符号a来指定所有类型的用户:其它,组和用户,
并为它们设置了读许可.
$ chmod a+r mydata
$ chmod +r mydata
一个最常用的许可操作是设定一个文件的执行许可.这通常是在Shell程序
文件的情况中执行的,这将在第8和16章讨论.执行许可表明一个文件中包含
着可执行的指令并可直接由系统运行.在下一个例子中,文件lsc被设定了可执
行许可后被执行.
$ Chmod u+x lsc
$ lsc
main,c lib,c
$除读/写/执行许可外,你也可以设置可执行文件所有者属性.正常情况下,运
行程序的用户在程序运行期间拥有该程序,尽管程序文件本身可能是另一用户所
拥有的.用户ID许可允许一个程序的所有者总是拥的这一程序,即使其它用户
正在运行这一程序.例如,在系统中的大部分软件都是由根用户的所拥有而被普
通用户所运行.在这种情况下,根用户应在普通用户运行程序时仍然对程序有所
有权,以便程序有修改根用户所有文件修改的许可.组ID许可是为组设定执行
上述功能的许可.一个组所拥有的程序在另一个组的用户运行程序时仍然有所
有权.这样程序便可修改组的文件.
用s选项可以加入用户ID和组ID对文件许可.下一例子将用户ID许可赋
予了pppd程序,它是由根用户所拥有的.当普通用户远行pppd时,根用户仍保
留所有仅,使pppd程序可修改根用户文件.
# Chmod +s /usr/sbin/pppd
用户ID和组ID许可在所有者和组段的执行位置上以S代表.用户ID和组
ID是执行许可,x的一个变形.读,写和用户ID许可是rws而不是rwx.
# ls -l /usr/sbin/pppd
-rwsr-sr-x 1 root root 84604 Aag 14 1996
/usr/sbin/pppd
另一个特殊许可允许程序的有效利用.粘着置位指示系统在一个程序执行
完后仍将之留在内存中.这对那些用户频繁使用的小程序是很有用的.粘着置
位许可是t.粘着置位在其它用户许可的执行部分以t表示.一个有读,执行和
粘着置位的程序的许可将显示为r-t.
# Chmod +t /usr/X11 R6/bin/xtetris
# ls -l /usr/X11 R6/bin/xtetris
-rwxr-xr-t 1 root oot 27482 Nov19 1996
/usr/X11 R6/bin/xtetris
7.2.2绝对许可:二进制屏蔽
许多用户发现利用绝对方法更方便,而不是使用许可符号.绝对方法一次可
变更,所有的许可,而不是一项加以指定.它使用了一种二进制屏蔽来引用每类中
的所用许可.三类,每类有三种许可,构成了总数为八的二进制数,每进制数都以
八为基础结构的,将变成二进制数时,每一个八以内的数都成为三位二进制数.二
进制数是0或1的集合.一个数字中的三个八进制数可变为三套二进制数,加起
来总共是九,即文件许可的确切数目.
你可以利用八进制数作屏蔽来设置不同的文件许可.每一个八进制数适用
于用户类型的一种.你可以认为这些数与从左到右排列的许可类型相匹配,最左
端是所有者类型.第一个八进制数适用于所有者类型,第二个适用于组,第三个适
用于其它类型.
你所选择的实际的八进制数将确定每类的读,写和执行属性.这时,你需要
知道八进制数字如何转换成为相应的二进制数字.下面的表中列出了八进制数
0~7如何转换成为有三个数字的相应二进制数字.你可以认为八进制数首先转
换成为二进制数,然后二进制数中的三个数字再分别设置读,写和执行属性.每
一个二进制的数字都与一个相应的属性相匹配,也是从左到右.如果二进制数字
是0,那么许可被禁止.如果二进制数为1,那么许可被允许.第一个数字设置读
的许可为允许或禁止,第二个设置写的许可,第三个设置执行许可,例如,八进制数
6转换为二进制数110,这将把读,写许可设为允许,而将执行许可标止.
Octal Binary
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111
图7-4用八进制来设置权限
当使用二进制屏蔽时,你需要为三个种类的三种许可确定三个数字.这使得
它比符号许可显得要死板.要设置所有者对文件mydata的执行许可为允许,及
写许可禁止,并且保留读许可,你要使用二进数5(101),同时还要指定组和其它用
户记问的数字.如果这几类要保留读许可,你需要为每类指定4(100),这样你有
三个八个八进制数,544,转换为二进制数为,101 100 100.在图7-4中,为文
件mydata设置了这些许可.
$ Chmod 544 mydata
无须十分费力地完成由八进制到二进制的转换以确定你应使用哪个数字,有
一种十分简单的方法.读,写和执行许可分别与数字4,2,1相联系.(见下表).
要确定为某类应使用哪个数字,只需将4(读)和2(写)加起业即为6.这就是你所
需的八进制数.要给一类读和执行许可,只要将4(读)和1(执行)相加得5.要想
设置所有的许可,你要将4(读)2(写)和1(执行)相加得7,它等于二进制为111.下
一个例子用这种方法来计算上例中所使用的许可.所有者有读和执行许可,而组
和其它用户只有读许可.
Owner rx 4+1=5
group r 4 4
others r 4 4
544 101 100 100
$ Chmod 544 mydata
例如,要给你组中的成员读和写的许可,而系统中其它用户设有许可,你需要给
组数字6(110),给其它用户0,给所有者6保存了所有者的读写许可.你可以通过
把4(读)和2(写)相加得6来计算读,写许可.即然,你不想,任何其它用户拥有许
可,你可以给它们0,你现在得到数字660,等于二进制数110 110 000,注意
八进制数将利用二进制的000来把所有的许可设为禁止.
$ Chmod 660 mydata
许可数字二进制数
r 4 100
w 2 010
x 1 001
二进制屏蔽的最通常的用法是来设置执行许可.如第8章中将要介绍的,你
可以创建包含Linux命令的文件.这些文件都称为Shell scripts,要执行Shell
scripts中的命令,你必须首先指明这一文件是可执行的�D�D它包含着系统可以执
行的命令.可以有几种方法完成上述工作,其中之一是设置Shell script文件的
可执行许可.假定你刚完成了一个Shell scripts文件并给予它执行许可以例将
之运行,同时你想保留读和写许可,包括执行许可(你也可以将4读,2-写,和1-执行
相加得7).给组和其它用记许可赋0将禁止他们的记问.你得到数字700,与之
相等的二进制数是111 000 000,在下一个例子中,文件myprog的所有者的许
可被设置的包含执行许可.
$ Chmod 700 myprog
如果你希望其它的用户可以执行并读文件,但不能修改,你可以用数字5(101)
来设置读和执行许可为允许,并禁止写许可.在这种情况下,你要使用八进制数
755,即二进制的11 101 101.
$ Chmod 755 myprog
对于所有权和粘着置位许可,你可在八进制数的前面再加一个八进制数.用
户ID许的可八进制许可是4(100);组ID为2(010);对于粘着置位是1(001).
在下一个例子中设置了程序pppd的用户ID许可,同时设定了所有者,组和其它
用户的读,写许可.
# Chmod 4555 /usr/sbin/pppd
下面的例子设置了程序xtetris的粘着置位.
# Chmod 1755 /usr/X11R6/bin/xtetris
下一个例子将设置程序XMan的粘着置位和用户ID许可.许可5755
的二进制数为101
11 101 101.
# chmod 5755 /usr/X11R/bin/xman
# ls -l /usr/X11R6/bin/xman
-rwsr-xr-t 1 root root 44364 Mar 26 04:28
/usr/X11R6/bin/xman
7.2.3目录许可
你也可以设置目录许可.一个目录的读许可可以使用户显示目录中的文件.
执行许可使用户可进入该目录.写许可允许用户在该目录中创建或删除自己的
文件.如果你允许其它用户对一个目录有写许可,用户便可在目录中添加自己的
文件.当你创建一个目录时,它主动给所有者读,写和执行许可.你可例出目录
中的文件,进入该目录,可在其中创建文件.
同文件相同,目录也有所有者,组和其它用户的一套许可.通常,你可能希望用
户可以进入你的一个目录并对目录中文件进行列表,但不希望他们在目录中添加
文件.这种情况下,你应设置目录的读和执行许可,而禁止写许可.这会使用户可
以进入目录并对文件列表,但不能的创建新文件或将自己的文件拷贝入目录.下
一个例子设置了目录thankyou的组的读和执行许可,但没有写许可.组中的成
员可以进入thankyou目录并对文件列表,但不能创建新文件.
# Chmod g+rx-w letters/thankyou
如同文件一样,你也可利用八进制数来设置目录许可.要设置与上例中相同
的许可,你要使用八进制数750,即二进制的11 101 000.
$ Chmod 750 letters/thankyou
正如你所知的,ls命令加上-l先项可例出一个目录中所有的文件.要卢只列
出目录的消息,可加入d修改符.在下一个例子中,命ls-ld列出了目录thankyou
的信息.注意在许可例表中的第一个字符是d,代表它是一个目录.
$ ls -cd thankyou
drwxr-x--- 2 chris 512 Feb10 04:30 thankyou
如果你有一个希望其它用户记问的文件,你不仅要对文件设置许可,而且还要
保证对文件所在的目录.这一点也适用于一个目录的父目录.尽管一个目录允
许其它用户访问,但其父目录未设定访问许可,那么这一目录仍是不可访问的.在
这一点上,你必须对目录树多加注意.要提供一个目录的记问权,目录树中在此目
录上面的所有父目录也必须是可以访问的.
在图7-5中,用户树中在此目录上面的所有父目录也必须是可以访问的.需
要进入Chris和Letters目录才能进行 问.将(每个目录)其它用户类的执行许可
设为允许即可做到这一点.注意只须设定执行许可,而设有读和写许可.其它用
户不允许在目录Chris和letters中进行文件列表和增加文件.他们只能进入这
一目录并引用其子目录.
图7-5要打开一个其它用户可以访问的目录,你必须也让该目录的所有父目录可被访问

你可能感兴趣的:(linux,职场,休闲,操作系统/linux)