| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 628 人关注过本帖
标题:Linux循序渐进(1) [转]
取消只看楼主 加入收藏
冰封谷主
Rank: 4
等 级:贵宾
威 望:10
帖 子:226
专家分:20
注 册:2005-1-7
收藏
 问题点数:0 回复次数:6 
Linux循序渐进(1) [转]

第一课:什么是Linux              

  简单地说,Linux是一套免费使用和自由传播的类Unix操作系统,它主要用于基于Intel x86系列CPU的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。

  Linux的出现,最早开始于一位名叫Linus Torvalds的计算机业余爱好者,当时他是芬兰赫尔辛基大学的学生。他的目的是想设计一个代替Minix(是由一位名叫Andrew Tannebaum的计算机教授编写的一个操作系统示教程序)的操作系统,这个操作系统可用于386、486或奔腾处理器的个人计算机上,并且具有Unix操作系统的全部功能,因而开始了Linux雏形的设计。

  Linux以它的高效性和灵活性著称。它能够在PC计算机上实现全部的Unix特性,具有多任务、多用户的能力。Linux是在GNU公共许可权限下免费获得的,是一个符合POSIX标准的操作系统。Linux操作系统软件包不仅包括完整的Linux操作系统,而且还包括了文本编辑器、高级语言编译器等应用软件。它还包括带有多个窗口管理器的X-Windows图形用户界面,如同我们使用Windows NT一样,允许我们使用窗口、图标和菜单对系统进行操作。

  Linux之所以受到广大计算机爱好者的喜爱,主要原因有两个,一是它属于自由软件,用户不用支付任何费用就可以获得它和它的源代码,并且可以根据自己的需要对它进行必要的修改,无偿对它使用,无约束地继续传播。另一个原因是,它具有Unix的全部功能,任何使用Unix操作系统或想要学习Unix操作系统的人都可以从Linux中获益。

  第二课:为什么使用Linux              

  由于Linux是一套具有Unix全部功能的免费操作系统,它在众多的软件中占有很大的优势,为广大的计算机爱好者提供了学习、探索以及修改计算机操作系统内核的机会。

  操作系统是一台计算机必不可少的系统软件,是整个计算机系统的灵魂。一个操作系统是一个复杂的计算机程序集,它提供操作过程的协议或行为准则。没有操作系统,计算机就无法工作,就不能解释和执行用户输入的命令或运行简单的程序。大多数操作系统都是由一些主要的软件公司支持的商品化程序,用户只能有偿使用。如果用户购买了一个操作系统,他就必须满足供应商所要求的一切条件。因为操作系统是系统程序,用户不能擅自修改或试验操作系统的内核。这对于广大计算机爱好者来说无疑是一种束缚。

  要想发挥计算机的作用,仅有操作系统还不够,用户还必须要有各种应用程序的支持。应用程序是用于处理某些工作(如字处理)的软件包,通常它也只能有偿使用。每个应用程序的软件包都为特定的操作系统和机器编写。使用者无权修改这些应用程序。使用Linux,可以将操作系统变成一种操作环境。

  由于Linux是一套自由软件,用户可以无偿地得到它及其源代码,可以无偿地获得大量的应用程序,而且可以任意地修改和补充它们。这对用户学习、了解Unix操作系统的内核非常有益。学习和使用Linux,能为用户节省一笔可观的资金。Linux是目前唯一可免费获得的、为PC机平台上的多个用户提供多任务、多进程功能的操作系统,这是人们要使用它的主要原因。就PC机平台而言,Linux提供了比其他任何操作系统都要强大的功能,Linux还可以使用户远离各种商品化软件提供者促销广告的诱惑,再也不用承受每过一段时间就升级之苦,因此,可以节省大量用于购买或升级应用程序的资金。

  Linux不仅为用户提供了强大的操作系统功能,而且还提供了丰富的应用软件。用户不但可以从Internet上下载Linux及其源代码,而且还可以从Internet上下载许多Linux的应用程序。可以说,Linux本身包含的应用程序以及移植到Linux上的应用程序包罗万象,任何一位用户都能从有关Linux的网站上找到适合自己特殊需要的应用程序及其源代码,这样,用户就可以根据自己的需要下载源代码,以便修改和扩充操作系统或应用程序的功能。这对Windows NT、Windows98、MS-DOS或OS/2等商品化操作系统来说是无法做到的。

  Linux为广大用户提供了一个在家里学习和使用Unix操作系统的机会。尽管Linux是由计算机爱好者们开发的,但是它在很多方面上是相当稳定的,从而为用户学习和使用目前世界上最流行的Unix操作系统提供了廉价的机会。现在有许多CD-ROM供应商和软件公司(如RedHat和TurboLinux)支持Linux操作系统。Linux成为Unix系统在个人计算机上的一个代用品,并能用于替代那些较为昂贵的系统。因此,如果一个用户在公司上班的时候在Unix系统上编程,或者在工作中是一位Unix的系统管理员,他就可以在家里安装一套Unix的兼容系统,即Linux系统,在家中使用Linux就能够完成一些工作任务。

搜索更多相关主题的帖子: Linux 计算机 操作系统 Intel 赫尔辛基 
2005-04-27 15:08
冰封谷主
Rank: 4
等 级:贵宾
威 望:10
帖 子:226
专家分:20
注 册:2005-1-7
收藏
得分:0 
Linux循序渐进(2)

第三课 Linux纵览

  Linux一般有四个主要部分:内核、Shell、文件结构和实用工具。      1. Linux内核      内核是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序。它从用户那里接受命令并把命令送给内核去执行。      2. Linux Shell      Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。      实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。      Linux提供了像Microsoft Windows那样的可视的命令输入界面--X Window的图形用户界面(GUI)。它提供了很多窗口管理器,其操作就象Windows一样,有窗口、图标和菜单,所有的管理都是通过鼠标控制。现在比较流行的窗口管理器是KDE和GNOME。      每个Linux系统的用户可以拥有他自己的用户界面或Shell,用以满足他们自己专门的Shell需要。      同Linux本身一样,Shell也有多种不同的版本。目前主要有下列版本的Shell:      Bourne Shell:是贝尔实验室开发的。      BASH:是GNU的Bourne Again Shell,是GNU操作系统上默认的shell。      Korn Shell:是对Bourne SHell的发展,在大部分内容上与Bourne Shell兼容。      C Shell:是SUN公司Shell的BSD版本。         3. Linux文件结构      文件结构是文件存放在磁盘等存储设备上的组织方法。主要体现在对文件和目录的组织上。目录提供了管理文件的一个方便而有效的途径。我们能够从一个目录切换到另一个目录,而且可以设置目录和文件的权限,设置文件的共享程度。      使用Linux,用户可以设置目录和文件的权限,以便允许或拒绝其他人对其进行访问。Linux目录采用多级树形结构,图1.1表示了这种树形等级结构。用户可以浏览整个系统,可以进入任何一个已授权进入的目录,访问那里的文件。      文件结构的相互关联性使共享数据变得容易,几个用户可以访问同一个文件。Linux是一个多用户系统,操作系统本身的驻留程序存放在以根目录开始的专用目录中,有时被指定为系统目录。图1.1中那些根目录下的目录就是系统目录。      内核,Shell和文件结构一起形成了基本的操作系统结构。它们使得用户可以运行程序,管理文件以及使用系统。此外,Linux操作系统还有许多被称为实用工具的程序,辅助用户完成一些特定的任务。         4. Linux实用工具      标准的Linux系统都有一套叫做实用工具的程序,它们是专门的程序,例如编辑器、执行标准的计算操作等。用户也可以产生自己的工具。      实用工具可分三类:      编辑器:用于编辑文件。      过滤器:用于接收数据并过滤数据。      交互程序:允许用户发送信息或接收来自其他用户的信息。      Linux的编辑器主要有:Ed、Ex、Vi和Emacs。Ed和Ex是行编辑器,Vi和Emacs是全屏幕编辑器。      Linux的过滤器(Filter)读取从用户文件或其他地方的输入,检查和处理数据,然后输出结果。从这个意义上说,它们过滤了经过它们的数据。Linux有不同类型的过滤器,一些过滤器用行编辑命令输出一个被编辑的文件。另外一些过滤器是按模式寻找文件并以这种模式输出部分数据。还有一些执行字处理操作,检测一个文件中的格式,输出一个格式化的文件。过滤器的输入可以是一个文件,也可以是用户从键盘键入的数据,还可以是另一个过滤器的输出。过滤器可以相互连接,因此,一个过滤器的输出可能是另一个过滤器的输入。在有些情况下,用户可以编写自己的过滤器程序。      交互程序是用户与机器的信息接口。Linux是一个多用户系统,它必须和所有用户保持联系。信息可以由系统上的不同用户发送或接收。信息的发送有两种方式,一种方式是与其他用户一对一地链接进行对话,另一种是一个用户对多个用户同时链接进行通讯,即所谓广播式通讯。      第四课 Linux的发展              Linux是专门为个人计算机所设计的操作系统。它最早是由Linus Torvalds设计的。当时Linux是他的一项个人研究项目,其目的是为Minix用户设计一个比较有效的Unix PC版本。Linus Torvalds称它为Linux。Minix是由Andrew Tannebaum教授开发的,发布在Internet上,免费给全世界的学生使用。Minix具有较多Unix的特点,但与Unix不完全兼容,Linus打算为Minix用户设计一个较完整的Unix PC版本,于1991年发行了Linux 0.11版本,并将它发布在Internet上,免费供人们使用。      以后几年,其他的Linux爱好者根据自己的使用情况,综合现有的Unix标准和Unix系统中应用程序的特点,修改并增加了一些内容,使得Linux的功能更完善。      Linux设计了与所有主要的窗口管理器的接口,提供了大量Internet工具,如FTP,TELNET和SLIP等。         Linux提供比较完整的程序开发工具,最常用的是C++编译器和调试器。         尽管Linux拥有了Unix的全部功能和特点,但它却是最小、最稳定和最快速的操作系统。在最小配置下,它可以运行在仅4MB的内存上。        Linux是在Internet开放环境中开发的,它由世界各地的程序员不断完善,而且免费供用户使用。尽管如此,它仍然遵循商业Unix版本的标准,因为前几十年里,Unix版本大量出现,电子电气工程协会(IEEE)开发了一个独立的Unix标准,这个新的ANSI Unix标准被称为计算机环境的可移植性操作系统界面(PSOIX)。这个标准限定了Unix系统如何进行操作,对系统调用也做了专门的论述。PSOIX限制所有Unix版本必须依赖大众标准,现有大部分Unix和流行版本都是遵循POSIX标准的,而Linux从一开始就遵循POSIX标准。


2005-04-27 15:09
冰封谷主
Rank: 4
等 级:贵宾
威 望:10
帖 子:226
专家分:20
注 册:2005-1-7
收藏
得分:0 
Linux循序渐进(3)

第五课 Linux特性

  Linux操作系统在短短的几年之内得到了非常迅猛的发展,这与Linux具有的良好特性是分不开的。Linux包含了Unix的全部功能和特性。简单的说,Linux具有以下主要特性:

  1开放性

  开放性是指系统遵循世界标准规范,特别是遵循开放系统互连(OSI)国际标准。凡遵循国际标准所开发的硬件和软件,都能彼此兼容,可方便地实现互连。

  2多用户

  多用户是指系统资源可以被不同用户各自拥有使用,即每个用户对自己的资源(例如:文件、设备)有特定的权限,互不影响。Linux和Unix都具有多用户的特性。

  3多任务

  多任务是现代计算机的最主要的一个特点。它是指计算机同时执行多个程序,而且各个程序的运行互相独立。Linux系统调度每一个进程平等地访问微处理器。由于CPU的处理速度非常快,其结果是,启动的应用程序看起来好像在并行运行。事实上,从处理器执行一个应用程序中的一组指令到Linux调度微处理器再次运行这个程序之间只有很短的时间延迟,用户是感觉不出来的。

  4良好的用户界面

  Linux向用户提供了两种界面:用户界面和系统调用。Linux的传统用户界面是基于文本的命令行界面,即shell,它既可以联机使用,又可存在文件上脱机使用。shell有很强的程序设计能力,用户可方便地用它编制程序,从而为用户扩充系统功能提供了更高级的手段。可编程Shell是指将多条命令组合在一起,形成一个Shell程序,这个程序可以单独运行,也可以与其他程序同时运行。

  系统调用给用户提供编程时使用的界面。用户可以在编程时直接使用系统提供的系统调用命令。系统通过这个界面为用户程序提供低级、高效率的服务。

  Linux还为用户提供了图形用户界面。它利用鼠标、菜单、窗口、滚动条等设施,给用户呈现一个直观、易操作、交互性强的友好的图形化界面。

  5设备独立性

  设备独立性是指操作系统把所有外部设备统一当作成文件来看待,只要安装它们的驱动程序,任何用户都可以象使用文件一样,操纵、使用这些设备,而不必知道它们的具体存在形式。

  具有设备独立性的操作系统,通过把每一个外围设备看作一个独立文件来简化增加新设备的工作。当需要增加新设备时、系统管理员就在内核中增加必要的连接。这种连接(也称作设备驱动程序)保证每次调用设备提供服务时,内核以相同的方式来处理它们。当新的及更好的外设被开发并交付给用户时,操作允许在这些设备连接到内核后,就能不受限制地立即访问它们。设备独立性的关键在于内核的适应能力。其他操作系统只允许一定数量或一定种类的外部设备连接。而设备独立性的操作系统能够容纳任意种类及任意数量的设备,因为每一个设备都是通过其与内核的专用连接独立进行访问。

  Linux是具有设备独立性的操作系统,它的内核具有高度适应能力,随着更多的程序员加入Linux编程,会有更多硬件设备加入到各种Linux内核和发行版本中。另外,由于用户可以免费得到Linux的内核源代码,因此,用户可以修改内核源代码,以便适应新增加的外部设备。

  6供了丰富的网络功能

  完善的内置网络是Linux的一大特点。Linux在通信和网络功能方面优于其他操作系统。其他操作系统不包含如此紧密地和内核结合在一起的连接网络的能力,也没有内置这些联网特性的灵活性。而Linux为用户提供了完善的、强大的网络功能。

  支持Internet是其网络功能之一。Linux免费提供了大量支持Internet的软件,Internet是在Unix领域中建立并繁荣起来的,在这方面使用Linux是相当方便的,用户能用Linux与世界上的其他人通过Internet网络进行通信。

  文件传输是其网络功能之二。用户能通过一些Linux命令完成内部信息或文件的传输。

  远程访问是其网络功能之三。Linux不仅允许进行文件和程序的传输,它还为系统管理员和技术人员提供了访问其他系统的窗口。通过这种远程访问的功能,一位技术人员能够有效地为多个系统服务,即使那些系统位于相距很远的地方。

  7可靠的系统安全

  Linux采取了许多安全技术措施,包括对读、写进行权限控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。

  8良好的可移植性

  可移植性是指将操作系统从一个平台转移到另一个平台使它仍然能按其自身的方式运行的能力。

  Linux是一种可移植的操作系统,能够在从微型计算机到大型计算机的任何环境中和任何平台上运行。可移植性为运行Linux的不同计算机平台与其他任何机器进行准确而有效的通信提供了手段,不需要另外增加特殊的和昂贵的通信接口。

  第六课 Linux与其他操作系统的区别

  Linux可以与MS-DOS、OS/2、Windows等其他操作系统共存于同一台机器上。它们均为操作系统,具有一些共性,但是互相之间各有特色,有所区别。

  目前运行在PC机上的操作系统主要有Microsoft的MS-DOS、Windows、Windows NT、IBM的OS/2等。早期的PC机用户普遍使用MS-DOS,因为这种操作系统对机器的硬件配置要求不高,而随着计算机硬件技术的飞速发展,硬件设备价格越来越低,人们可以相对容易地提高计算机的硬件配置,于是开始使用Windows、Windows NT等具有图形界面的操作系统。Linux是新近被人们所关注的操作系统,它正在逐渐为PC机的用户所接受。那么,Linux与其他操作系统的主要区别是什么呢?下面从两个方面加以论述。

  首先看一下Linux与MS-DOS之间的区别。

  在同一系统上运行Linux和MS-DOS已很普遍,就发挥处理器功能来说,MS-DOS没有完全实现x86处理器的功能,而Linux完全在处理器保护模式下运行,并且开发了处理器的所有特性。Linux可以直接访问计算机内的所有可用内存,提供完整的Unix接口。而MS-DOS只支持部分Unix的接口。

  就使用费用而言,Linux和MS-DOS是两种完全不同的实体。与其他商业操作系统相比,MS-DOS价格比较便宜,而且在PC机用户中有很大的占有率,任何其他PC机操作系统都很难达到MS-DOS的普及程度,因为其他操作系统的费用对大多数PC机用户来说都是一个不小的负担。Linux是免费的,用户可以从internet上或者其他途径获得它的版本,而且可以任意使用,不用考虑费用问题。

  就操作系统的功能来说,MS-DOS是单任务的操作系统,一旦用户运行了一个MS-DOS的应用程序,它就独占了系统的资源,用户不可能再同时运行其他应用程序。而Linux是多任务的操作系统,用户可以同时运行多个应用程序。

  再看一下Linux与OS/2、Windows、Windows NT之间的区别。

  从发展的背景看,Linux与其他操作系统的区别是,Linux是从一个比较成熟的操作系统发展而来的,而其他操作系统,如Windows NT等,都是自成体系,无对应的相依托的操作系统。这一区别使得Linux的用户能大大地从Unix团体贡献中获利。因为Unix是世界上使用最普遍、发展最成熟的操作系统之一,它是七十年代中期发展起来的微机和巨型机的多任务系统,虽然有时接口比较混乱,并缺少相对集中的标准,但还是发展壮大成为了最广泛使用的操作系统之一。无论是Unix的作者还是Unix的用户,都认为只有Unix才是一个真正的操作系统,许多计算机系统(从个人计算机到超级计算机)都存在Unix版本,Unix的用户可以从很多方面得到支持和帮助。因此,Linux做为Unix的一个克隆,同样会得到相应的支持和帮助,直接拥有Unix在用户中建立的牢固的地位。

  从使用费用上看,Linux与其他操作系统的区别在于Linux是一种开放、免费的操作系统,而其他操作系统都是封闭的系统,需要有偿使用。这一区别使得我们能够不用花钱就能得到很多Linux的版本以及为其开发的应用软件。当我们访问Internet时,会发现几乎所有可用的自由软件都能够运行在Linux系统上。有来自很多软件商的多种Unix实现,Unix的开发、发展商以开放系统的方式推动其标准化,但却没有一个公司来控制这种设计。因此,任何一个软件商(或开拓者)都能在某种Unix实现中实现这些标准。OS/2和Windows NT等操作系统是具有版权的产品,其接口和设计均由某一公司控制,而且只有这些公司才有权实现其设计,它们是在封闭的环境下发展的。


2005-04-27 15:10
冰封谷主
Rank: 4
等 级:贵宾
威 望:10
帖 子:226
专家分:20
注 册:2005-1-7
收藏
得分:0 
第七课 TurboLinux简介              

  TurboLinux是拓林思公司最近发行的linux版本,已在日本和中国取得了巨大的成功,在美国也有一定的业绩。当前版本为4.0,是基于linux 2.2.10内核的。   

  TurboLinux的优点

  简单易用的图形安装程序;

  友好的图形桌面界面KDE、GNOME等;

  丰富的软件包,包括:系统管理工具、网络分析程序、服务程序包(如:Apache)等等;

  提供了完整的源代码程序;

  提供了预配置安装功能。

  

  TurboLinux的特色

  TurboPNPCfg-TurboLinux的ISA即插即用配置工具,可以很容易地设置所有的ISA PnP插件;

  所有系统组件都采用RPM软件包管理系统;

  TurboPkg-TurboLinux有完善的RPM前端,即便是FTP,也可以进行系统组件的简单安装、升级和拆卸;

  Xfree86 3.3.3;

  TurboXCfg-TurboLinux先进的配置工具;

  一套完整高У挠τ贸绦颍??ǎ?

  GIMP(Photoshop型程序)

  Xpaint(图形程序)

  yx (排版工具)

  WingZ(电子表格)

  Netscape(通讯程序)

  Emacs和Xemacs (编辑器)

  Xessite(电子表格)

  多种游戏、屏幕保护程序、仿真程序和其他娱乐性程序;

  完整的网络客户程序-除了如tenet、ftp、rsh等标准程序外,TurboLinux还提供了如tkined、基于SNMP的图形网络管理器的程序。

  大量的服务器软件包提供如下的服务:

  基本的端口监视服务程序(tenet、ftp、rsh等)

  Web服务程序(Apache)

  DNS名字服务器(bind)

  E-mail

  TurboLinux的一般用途

  防火墙

  路由器

  工作站

  Intranet或Internet服务器

  TurboLinux具有设置服务器、开发者和办公系统所需的一切功能。

  1.对于服务器TurboLinux是一套很完整的系统,它具有建立一个商业Internet站点所需的各种软件。您可以将TurboLinux用作带有限客户的工作组服务器,也可以把它当作成熟的,能够同时接收数百个连接请求的Internet站点。

  2.对于开发者TurboLinux为开发者提供了常用的编辑器、编译器、调试器和编程工具。另外,TurboLinux具有强健的应用程序开发环境,提供了各种开发应用程序的工具,具有对多种语言如:C、C++、Java、Per、Tc/tk、Python和Fortran 77的编译器/解释器以及集成开发环境、调试和其他开发工具。

  3.对于办公系统TurboLinux包含了办公室运转所需的一切。如:Netscape Navigator、WordPerfect 8、Wingz(电子表格)、Gimp(Photoshop类程序)和Xpaint(图形程序),一共有几百种程序。

  谁从TurboLinux获益

  开发者

  程序员

  系统管理员

  系统分析员

  管理人员

  最终用户

  TurboLinux的站点

  ·http://www.turbolinux.com(美国)   ·http://www.turbolinux.com.cn(中国)   ·http://www.turbolinux.co.jp(日本)

  第八课 进入与退出系统

  TurboLinux是一个多用户的操作系统,用户要使用该系统,首先必须登录系统,使用完系统后,必须退出系统。本章主要讨论登录和退出系统的方法。

  用户登录系统时,为了使系统能够识别自己,必须输入用户名和密码,经系统验证无误后方能进入系统。在系统安装过程中可以创建两种帐号:

  1)root--超级用户帐号,使用这个帐号可以在系统中做任何事情。

  2)普通用户--这个帐号供普通用户使用,可以进行有限的操作。

  一般的Linux使用者均为普通用户,而系统管理员一般使用超级用户帐号完成一些系统管理的工作。如果只需要完成一些由普通帐号就能完成的任务,建议不要使用超级用户帐号,以免无意中破坏系统。

  用户登录分两步进行:第一步,输入用户的登录名,系统根据该登录名来识别用户;第二步,输入用户的口令,该口令是用户自己选择的一个字符串,对其他用户是保密的,是在登录时系统用来辨别真假用户的关键字。

  在Linux系统中,系统管理员在为用户建立新帐号时赋给用户一个用户名和一个初始的口令。另外,Linux系统给计算机赋予一个主机名。主机名用于在网络上识别独立的计算机(即使用户的计算机没有联网,也应该有一个主机名)。TurboLinux系统给出的缺省主机名为:localhost。在下面的例子中,我们假设用户名为"xxq",系统的主机名为"localhost"。

  进入系统(登录)

  超级用户登录

  超级用户的用户名为root,密码在安装系统时已设定。系统启动成功后,屏幕显示下面的提示:

  localhost login:

  这时输入超级用户名"root",然后键入回车键。此时,用户会在屏幕上看到输入口令的提示:

  localhost login:root

  Password:

  这时,需要输入口令。输入口令时,口令不会在屏幕上显示出来。如果用户输入了错误的口令,就会在屏幕上看到下列信息:

  login incorrect.

  这时需要重新输入。当用户正确地输入用户名和口令后,就能合法地进入系统。屏幕显示:

  [root@loclhost /root] #

  此时说明该用户已经登录到系统中,可以进行操作了。这里"#"是超级用户的系统提示符。普通用户登录建立了普通用户帐号以后,就可以进行登录了。   

  在登录时,用户会在屏幕上看到类似下面的提示:

  localhost login:

  这时输入用户名"xxq",然后键入回车键。此时,用户会在屏幕上看到输入口令的提示:

  localhost login:xxq

  Password:

  这时,需要输入口令。输入口令时,口令不会在屏幕上显示出来。如果用户输入了错误的口令,就会在屏幕上看到下列信息:

  login incorrect.

  这时需要重新输入。当用户正确地输入用户名和口令后,就能合法地进入系统。屏幕显示:

  [xxq@loclhost xxq] $

  此时说明该用户已经登录到系统中,可以进行操作了。

  修改口令

  为了更好的保护用户帐号的安全,Linux允许用户随时修改自己的口令,修改口令的命令是passwd,它将提示用户输入旧口令和新口令,之后还要求用户再次确认新口令,以避免用户无意中按错键。如果用户忘记了口令,可以请系统管理员为自己重新设置一个。

  虚拟控制台

  Linux是一个真正的多用户操作系统,这表示它可以同时接受多个用户登录。Linux还允许一个用户进行多次登录,这是因为Linux和许多版本的UNIX一样,提供了虚拟控制台的访问方式,允许用户在同一时间从控制台(系统的控制台是与系统直接相连的监视器和键盘)进行多次登录。

  虚拟控制台的选择可以通过按下Alt键和一个功能键来实现,通常使用F1-F6。

  例如,用户登录后,按一下Alt-F2键,用户又可以看到"login:"提示符,说明用户看到了第二个虚拟控制台。然后只需按Alt-F1键,就可以回到第一个虚拟控制台。一个新安装的Linux系统允许用户使用Alt-F1到Alt-F6键来访问前六个虚拟控制台。

  虚拟控制台可使用户同时在多个控制台上工作,真正感受到Linux系统多用户的特性。用户可以在某一虚拟控制台上进行的工作尚未结束时,切换到另一虚拟控制台开始另一项工作。例如,开发软件时,可以在一个控制台上进行编辑,在另一个控制台上进行编译,在第三个控制台上查阅信息。

  退出系统

  不论是超级用户,还是普通用户,需要退出系统时,在shell提示符下,键入下列命令即可。

  下面以普通用户的退出为例,说明退出系统的过程:

  [xxq@loclhost xxq] $ exit

  还有其他退出系统的方法,但上面一种是最安全的。


2005-04-27 15:17
冰封谷主
Rank: 4
等 级:贵宾
威 望:10
帖 子:226
专家分:20
注 册:2005-1-7
收藏
得分:0 

第九课 文件与目录操作

  用户的数据和程序大多以文件的形式保存。用户使用Linux系统的过程中,需要经常对文件和目录进行操作。本章讲述了文件与目录的基本概念,有关文件和目录操作的命令以及如何在Linux环境下运行DOS命令。

  文件与目录的基本概念

  文件与文件名

  在多数操作系统中都有文件的概念。文件是Linux用来存储信息的基本结构,它是被命名(称为文件名)的存储在某种介质(如磁盘、光盘和磁带等)上的一组信息的集合。Linux文件均为无结构的字符流形式。文件名是文件的标识,它由字母、数字、下划线和圆点组成的字符串来构成。用户应该选择有意义的文件名。Linux要求文件名的长度限制在255个字符以内。

  为了便于管理和识别,用户可以把扩展名作为文件名的一部分。圆点用于区分文件名和扩展名。扩展名对于将文件分类是十分有用的。用户可能对某些大众已接纳的标准扩展名比较熟悉,例如,C语言编写的源代码文件总是具有C的扩展名。用户可以根据自己的需要,随意加入自己的文件扩展名。

  以下例子都是有效的Linux文件名。

  preface

  chapter1.txt

  xu.c

  xu.bak

  文件的类型

  Linux系统中有三种基本的文件类型:普通文件、目录文件和设备文件。

  1.普通文件普通文件是用户最经常面对的文件。它又分为文本文件和二进制文件。

  1)文本文件:这类文件以文本的ASCII码形式存储在计算机中。它是以"行"为基本结构的一种信息组织和存储方式。

  2)二进制文件:这类文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们,只有通过相应的软件才能将其显示出来。二进制文件一般是可执行程序、图形、图像、声音等等。

  2.目录文件设计目录文件的主要目的是用于管理和组织系统中的大量文件。它存储一组相关文件的位置、大小等与文件有关的信息。目录文件往往简称为目录。

  3.设备文件设备文件是Linux系统很重要的一个特色。Linux系统把每一个I/O设备都看成一个文件,与普通文件一样处理,这样可以使文件与设备的操作尽可能统一。从用户的角度来看,对I/O设备的使用和一般文件的使用一样,不必了解I/O设备的细节。设备文件可以细分为块设备文件和字符设备文件。前者的存取是以一个个字符块为单位的,后者则是以单个字符为单位的。

  目录

  树型目录结构

  在计算机系统中存有大量的文件,如何有效的组织与管理它们,并为用户提供一个使用方便的接口是文件系统的一大任务。Linux系统以文件目录的方式来组织和管理系统中的所有文件。所谓文件目录就是将所有文件的说明信息采用树型结构组织起来--即我们常说的目录。也就是说,整个文件系统有一个"根"(root),然后在根上分"杈"(directory),任何一个分杈上都可以再分杈,杈上也可以长出"叶子"。"根"和"杈"在Linux中被称为是"目录"或"文件夹"。而"叶子"则是一个个的文件。实践证明,此种结构的文件系统效率比较高。

  如前所述,目录也是一种类型的文件。Linux系统通过目录将系统中所有的文件分级、分层组织在一起,形成了Linux文件系统的树型层次结构。以根目录为起点,所有其他的目录都由根目录派生而来。一个典型的Linux系统的树型目录结构如图3.1所示。用户可以浏览整个系统,可以进入任何一个已授权进入的目录,访问那里的文件。   

  上图中,我们只给出了目录结点名称,而没有给出各个目录"之下"的每一个文件。实际上,各个目录结点"之下"都会有一些文件和子目录。并且,系统在建立每一个目录时,都会自动为它设定两个目录文件,一个是".",代表该目录自己,另一个是"..",代表该目录的父目录,对于根目录,"."和".."都代表其自己。

  Linux目录提供了管理文件的一个方便途径。每个目录里面都包含文件。用户可以为自己的文件创建自己的目录,也可以把一个目录下的文件移动或复制到另一目录下,而且能移动整个目录,并且和系统中的其他用户共享目录和文件。也就是说。我们能够方便地从一个目录切换到另一个目录,而且可以设置目录和文件的管理权限,以便允许或拒绝其他人对其进行访问。同时文件目录结构的相互关联性使分享数据变得十分容易,几个用户可以访问同一个文件。因此允许用户设置文件的共享程度。

  需要说明的是,根目录是Linux系统中的特殊目录。Linux是一个多用户系统,操作系统本身的驻留程序存放在以根目录开始的专用目录中,有时被指定为系统目录。在图3.1中那些根目录下的目录就是系统目录。

  工作目录、用户主目录与路径

  如前所述,目录是Linux系统组织文件的一种特殊文件。为使用户更好地使用目录,我们介绍有关目录的一些基本概念。

  I.工作目录与用户主目录

  从逻辑上讲,用户在登录到Linux系统中之后,每时每刻都"处在"某个目录之中,此目录被称作工作目录或当前目录(Working Directory)。工作目录是可以随时改变的。用户初始登录到系统中时,其主目录(Home Directory)就成为其工作目录。工作目录用"."表示,其父目录用".."表示。

  用户主目录是系统管理员增加用户时建立起来的(以后也可以改变),每个用户都有自己的主目录,不同用户的主目录一般互不相同。

  用户刚登录到系统中时,其工作目录便是该用户主目录,通常与用户的登录名相同。

  用户可以通过一个"~"字符来引用自己的主目录。

  例如命令

  /home/WANG$ cat ~/class/software_1

  和下面的命令

  /home/WANG$ cat /home/WANG/class/software_1意义相同。shell将用用户主目录名来替换"~"字符。目录层次建立好之后,用户就可以把有关的文件放到相应的目录中,从而实现对文件的组织。

  对文件进行访问时,需要用到"路径"(Path)的概念。

  II.路径

  顾名思义,路径是指从树型目录中的某个目录层次到某个文件的一条道路。此路径的主要构成是目录名称,中间用"/"分开。任一文件在文件系统中的位置都是由相应的路径决定的。

  用户在对文件进行访问时,要给出文件所在的路径。路径又分相对路径和绝对路径。绝对路径是指从"根"开始的路径,也称为完全路径;相对路径是从用户工作目录开始的路径。

  应该注意到,在树型目录结构中到某一确定文件的绝对路径和相对路径均只有一条。绝对路径是确定不变的,而相对路径则随着用户工作目录的变化而不断变化。这一点对于我们以后使用某些命令如cp和tar等大有好处。

  用户要访问一个文件时,可以通过路径名来引用。并且可以根据要访问的文件与用户工作目录的相对位置来引用它,而不需要列出这个文件的完整的路径名。例如,用户WANG有一个名为class的目录,该目录中有两个文件:software_1和hardware_1。若用户WANG想显示出其class目录中的名为software_1的文件,可以使用下列命令:

  /home/WANG$ cat /home/WANG/class/software_1

  用户也可以根据文件software_1与当前工作目录的相对位置来引用该文件。这时命令为:

  /home/WANG$ cat class/software_1


2005-04-27 15:32
冰封谷主
Rank: 4
等 级:贵宾
威 望:10
帖 子:226
专家分:20
注 册:2005-1-7
收藏
得分:0 
Linux循序渐进(6)
第十课(一) 文件和目录操作相关命令

显示文件内容命令

用户需要查看一个文件的内容时,可以根据显示要求的不同选用以下的命令。

cat命令

功能1:在标准输出上显示文件。

语法:cat [ - 选项 ] 文件

说明:该命令功能之一是用来显示文件。它依次读取其后所指文件的内容并将其输出到标准输出。

cat命令中各个选项的含义为:

- v 用一种特殊形式显示控制字符,LFD与TAB除外。

加了- v选项后,- T和- E选项将起作用。其中:

- T 将TAB显示为“Ù I”。该选项需要与- v选项一起使用。即如果没有使用- v选项,则这个选项将被忽略。

- E 在每行的末尾显示一个$符。该选项需要与- v选项一起使用。

- u 输出不经过缓冲区。

- A 等于- vET。

- t 等于- vT。

- e 等于- vE。

例1:$ cat example.txt

则在屏幕上显示出example.txt 文件的内容。

本想今天去香山看红叶,无奈天公不作美没去成,真遗憾,但愿明天艳阳高照,使我们梦想成真。

 

例2:$ cat - A exam2.txt

则在屏幕上显示出exam2.txt 文件的内容,而且如果文件中含有特殊字符的话,一并显示。

I am a boy ! ùI You are a cute boy$

功能2:连接两个或多个文件

说明:该命令功能之二是用来将两个或多个文件连接起来。

例3:$ cat file1 file2 > file3

这样就把文件filel和文件file2的内容合并起来,放入文件file3中。(此时在屏幕上并不能直接看到该命令执行后的结果。若想看到连接后的文件内容,可以再使用“cat file3”。)

需要说明的是,当文件内容过多时,就带来一个问题,因为文本在屏幕上迅速地闪过,用户来不及看清其内容。因此,当文件内容较大时,一般可用more等命令分屏显示,以免因屏幕滚动太快而无法看清。

more命令

功能:在终端屏幕按屏显示文本文件。

语法: more [ - 选项 ] 文件

说明: 该命令一次显示一屏文本,显示满之后,停下来,并在终端底部打印出- - More- - ,系统还将同时显示出已显示文本占全部文本的百分比,若要继续显示,按回车或空格键即可。

more命令中各个选项的含义为:

- p 显示下一屏之前先清屏。

- c 作用同- p基本一样。

- d 在每屏的底部显示更友好的提示信息:

- - More- - (XX%)[Press space to contiune , ‘q’ to quit . ]

而且若用户输入了-个错误命令则显示出错信息,而不是简单地鸣响终端。

- l 不处理< Ctrl+l >(换页符)。如果没有给出这个选项,则more命令在显示了一个包含有< Ctrl+l >字符的行后将暂停显示,并等待接收命令。

- s 文件中连续的空白行压缩成一个空白行显示。

执行中的命令

在more命令的执行过程中,用户可以使用more自己的一系列命令动态地根据需要来选择显示的部分。more在显示完一屏内容之后,将停下来等待用户输入某个命令。下表列出了more指令在执行中用到的一些常用命令,而有关这些命令的完整内容,可以在more执行时按h查看。这些命令的执行方法是先输入i(行数)的值,再打所要的命令,不然它会以预设值来执行命令。

i空格 若指定i,显示下面的i行;否则,显示下一整屏。

i回车 若指定i,显示下面的i行;否则,显示下一行。

iÙ D 按,若指定i,显示下面的i行;否则,往下显示半屏(一般为11行)。

id 同iÙ D 。

iz 同“i空格”类似,只是i将成为以下每个满屏的缺省行数。

is 跳过下面的i行再显示一个整屏。预设值为1。

if 跳过下面的i屏再显示一个整屏。预设值为1。

iÙ B 按,往回跳过(即向文件首回跳)i屏,再显示一个满屏。预设值为1。

b 与iÙ B相同。

’ 回到上次搜索的地方 

q或Q 退出more。

= 显示当前行号。

v 在当前行启动/usr/bin/vi对之进行编辑修改。

h 显示各命令的帮助信息。

i/pattern 查找匹配该模式的第i行。预设值为1。

in 查找符合表达式的倒数i行。预设值为1。

! 或 :! 在子shell中执行命令。

i:n 在命令行中指定了多个文件名的情况下,可用此命令使之显示第i个文件,若i过大(出界),则显示文件名列表中的最后一个文件。

i:p 在命令行中指定了多个文件名的情况下,可用此命令使之显示倒数第i个文件。若i过大(出界),则显示第一个文件。

i:f 显示当前文件的文件名和行数。

· 重复上次键人的命令。

例1:用分页的方式显示一个文件的内容。

$ more example1.c

/*-------------------------------------------*/

/* example1.c */

/*-------------------------------------------*/

/* author f opus.BBS@BBS.cs.nthu.edu.tw */

/* target f BBS main/login/top-menu routines */

/* create f 99/10/23 */

/* update f 99/12/15 */

/*-------------------------------------------*/

#define _MAIN_C_

#inc1ude < BBS. h >

jmp_buf byebye;

int talkrequest=NA;

static uschar Enter_uflag i

#ifdef SHOW_IDLE_TIME

--More- (3%)

 

例2:显示一个文件的内容,但显示之前先清屏,并且在显示器的最下方显示完整的百分比。

$ more - dc example1.c

执行该命令后,先清屏,然后显示文件example.c的内容。

/*-------------------------------------------*/

/* example1.c */

/*-------------------------------------------*/

/* author f opus.BBS@BBS.cs.nthu.edu.tw */

/* target f BBS main/login/top-menu routines */

/* create f 99/10/23 */

/* update f 99/12/15 */

/*-------------------------------------------*/

#define _MAIN_C_

#inc1ude < BBS. h >

jmp_buf byebye;

int talkrequest=NA;

static uschar Enter_uflag i

#ifdef SHOW_IDLE_TIME

char fromhost( );

--More- (3%)[Press space to continue , ‘q’ to quit .]

 

例3:显示一个文件的内容,要求每十行显示一次,且显示之前先清屏。

$ more - c - 10 example1.c

执行该命令后,先清屏,然后将以每十行每十行的方式显示文件example.c的内容。

/*-------------------------------------------*/

/* example1.c */

/*-------------------------------------------*/

/* author f opus.BBS@BBS.cs.nthu.edu.tw */

/* target f BBS main/login/top-menu routines */

/* create f 99/10/23 */

/* update f 99/12/15 */

/*-------------------------------------------*/

#define _MAIN_C_

inc1ude < BBS. h >

--More- (3%)

less命令

less命令的功能几乎和more命令一样,也是用来按页显示文件,不同之处在于less命令在显示文件时允许用户既可以向前又可以向后翻阅文件。

less命令的使用与more命令类似,在此就不赘述了,用户如有不清楚的地方可直接查看联机帮助。

用less命令显示文件时,若需要在文件中往前移动,按< b >键;要移动到用文件的百分比表示的某位置,则指定一个0到100之间的数,并按< p >即可。

例如,需要按页显示test文件

$ less test

 

head命令

如果用户希望查看一个文件究竟保存的是什么内容,可以只查看文件的头几行,而不必浏览整个文件。用head命令只显示文件或标准输入的头几行。

语法:head [- n ] 文件

功能:显示指定文件的前若干行。

说明:该命令显示每个指定文件的前面n行。如果没有给出n值,缺省设置为10。如果没有指定文件,head就从标准输入读取。例如显示文件example.c的前3行。

$ head - 3 example.c

/*-------------------------------------------*/

/* example1.c */

/*-------------------------------------------*/

 

tail命令

同样,如果用户想查看文件的尾部,可以使用tail命令。

语法:tail [+ / - num ] [参数] 文件

说明:该命令显示一个文件的指定内容。它把指定文件的指定显示范围内的内容显示在标准输出上。如果没有给定文件名,则使用标准输入文件。

tail命令中各个选项的含义为:

+num 从第num行以后开始显示。

- num 从距文件尾num行处开始显示。如果省略num参数,系统默认值为10。

l 以文本行为num的计数单位。与参数选项+num或- num选项同时使用时,num表示要显示的文本行行数。

c 以字节为num的计数单位。与参数选项+num或- num选项同时使用时,num表示要显示的字符数。

(l、c选项可以省略,系统默认值为l,即按行计数)。

例如:

$ tail -4 example

将显示文件example的最后4行。  

od命令

用户通常使用od命令查看特殊格式的文件内容。通过指定该命令的不同选项可以以十进制、八进制、十六进制和ASCII码来显示文件。

语法:od [选项] 文件…

命令中各选项的含义:

- A 指定地址基数,包括:

d 十进制

o 八进制(系统默认值)

x 十六进制

n 不打印位移值

- t 指定数据的显示格式,主要的参数有:

c ASCII字符或反斜杠序列

d 有符号十进制数

f 浮点数

o 八进制(系统默认值为02)

u 无符号十进制数

x 十六进制数

除了选项c以外的其他选项后面都可以跟一个十进制数n,指定每个显示值所包含的字节数。

说明:od命令系统默认的显示方式是八进制,这也是该命令的名称由来(Octal Dump)。但这不是最有用的显示方式,用ASCII码和十六进制组合的方式能提供更有价值的信息输出。

例如:

$ od - Ax - tcx1 wh5

000000 F i l e s y s t e m

46 69 6c 65 73 79 73 74 65 6d 20 20 20 20 20 20

000010 1 k - b l o c k s

20 20 20 20 20 31 6b 2d 62 6c 6f 63 6b 73 20 20

000020 U s e d A v a i l a b

20 20 20 20 55 73 65 64 20 41 76 61 69 6c 61 62

000030 l e U s e % M o u n t e d

6c 65 20 55 73 65 25 20 4d 6f 75 6e 74 65 64 20

000040 o n \n / d e v / h d a 8

6f 6e 0a 2f 64 65 76 2f 68 64 61 38 20 20 20 20

000050 3 0 4 4 4

20 20 20 20 20 20 20 20 20 20 20 33 30 34 34 34

000060 0 5 0 6 8 9 2

30 20 20 20 20 20 35 30 36 38 39 20 20 20 20 32

000070 3 8 0 2 8 1 8 % / \n / d e

33 38 30 32 38 20 20 31 38 25 20 2f 0a 2f 64 65

000080 v / h d a 9

76 2f 68 64 61 39 20 20 20 20 20 20 20 20 20 20

000090 5 4 6 3 6 9

20 20 20 20 20 35 34 36 33 36 39 20 20 20 20 20

0000a0 8 7 7 6 5 0 9 3 7 1

20 38 37 37 36 20 20 20 20 35 30 39 33 37 31 20

0000b0 2 % / h o m e \n \n \n

20 20 32 25 20 2f 68 6f 6d 65 0a 0a 0a

0000bd


2005-04-27 15:33
冰封谷主
Rank: 4
等 级:贵宾
威 望:10
帖 子:226
专家分:20
注 册:2005-1-7
收藏
得分:0 
第十课(二)文件内容查询命令    

  grep、fgrep和egrep命令

  这组命令以指定模式搜索文件,并通知用户在什么文件中搜索到与指定的模式匹配的字符串,并打印出所有包含该字符串的文本行,在该文本行的最前面是该行所在的文件名。grep命令一次只能搜索一个指定的模式;egrep命令检索扩展的正则表达式(包括表达式组和可选项);fgrep命令检索固定字符串,它不识别正则表达式,是快速搜索命令。

  这组命令在搜索与定位文件中特定的主题方面非常有用。要搜索的模式可以被认为是一些关键词,您可以用它们来搜索文件中包含的这些关键词。编写程序时,可以用它来寻找某一个函数,或是相关的词组。grep命令的搜索功能比fgrep强大,因为grep命令的搜索模式可以是正则表达式,而fgrep却不能。有关正则表达式请参见shell一章。

  该组命令中的每一个命令都有一组选项,利用这些选项可以改变其输出方式。例如,可以在搜索到的文本行上加入行号,或者只输出文本行的行号,或者输出所有与搜索模式不匹配的文本行,或只简单地输出已搜索到指定模式的文件名,并且可以指定在查找模式时忽略大小写。

  这组命令在指定的输入文件中查找与模式匹配的行。如果没有指定文件,则从标准输入中读取。正常情况下,每个匹配的行被显示到标准输出。如果要查找的文件是多个,则在每一行输出之前加上文件名。

  语法:

  grep [选项] [查找模式] [文件名1,文件名2,……]

  egrep [选项] [查找模式] [文件名1,文件名2,……]

  fgrep [选项] [查找模式] [文件名1,文件名2,……]

  这组命令各选项的含义为:

  - E 每个模式作为一个扩展的正则表达式对待。

  - F 每个模式作为一组固定字符串对待(以新行分隔),而不作为正则表达式。

  - b在输出的每一行前显示包含匹配字符串的行在文件中的字节偏移量。

  - c 只显示匹配行的数量。

  - i 比较时不区分大小写。

  - h 在查找多个文件时,指示grep不要将文件名加入到输出之前。

  - l 显示首次匹配串所在的文件名并用换行符将其隔开。当在某文件中多次出现匹配串时,不重复显示此文件名。

  - n 在输出前加上匹配串所在行的行号(文件首行行号为1)。

  - v 只显示不包含匹配串的行。

  - x 只显示整行严格匹配的行。

  - e expression 指定检索使用的模式。用于防止以“-”开头的模式被解释为命令选项。

  - f expfile 从expfile文件中获取要搜索的模式,一个模式占一行。

  对该组命令的使用还需注意以下方面:

  在命令后键入搜索的模式,再键入要搜索的文件。其中,文件名列表中也可以使用特殊字符,如“*”等,用来生成文件名列表。如果想在搜索的模式中包含有空格的字符串,可以用单引号把要搜索的模式括起来,用来表明搜索的模式是由包含空格的字符串组成。否则,Shell将把空格认为是命令行参数的定界符,而grep命令将把搜索模式中的单词解释为文件名列表中的一部分。在下面的例子中,grep命令在文件example中搜索模式“text file”。

  $ grep ’text file’ example

   用户可以在命令行上用Shell特殊字符来生成将要搜索的文件名列表。在下面的例子中,特殊字符“*”用来生成一个文件名列表,该列表包含当前目录下所有的文件。该命令将搜索出当前目录下所有文件中与模式匹配的行。

  $ grep data *

   特殊字符在搜索一组指定的文件时非常有用。例如,如果想搜索所有的C程序源文件中特定的模式,您可以用“*.c”来指定文件名列表。假设用户的 C程序中包含一些不必要的转向语句(goto语句),想要找到这些语句,可以用如下的命令来搜索并显示所有包含goto语句的代码行:

  $ grep goto *.c

  用户可以在命令行上键入搜索模式,也可以使用-f选项从指定文件中读取要搜索的模式。在文件中,每个搜索模式占一行。如果经常要搜索一组常见字符串时,这个功能非常有用。在下面的例子中,用户要在文件exam中搜索字符串“editor”和“create”,就把要搜索的模式放置在文件mypats中,然后,grep命令从文件mypats中读取要搜索的模式。

  $ cat mypats

  editor

  create

  $ grep -f mypats exam

  文件查找命令

  find命令

  功能:在目录结构中搜索文件,并执行指定的操作。此命令提供了相当多的查找条件,功能很强大。

  语法:find 起始目录 寻找条件 操作

  说明:find命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件并对之采取相关的操作。

  该命令提供的寻找条件可以是一个用逻辑运算符not、and、or组成的复合条件。逻辑运算符and、or、not的含义为:

  (1)and:逻辑与,在命令中用“-a”表示,是系统缺省的选项,表示只有当所给的条件都满足时,寻找条件才算满足。例如:

  $ find –name ’tmp’ –xtype c -user ’inin’

  该命令寻找三个给定条件都满足的所有文件。

  (2)or:逻辑或,在命令中用“-o”表示。该运算符表示只要所给的条件中有一个满足时,寻找条件就算满足。例如:

  $ find –name ’tmp’ –o –name ’mina*’     该命令查询文件名为’tmp’或是匹配’mina*’的所有文件。

  (3)not:逻辑非,在命令中用“!”表示。该运算符表示查找不满足所给条件的文件。例如:

  $ find ! –name ’tmp’

  该命令查询文件名不是’tmp’的所有文件。

  需要说明的是:当使用很多的逻辑选项时,可以用括号把这些选项括起来。为了避免Shell本身对括号引起误解,在话号前需要加转义字符“”来去除括号的意义。

  例:$ find (–name ’tmp’ –xtype c -user ’inin’ )

  寻找条件有以下选项:

  首先,下列各个选项中的n值可以有三种输入方式,假设n为20,则:

  +20 表示20以后(21,22,23等)

  -20 表示20以前(19,18,17等)

  20 表示正好是20

  1. 以名称和文件属性查找。

  - name ’字串’ 查找文件名匹配所给字串的所有文件,字串内可用通配符*、?、[ ]。

  - lname ’字串’ 查找文件名匹配所给字串的所有符号链接文件,字串内可用通配符*、?、[ ]。

  -gid n 查找属于ID号为n的用户组的所有文件。

  -uid n 查找属于ID号为n的用户的所有文件。

  -group ’字串’ 查找属于用户组名为所给字串的所有的文件。

  -user ’字串’ 查找属于用户名为所给字串的所有的文件。

  -empty 查找大小为0的目录或文件。

  -path ’字串’ 查找路径名匹配所给字串的所有文件,字串内可用通配符*、?、[ ]。

  -perm 权限 查找具有指定权限的文件和目录,权限的表示可以如711,644。

  -size n[bckw] 查找指定文件大小的文件,n后面的字符表示单位,缺省为b,代表512字节的块。

  -type x 查找类型为x的文件,x为下列字符之一:

  b 块设备文件

  c 字符设备文件

  d 目录文件

  p 命名管道(FIFO)

  f 普通文件

  l 符号链接文件(symbolic links)

  s socket文件

  -xtype x 与-type基本相同,但只查找符号链接文件。

  2. 以时间为条件查找

  - amin n 查找n分钟以前被访问过的所有文件。

  - atime n 查找n天以前被访问过的所有文件。

  - cmin n 查找n分钟以前文件状态被修改过的所有文件。

  - ctime n 查找n天以前文件状态被修改过的所有文件。

  - mmin n 查找n分钟以前文件内容被修改过的所有文件。

  - mtime n 查找n天以前文件内容被修改过的所有文件。

  3. 可执行的操作

  - exec 命令名称 {} 对符合条件的文件执行所给的Linux 命令,而不询问用户是否需要执行该命令。{}表示命令的参数即为所找到的文件;命令的末尾必须以“ ;”结束。

  - ok 命令名称 { } 对符合条件的文件执行所给的Linux 命令,与exec不同的是,它会询问用户是否需要执行该命令。

  - ls 详细列出所找到的所有文件。

  - fprintf 文件名 将找到的文件名写入指定文件。

  - print 在标准输出设备上显示查找出的文件名。

  - printf 格式 格式的写法请参考有关C语言的书。

  例1:查找当前目录中所有以main开头的文件,并显示这些文件的内容。

  $ find . - name ‘main*’ - exec more {} ;

  例2:删除当前目录下所有一周之内没有被访问过的a .out或*.o文件。

  $ find . (- name a.out - o - name ‘*.o’)

  > - atime +7 - exec rm {} ;

  说明如下:

  命令中的“.”表示当前目录,此时find将从当前目录开始,逐个在其子目录中查找满足后面指定条件的文件。(和)表示括号(),其中的“”称为转义符。之所以这样写是由于对Shell而言,(和)另有不同的含义,而不是这里的用于组合条件的用途。“- name a.out”是指要查找名为a.out的文件;“- name ‘*.o’”是指要查找所有名字以 .o结尾的文件。这两个- name之间的- o表示逻辑或(or),即查找名字为a.out或名字以 .o结尾的文件,find在当前目录及其子目录下找到这佯的文件之后,再进行判断,看其最后访问时间是否在7天以前(条件-atime +7),若是,则对该文件执行命令rm(- exec rm{ };)。其中{ }代表当前查到的符合条件的文件名,;则是语法所要求的。上述命令中第一行的最后一个是续行符。当命令太长而在一行写不下时,可输入一个,之后系统将显示一个>,指示用户继续输入命令。

  locate命令

  locate命令用于查找文件,它比find命令的搜索速度快,它需要一个数据库,这个数据库由每天的例行工作(crontab)程序来建立。当我们建立好这个数据库后,就可以方便地来搜寻所需文件了。

  该命令的一般形式为:

  locate 相关字

  例如:查找相关字issue

  $ locate issue

  /etc/issue

  /etc/issue.net

  /usr/man/man5/issue.5

  /usr/man/man5/issue.net.5

  第十课(三) 文本处理命令              

  Sort命令

  sort命令的功能是对文件中的各行进行排序。sort命令有许多非常实用的选项,这些选项最初是用来对数据库格式的文件内容进行各种排序操作的。实际上,sort命令可以被认为是一个非常强大的数据管理工具,用来管理内容类似数据库记录的文件。

  Sort命令将逐行对文件中的内容进行排序,如果两行的首字符相同,该命令将继续比较这两行的下一字符,如果还相同,将继续进行比较。

  语法:

  sort [选项] 文件

  说明:sort命令对指定文件中所有的行进行排序,并将结果显示在标准输出上。如不指定输入文件或使用“- ”,则表示排序内容来自标准输入。

  sort排序是根据从输入行抽取的一个或多个关键字进行比较来完成的。排序关键字定义了用来排序的最小的字符序列。缺省情况下以整行为关键字按ASCII字符顺序进行排序。

  改变缺省设置的选项主要有:

  - m 若给定文件已排好序,合并文件。

  - c 检查给定文件是否已排好序,如果它们没有都排好序,则打印一个出错信息,并以状态值1退出。

  - u 对排序后认为相同的行只留其中一行。

  - o 输出文件 将排序输出写到输出文件中而不是标准输出,如果输出文件是输入文件之一,sort先将该文件的内容写入一个临时文件,然后再排序和写输出结果。

  改变缺省排序规则的选项主要有:

  - d 按字典顺序排序,比较时仅字母、数字、空格和制表符有意义。

  - f 将小写字母与大写字母同等对待。

  - I 忽略非打印字符。

  - M 作为月份比较:“JAN”<“FEB”<¼ <“DEC”。

  - r 按逆序输出排序结果。

  +posl - pos2 指定一个或几个字段作为排序关键字,字段位置从posl开始,到pos2为止(包括posl,不包括pos2)。如不指定pos2,则关键字为从posl到行尾。字段和字符的位置从0开始。

  - b 在每行中寻找排序关键字时忽略前导的空白(空格和制表符)。

  - t separator 指定字符separator作为字段分隔符。

  下面通过几个例子来讲述sort的使用。

  用sort命令对text文件中各行排序后输出其结果。请注意,在原文件的第二、三行上的第一个单词完全相同,该命令将从它们的第二个单词vegetables与fruit的首字符处继续进行比较。

  $ cat text

  vegetable soup

  fresh vegetables

  fresh fruit

  lowfat milk

  $ sort text

  fresh fruit     fresh vegetables

  lowfat milk

  vegetable soup

  用户可以保存排序后的文件内容,或把排序后的文件内容输出至打印机。下例中用户把排序后的文件内容保存到名为result的文件中。

  $ sort text>result

  以第2个字段作为排序关键字对文件example的内容进行排序。

  $ sort +1-2 example

  对于file1和file2文件内容反向排序,结果放在outfile中,利用第2个字段的第一个字符作为排序关键字。

  $ sort -r -o outfile +1.0 -1.1 example

  sort排序常用于在管道中与其他命令连用,组合完成比较复杂的功能,如利用管道将当前工作目录中的文件送给sort进行排序,排序关键字是第6个至第8个字段。

  $ ls - l | sort +5 - 7

  sort命令也可以对标准输入进行操作。例如,如果您想把几个文件文本行合并,并对合并后的文本行进行排序,您可以首先用命令cat把多个文件合并,然后用管道操作把合并后的文本行输入给命令sort,sort命令将输出这些合并及排序后的文本行。在下面的例子中,文件veglist与文件fruitlist的文本行经过合并与排序后被保存到文件clist中。

  $ cat veglist fruitlist | sort > clist

  uniq命令

  文件经过处理后在它的输出文件中可能会出现重复的行。例如,使用cat命令将两个文件合并后,再使用sort命令进行排序,就可能出现重复行。这时可以使用uniq命令将这些重复行从输出文件中删除,只留下每条记录的唯一样本。

  语法:uniq [选项] 文件

  说明:这个命令读取输入文件,并比较相邻的行。在正常情况下,第二个及以后更多个重复行将被删去,行比较是根据所用字符集的排序序列进行的。该命令加工后的结果写到输出文件中。输入文件和输出文件必须不同。如果输入文件用“- ”表示,则从标准输入读取。

  该命令各选项含义如下:、

  - c 显示输出中,在每行行首加上本行在文件中出现的次数。它可取代- u和- d选项。

  - d 只显示重复行。

  - u 只显示文件中不重复的各行。

  - n 前n个字段与每个字段前的空白一起被忽略。一个字段是一个非空格、非制表符的字符串,彼此由制表符和空格隔开(字段从0开始编号)。

  +n 前n个字符被忽略,之前的字符被跳过(字符从0开始编号)。

  - f n 与- n相同,这里n是字段数。

  - s n 与+n相同,这里n是字符数。

  例如:

  1. 显示文件example中不重复的行。

  uniq - u example

  2. 显示文件example中不重复的行,从第2个字段的第2个字符开始做比较。

  uniq - u - 1 +1 example


2005-04-27 15:38
快速回复:Linux循序渐进(1) [转]
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033643 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved