1、UNIT 1UNIX 于 1969 年诞生在伟大的 Bell 实验室,是操作系统中的贵族,是软件领域中的常青树。Linux 是 UNIX 的 PC 克隆(clone ) ,实现了 UNIX 的全部功能。Linux 是一种类 UNIX 的操作系统,是 GNU(古努类 UNIX 的自由软件)发展中最著名的软件。1991 年,GNU 发烧友芬兰人林纳斯 托瓦兹 (Linus Torvalds)在赫尔辛基大学计算机系上学时出于个人爱好并参考 Minix(开放的 UNIX 的教学版本)用 C 语言奇迹般地编写出了一个与 UNIX 兼容的操作系统内核,取名为Linux(Linus 的 Unix) ,并遵循
2、 GPL 协议在因特网上发布。 Linux 一经发布便在网上广泛流传,立即引起了许多 GNU发烧友的极大兴趣,一些黑客们自发地加入了 Linux 的开发行列,形成了一个以林纳斯托瓦兹为首的 Linux 虚拟开发团队,Linux 被不断完善和成熟,不断有新的版本推出。Linux 内核版本有两种:稳定版和开发版。稳定版具有工业级的强度,可以被广泛地应用和部署,新的稳定版相对于较旧的只是修正一些 bug 或加入一些新的驱动程序。而开发版由于要试验各种解决方案,所以变化很快。这两种版本是相互关联,相互循环的。Linux 内核版本号的命名格式:num.num.num其中第一个数字是主版本号,第二个数字是
3、次版本号,第三个数字是修订次数,如果次版本号是偶数,那么该内核就是稳定版的,如 2.6.4:若次版本号是奇数,则是开发版的,如 2.5.1。最新版本是:2.6.28 Linux 内核的标志和吉祥物是一只名字叫做 Tux 的企鹅,这个穿着黑色燕尾服的可爱小家伙充分表达了自由软件事业无忧、无虑、无畏的态度。 Linux 内核是完全免费的,其官方网站是:www.kernel.org。人们常把 Linux 内核和 Linux 操作系统混为一谈。实际上,Linux 只是托瓦兹开发出的一个 OS 内核(kernel) ,其并不是一个完整的操作系统。内核是操作系统的心脏,完整的 Linux 操作系统还应该具
4、备以下构成要素:系统引导程序、Shell 、设备驱动程序等组件。这些组件由世界各地的不同组织或个人开发维护,其中绝大部分遵循 GPL 协议并以源代码的形式自由发布。正是由于 Linux 系统各部分中的绝大多数软件都是以源代码形式发布的,所以,安装和使用它们显得非常困难。尽管到今天为止仍有许多高手热衷于 LFS,尽情享受 DIY 的乐趣,可这要求较高的专业知识和丰富的 Linux 使用经验对于侧重于实际应用的大部分普通用户来说是无法胜任的。针对这种情况,Linux 产业中出现了一批专业的发行商,他们专门在因特网上搜集各种 Linux 的最新软件,连同他们自己开发的各种管理和应用软件,打包成易于安
5、装和使用的完整的 Linux 操作系统光盘以“成本价”出售,人们也可以登录他们的网站合法地下载这些光盘镜像或其中单独的文件。这种公开发行的版本被称为“Linux 发行版(Distribution ) ”,也就是我们通常习惯上所说的“Linux 操作系统 ”。Linux 发行版除了拥有 Linux 优秀的技术优势外,还具备安装简便、界面美观、易于配置和使用等诸多优点。各种不同的 Linux 发行版本之间无论是外观还是功能往往有不小的差别,适合不同的用户群,但它们的内核都是Linux。著名的 Linux 发行版如 Slackware、Redhat、Debian、SuSE 、Redflag 等等。
6、需要指出的是,Linux 发行版事实上不单纯是一个 Linux 操作系统,其中除了 Linux 操作系统外,还打包了众多的其他系统软件和应用软件,如 C/C+编译器、Java 编译器、文本编辑器、DBMS、Office 套件、因特网浏览器、E-mail 软件等等,甚至还提供了一些娱乐软件。所以说:Linux 发行版实际上提供了一个 Linux 操作系统开发环境。 操作系统是覆盖在“裸机”上的第一层软件,是计算机软件系统的核心,它管理计算机系统中所有的软、硬资源,有效地组织和控制程序的运行,是计算机系统中最关键的系统软件。Linux 系统(Linux 发行版)主要由 Linux 内核、Shell
7、(外壳)和应用程序三部分所构成。Linux 内核和 Shell 构成了 Linux 操作系统。Linux 系统的构成( 图自画)内核是 Linux 操作系统的核心,它负责所有系统资源的管理工作和程序运行控制工作。内核的五大基本功能是:进程和线程管理(处理器管理) ;内存管理;设备管理;文件管理;网络管理。Shell 是 Linux 操作系统的用户界面,提供了用户与内核进行交互操作的一种接口。Shell 是命令语言和命令解释器的统称。用户可使用 Shell 语言直接输入操作命令,也可以用 Shell 语言编制 Shell 程序(Shell 语言具有普通高级语言的控制流结构) 。Shell 解释器
8、接收并解释用户输入的 Shell 命令或 Shell 程序,再转给内核去执行,并将内核反馈的信息再次解释给用户。内核对应用程序和用户是“透明”的。Linux 的基本特点自由软件Linux 的内核及大多数组件都是 GPL 的,用户可以从因特网上自由下载和使用,进行二次开发。这大大激发了GNU 发烧友的热情和创造力。多用户多个用户(6 个)能同时从相同或不同的终端上使用同一个应用程序的副本进行工作,还允许远程用户联网登录,每个用户都可以构建自己独立的用户界面,互不影响。多任务Linux 是抢占式多任务操作系统,具有优异的内存和多任务管理能力。系统可同时执行数十个应用程序,各程序之间相互户独立,互不
9、妨碍。 设备独立性Linux 把外部设备统一当作文件来处理,用户可以像使用文件一样,操纵和使用各种外部设备。用户可以自行开发新的或特殊设备的驱动程序,并把它连接到内核或发行版本中,也可以通过修改内核源代码来实现。丰富的文件系统Linux 支持的文件系统很多,例如:EXT3、NFS 、FAT 、XFS 、ISO9660 、HPFT 、MSDOS 等等。强大的网络功能Linux 是在因特网基础上产生并发展起来的,因此完善的内置网络是 Linux 的一大特点,它较全面的实现了 PPP、 TCP/IP、 SLIP、PLIP 协议,功能强大,性能稳定。Linux 不仅可以作为网络工作站使用,更适于作为各
10、类网络服务器。 可靠的系统安全Linux 采取了许多安全技术措施,这为网络多用户环境中的用户提供了必要的安全保障。良好的可移植性(多平台)Linux 能在 X86 硬件平台上运行,也能平滑移植到其他平台。完整的开发平台Linux 支持一系列的开发工具,几乎所有的主流编程语言都已移植到 Linux 上,如C、C+、Java 、Ada、PHP、Fortran 等。Linux 的三大支柱(1) UNIX 操作系统UNIX 是操作系统领域中唯一的常青树,其重要性毋用置疑。1987 年由 Andrew S. Tanenbaum(坦鲍姆)教授开发完成了 Minix,它是 UNIX 的克隆系统,作为 Uni
11、x 的教学版。由于 MINIX 的出现并且提供源代码( 只能免费用于大学内),致使在全世界的大学中刮起了学习 UNIX 旋风。Linux 刚开始是参照 Minix 开发的,因此 Linux 就是 UNIX 的一种克隆系统,Linux 的兴盛很大程度上得益于UNIX 的光罩。(2) GNU 计划GNU 的 Open Source 和 Copyleft 大大促进了 Linux 的发展。开发 Linux 操作系统,以及 Linux 上所用大多数软件基本上都出自 GNU 计划。Linux 只是操作系统的一个内核,没有 GNU 软件环境(比如说 bash shell),则 Linux 将寸步难行。(3)
12、 因特网如果没有 Intenet,没有遍布全世界的无数 Linux 发烧友的无私奉献,那么 Linux 不可能走得这么远。从软件工程的角度看,Linux 有着一个庞大的遍布全世界的虚拟开发团队和测试团队(其中不乏真正的极客 Geek) ,使得它的健壮性和可靠性有着绝对的支撑力。 Linux 文件系统文件系统一是指操作系统内核中实施文件管理的程序集合,二是指文件在存储介质上的组织结构和存储格式。(这里主要是指后者)在 Linux 中,每个盘分区(主分区和逻辑分区)都是一个文件系统,都可有自己的目录树结构。Linux 的最重要特征之一就是其内核支持多种文件系统Ext2Ext2 是 GNU/Linu
13、x 系统中标准的文件系统,是专门为 Linux 设计的,拥有极快的速度和极小的 CPU 占用率。Ext2 既可以用于标准的块设备( 如硬盘),也被应用在软盘等移动存储设备上,其最大容量为 6384GB。2000 年以前 Ext2 是各种 Linux 发行版的默认文件系统。 Ext3Ext3 是 Ext2 的升级版,是一种日志式文件系统,也就是在保留了 Ext2 格式的同时再加上日志(Journal) 功能。Ext3 最大的特点是:它会将整个磁盘的写入动作完整的记录在磁盘的某个区域上,以便有需要时回溯追踪。当某个过程中断时,系统可以根据这些记录直接回溯并重整被中断的部分,重整速度相当快。Ext3
14、 是当前各种 Linux 发行版的默认文件系统。Linux swap它是 Linux 中一种专门用于交换分区的文件系统。Linux 是使用这一整个分区作为交换空间。一般这个 swap 格式的交换分区是内存容量的 2 倍。ISO9660ISO9660 是标准 CDROM 文件系统。VFATVFAT 叫长文件名系统,这是一个与 Windows 系统兼容的 Linux 文件系统,可以作为 Windows 与 Linux 交换文件的分区。Linux 目录结构Linux 系统是一个庞大的软件系统,包含有许许多多各种各样的文件,所有的文件被安置在一个统一的倒挂的目录树结构的存储空间中。 “目录”在 Win
15、dows 中称之为“文件夹”。Linux 系统安装完成后,会创建一些默认的系统目录,每个目录依照不同的用途放置特定的文件。下面是一些常用的目录。 根目录。该目录下包含 Linux 系统的所有目录和文件。/binbin 是 binary 的缩写。这个目录沿袭了 UNIX 系统的结构,存放着用户最经常使用的命令程序,它们常驻内存,类似于 DOS 的内部命令 。例如 cp、ls、cat 等等。/boot这里存放的是启动 Linux 时使用的引导程序等文件。/devdev 是 device(设备)的缩写。这个目录下是所有的设备文件,这些文件用于访问系统中所有不同类型的硬件。其功能类似 Windows
16、下的.vxd。在 Linux 中设备和文件是用同种方法访问的。/etc这个目录用来存放系统管理所需要的配置文件。/home所有普通用户的主目录。每个普通用户在该目录下建立一个自己的主目录。比如说有个用户叫 wang,那他的主目录就是/home/wang(也可以用wang 表示) 。/root根用户(即系统管理员超级用户)的主目录。/sbins 就是 Super User 的意思,也就是说这里存放的是超级用户使用的命令程序。/lib这个目录里存放着系统最基本的动态链接共享库,其作用类似于 Windows 里的.dll 文件。几乎所有的应用程序都需要用到这些共享库。/tmp存放程序运行时生成的临时
17、文件。/lost+found这个目录平时是空的,当系统不正常关机后,这里就成了一些无家可归的文件的避难所。/mnt临时文件系统的安装点。这个目录是空的,系统提供这个目录是让用户临时挂载别的文件系统。/var存放要经常动态改变大小的文件。系统的日志文件就在/var/log 目录下。/usr这是最庞大的一个目录,用户要用到的应用程序和文件几乎都存放在这个目录下。其中包含以下子目录;/usr/X11R6存放 X-Window 的目录; /usr/bin存放着许多应用程序;/usr/sbin给超级用户使用的一些管理程序就放在这里; /usr/doc这是 Linux 文档的大本营; /usr/inclu
18、deLinux 下开发和编译应用程序需要的头文件,在这里查找; /usr/lib存放一些常用的动态链接共享库和静态档案库; /usr/local这是提供给一般用户的/usr 目录,在这里安装软件最适合; /usr/manman 在 Linux 中是 help 的同义词,这里就是帮助文档的存放目录; /usr/srcLinux 开放的源代码就存在这个目录! =我是分割线=UNIT 2在 Linux 中设备与文件统一处理,设备被认作是特殊的文件设备文件,设备名的命名规则与数据文件的命名规则相同,所有的设备都“挂载”(mount)在系统目录“/dev”下。一台 PC 机一般最多可安装 3 块 IDE
19、 硬盘(通常只安装 1 块硬盘) 。而一台服务器则可安装十块以上的 SCSI 硬盘。Linux 对硬盘的命名规则为:IDE 硬盘: /dev/hda|b|cSCSI 硬盘: /dev/sda-z例如:/dev/hda 第一块 IDE 硬盘/dev/sdb 第二块 SCSI 硬盘 由于硬盘容量很大,为提高使用效率,硬盘在使用前要进行分区。硬盘分区主要分为主分区(Primary Partition)和扩展分区(Extension Partition)两种。主分区可以马上被使用,而扩展分区必须再分为若干逻辑分区后才能使用,即扩展分区必须进行二次分区。一块硬盘最多可以有 4 个主分区,其中一个主分区的
20、位置可以用一个扩展分区替换,且一块硬盘只能有一个扩展分区,在这个扩展分区内的逻辑分区数目没有限制。在 Windows 中每个主分区和逻辑分区对应一个盘符,用户可以使用盘符来访问特定分区上的文件和文件夹,每个分区上的文件夹结构都是独立的。Linux 对硬盘分区的命名与 Windows 完全不同。它是在硬盘名后面添加一个数字编号来表示分区,编号 14 为主分区号,逻辑分区编号从 5 开始。例如:/dev/hda1 是第 1 块 IDE 硬盘的第 1 个主分区;/dev/hda5 是第 1 块 IDE 硬盘的第 1 个逻辑分区;/dev/sdb1 是第 2 块 SCSI 硬盘的第 1 个主分区;/d
21、ev/sdb6 是第 2 块 SCSI 硬盘的第 2 个逻辑分区。分区告诉操作系统“在哪个区域里读写信息”,而文件系统则告诉操作系统“按哪种格式读写文件”。Linux 支持多种文件系统。Red Hat Linux 支持的两种基本文件系统是 ext3 和 swap。在安装 Linux 系统时,至少要创建一个 ext3 分区和一个 swap 分区。 ext3 是一种日志(Journal)式文件系统,是专为 Linux 设计的。其最大的特点是:它会将整个磁盘的写入动作完整的记录在磁盘的某个区域上,以便有需要时回溯追踪。当某个过程中断时,系统可以根据这些记录直接回溯并重整被中断的部分,重整速度相当快。
22、ext3 用于存放系统文件,是当前各种 Linux 发行版的默认文件系统。swap 是 Linux 中一种专门用于交换分区的文件系统。交换分区是 Unix 所采用的一种虚拟内存实现技术。Linux使用这一整个分区作为交换空间。一般,这个 swap 格式的交换分区是内存容量的 2 倍。各种 Linux 发行版一般都做成镜象(Mirror image)文件提供给用户。镜象是一种特定的文件形式,可以把一个软件系统中的许多文件集成为一个镜象文件。镜象是压缩文件,镜象中记录着每个文件的安装路径。当打开镜象时,可以快速地还原出一个完整的原系统来,就像照镜子一样精确。 镜象文件的应用范围比较广泛,常见的应用
23、就是用镜象来装系统以及进行数据备份。镜象文件的格式有iso、bin、img 、tao、dao 、fcd 等。镜像文件可以直接刻录到光盘上,也可以用 ghost、虚拟光驱等软件打开。 linux 主要有两种方法:光盘安装和虚拟机安装。所谓虚拟机(Virtual Machine)是指利用现有物理计算机固有的强大的计算处理能力,通过软件技术模拟出一台虚拟的计算机,就相当于在真正的物理计算机上再创造出一台计算机,这台计算机对使用者来说跟一台物理计算机没有什么区别,它有自己独立的操作系统以及该操作系统支持的各种软件,但它实际使用的是物理计算机的硬件资源,是物理计算机系统的一个应用程序。目前流行的虚拟机软
24、件有 VMware 和 Virtual PC通常情况下,需要创建三个分区:根分区、交换分区及引导分区。引导分区( /boot):存放 Linux 内核及一些启动的配置文件,只需 100MB 足够了,类型为 ext3。根分区( /):存放整个系统中除内核以外的所有文件。容量越大越好,一般不小于 5GB,类型为 ext3。交换分区:用于支持虚拟内存,类型为 swap。其大小一般为物理内存的 2 倍,如果运行大型系统,则需更大,例如安装和运行 Oracle 数据库,交换分区最小应为 1GB。=我是分割线=UNIT 3X Windows 是 Unix / Linux 系统支持的 GUI(图形用户界面)
25、系统。它不是 Unix / Linux 操作系统的组成部分,而是在它们上面运行的一个应用程序。X Windows 的开发目标是多用户网络环境的 GUI,它不仅要考虑每一个用户界面的元素及组合,还需要考虑多用户共用的资源。因此,它采用了 Client/Server(客户服务器)结构,也就是有一个服务器提供所有用户对图形设备资源的访问,各个用户通过客户端来使用系统图形资源。 GNOME 桌面环境的各种操作都通过图形界面组件来完成,主要的 3 个组件是:控制面板、桌面、文件管理器。=我是分割线=UNIT 4Linux 操作系统提供两种用户操作界面:一种是基于 X Windows 的图形用户界面(如
26、GNOME 和 KDE 桌面环境) ;另一种是基于 Shell 的文本(非图形)用户界面,也称 Shell 界面或命令行界面。Shell 是 Linux 重要的组成部分,也是学习 Linux 必不可少的一部分。对于 Linux 用户来讲,深入了解和熟练掌握Shell 的特性和使用方法是用好 Linux 系统的关键。可以说, Shell 使用的熟练程度反映了用户对 Linux 使用的熟练程度。 Shell 的原意是外壳,用来形容物体外部的架构。Linux 的 Shell 作为操作系统的外壳,为用户提供了使用操作系统的界面,它是命令语言程序设计语言语言解释器的统称,负责用户与操作系统内核之间的沟通
27、。首先,Shell 是一种功能丰富的交互式命令语言,它提供有几十条基本的控制台操作命令(如 bash 提供有 40 条基本命令) 。所谓交互式,就是用户从键盘每输入一条命令,就可以立即得到 Shell 解释器 的响应,Shell 解释器解释用户输入的 Shell 命令然后传送给内核执行,并把内核反馈的结果信息经解释后显示在屏幕上。 Shell 交互界面非常简单,它通常包含提示用户输入命令行的提示符,并且以回车键结束命令行。其次,Shell 也是一种非交互式的解释型编程语言。它具有编程语言的语法,可定义变量,执行赋值等;并提供了通常高级编程语言所具有的控制流结构(包括循环和分支) 。用户可使用
28、Shell 语言编写出具有复杂算法的 Shell 脚本(script)程序,从本质上讲,Shell script 是将若干Shell 命令行按某种算法组合到一个文件中。Shell 解释器可连续解释执行 Shell 脚本,在执行过程中 Shell 解释器通常与用户不进行交互,直到该脚本执行完再输出结果信息。 Bourne Again Shell (bash):bash 是大多数 Linux 系统(包括 Red Hat Linux)的默认 Shell。它是 Bourne Shell 的扩展,并且与 Bourne Shell 完全向后兼容,而且在 Bourne Shell 的基础上增加和增强了很多特
29、性,提供有 40 条基本命令。本课程采用的是 bash。进入 Linux 的 Shell 界面有两种基本方式:直接进入方式和间接进入方式。直接进入方式:在安装系统时选择文本界面(text mode) ,则在系统启动时直接进入 Shell 界面;间接进入方式:在安装系统时选择图形界面(graphics mode) ,系统启动后进入的是图形桌面环境,再在桌面环境中切换进 Shell 界面。 虚拟控制台(黑屏)是 Linux 提供的多用户并发使用系统的方式,它提供的是文本式 Shell 界面。默认情况下,Linux 有 6 个虚拟控制台,分别名为 tty1tty6。如果在安装系统时选择的是文本界面模
30、式,则系统启动时默认进入 Shell 界面的虚拟控制台。在图形桌面环境下,超级用户(root)可以通过编辑/etc/inittab 文件,把系统启动后的初始界面改为虚拟控制台。方法如下:在主菜单中选择 【附件 】【文本编辑器】 ,弹出文本编辑器窗口;打开/etc/inittab 文件;找到语句 “id:5:initdefault: ”,将该语句中的 5 改为 3。用户注销及关机也都是在 Shell 提示符下直接进行。注销命令是:logout /当前账号注销关机命令是:shutdown -h now /立刻关机shutdown -r now /重新启动计算机reboot /重新启动计算机进入 S
31、hell 界面后,用户可在 Shell 提示符(串)后输入各种 Shell 命令。Shell 提示符的格式为:用户登录名主机名 当前目录名用户类例如:rootfylRHL9 etc#zhangsanfylRHL9 zhangsan$其中, “#”表示超级用户, “$”表示普通用户。Shell 命令行的一般格式为:命令名 选项 参数(1)命令行中的字母严格区分大小写。命令名由小写英文字母组成,往往是表示相应功能的英文单词或单词的缩写。例如,date 表示日期,cp 是 copy 的缩写。(2)方括号括起的部分表明该项是可缺省的。(3)选项是对命令的特别定义,用单个英文字母表示,并以减号(- )引
32、导,多个选项可以只用一个减号引导。如du -k-c du -kc 。 (4)参数提供命令运行的信息或者是命令执行过程中所使用的文件名。(5)在命令名和选项及参数之间必须用空格或 Tab 键隔开。Shell 具有命令自动补全功能,对某些记不清楚的命令或命令过长的情况很有用。对于能唯一确定的命令,输入该命令的前若干字符。然后按下键盘上的 Tab 键,就可以自动补全该命令的剩余部分。【例 1】要输入 hostname 命令来查看当前主机的名称,可以输入 hostn 后按下 Tab 键,这时 Shell 会自动在后面补全为 hostname。【例 3】如果输入的命令前缀不能唯一标识某个命令时,则按下
33、Tab 键时,系统将发出警告声,再按下 Tab 键时,系统会给出可用来补全的命令清单。如,当输入 host 时,第一次按 Tab 键时系统发出警告声,再按 Tab 键时,系统会给出所有以 host 开头的命令,如下所示:$ hosthost hostid hostname hoststatShell 命令允许使用通配符作为特殊结构的字符串模式。下面是常用的通配符。* 星号用于匹配任意多个字符。例如,要查找当前目录中所有扩展名为.doc 的文件,可以使用如下命令:ls *.doc? 问号用于匹配单个字符。例如,要显示/bin 目录下所有文件名为三个字符的文件,可使用如下命令:ls /bin/?
34、X-X 用于匹配字符范围。例如,要列出当前目录中所有名字中包含有数字字符的文件,可以使用如下命令:ls *0-9*输入重定向符“”的作用是把命令(或执行程序)的标准输出重新定向到指定文件,而不再在屏幕上显示其输出。输出重定向的一般形式是: 命令文件名【例 6】一个简单的例子是:$ls l /bintmp管道是由符号“”分隔的若干命令组成的序列。在管道中,每个命令执行时都有一个独立的进程,前一个命令的输出是下一个命令的输入。而管道中有一类命令也称作“过滤器”,过滤器首先读取输入,然后将该输入以某种简单方式进行变换(相当于过滤) ,再将处理结果输出,例如 grep、tail、sort 和 wc 等
35、命令都属于过滤器。使用管道可以在一个命令行中完成复杂的任务,显示在屏幕上的是管道中最后一个命令的输出。 【例 7】 ls |grep m?.c|wc -l该管道输出当前目录中文件名是以 m 打头,后随一个字符的所有 C 源程序文件的数目。使用 man 命令每个 Shell 命令都有一份称为 man 的联机帮助信息。如果觉得 help 帮助信息不够详细,可以使用 man 命令来查看任何命令的联机帮助信息,只要将需要查询的命令名作为 man 命令的参数即可。如$man cat把所有用户划分为三种身份:文件主( user) 、同组用户( group) 、其他用户( other) 。文件主即文件的创建
36、者,对本文件具有最大的存取权限。每种用户对一个文件可拥有读、写和执行的权限。r(read ,读)权限:对普通文件而言,指用户可打开并读取文件的内容;对目录而言,指用户可浏览目录的内容;对 I/O 设备而言,则指用户可使用设备进行数据的输入。w(write,写)权限:对普通文件而言,指用户可修改文件的内容;对目录而言,指用户可删除或移动目录内的文件;对 I/O 设备而言,则指用户可使用设备进行数据的输出。x(execute,执行):对普通文件而言,指用户可执行该文件;对目录而言,指用户可进入该目录。用 3 组每组 3 个共 9 个二进制位(bit)表示文件的存取控制方式,依次是:文件主存取控制方
37、式、同组用户存取控制方式、其他用户存取控制方式。每组中的顺序依次是:读、写、执行。例如,某文件的存取控制方式设置为:111101100 (对应的八进制数表示为 754 )表示文件主对该文件可读、可写、可执行;同组用户可读、可执行;其他用户只可读。用字符形式表示上述文件存取控制方式,就是rwxr-xr-vi 编辑器是世界第一黑客Richard M.Stallman 开发的vi 是 visual interface 的缩写,是 Unix 和 Linux 中最有名的文本编辑器,几乎所有的 Linux 系统都将它作为默认的文本编辑器,是 Linux 开发人员必须掌握是一个基本工具(考试和面试必考内容!
38、) 。vi 可以执行输入、删除、查找、替换、块操作等各种文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑器所没有的。但是 vi 不是一个排版软件,它不像 Word 或 WPS 那样可以对字体、格式、段落等属性进行编排,它只是一个文本编辑器(相当于 windows 中的笔记本) 。vi 有三种基本工作模式:命令模式、文本输入模式和末行模式。1. 命令模式这是进入 vi 编辑器时的默认工作模式。在该模式下用户可以输入各种合法的 vi 编辑命令,此时从键盘上输入的任何字符都被当作编辑命令来解释。需注意的是,命令模式的命令是隐式命令,即所输入的命令并不在屏幕上显示出来,若输入的字符不是合
39、法的 vi 命令,vi 会响铃提示用户。 2. 文本输入模式在该模式下,用户输入的任何字符都被 vi 当作文件内容保存起来,并将其显示在屏幕上。3. 末行模式该模式用于查找、替换、退出、定位光标及保存文件等。末行命令是显式命令, “:”(冒号)作为末行命令的提示符,在其后输入命令,并按回车键结束。末行命令执行完后,vi 自动回到命令模式。 三种模式之间的切换:命令模式 文本输入模式,键入命令 a 或 i。文本输入模式 命令模式,按 Esc 键。命令模式 末行模式,键入冒号。 启动 vi 编辑器在 Shell 提示符后输入:vi 文件名如果所输入的文件名已经存在,vi 自动打开此文件编辑,否则将
40、建立一个新文件;然后进入 Vi 窗口。例如,建立并编辑一个新文件 test1.c,命令可如下:$vi test1.c执行该命令,将弹出 Vi 窗口(图)各行开头都有一个波浪号,表示该行为空行。进入 vi 后就处于命令模式,等待用户输入命令。进入文本输入模式要输入数据,用户可使用以下三种方法进入输入模式:(1)添加(append )命令a :从光标所在位置后面开始输入新文本,光标后的文本随新增文本向后移动。A :从光标所在行的行尾开始输入新的文本。(2)插入(insert)命令i :从光标所在位置后面开始插入新文本,光标后的文本随新增文本向后移动。I :从光标所在行的行首开始插入新的文本。打开(
41、open)命令o :在光标所在行之下新增一行并进入输入模式。O :在光标所在行之上新增一行并进入输入模式。 保存文件并退出 vi在编辑完文件准备退出 vi 返回到 Shell 时,先按 ESC 键,再输入冒号进入末行模式,然后可使用 w 命令、q 命令或 wq 命令。(1)w 命令w :vi 保存当前所编辑的文件,但并不退出,而是继续等待用户输入命令。w 新文件名 :相当于 “另存为”,即把当前文件的内容保存到指定的文件中,而原有文件保持不变。 q 命令q :退出 vi 返回到 Shell,此时会在末行显示提示信息:“E37:已修改但尚未保存(可用!强制执行) ”。vi 等待用户继续输入命令。
42、q! :放弃所作修改直接退回到 Shell。(3)wq 命令wq :保存文件,然后退出 vi 返回到 Shell 。这是最常用的命令。步骤:1. 输入命令 vi hello.cpp /进入 vi,编辑 hello.cpp2. 输入 vi 命令 i /进入插入模式3. 编辑源程序,如includeint main()prinf(“Hello, world!n”);return 0;4. 输入 :wq /保存并退出 vi 输入 gcc hello.cpp/编译并连接,在当前目录下生成可执行程序文件/a.out (默认)或输入 gcc o my1 hello.cpp/编译并连接,生成可执行程序文件
43、my1(自指定)输入 ./a.out /运行 a.out或输入 ./my1 /运行 my1=我是分割线=UNIT 5cd 命令功能:改变当前目录,使指定目录成为当前目录。语法:cd 目录路径名该命令有三种典型的使用方法:cd /移到父目录cd / 返回到本用户的主目录cd 目录路径名 /切换到指定目录为了能够进入指定的目录,用户必须拥有对指定目录的执行和读权限。例:studentRHLinux9 student$cd /用户进入根目录studentRHLinux9 / $cd var/进入根目录下的 var 子目录studentRHLinux9 var$cd tux/进入目录/var/tuxb
44、ash:cd: /var/tux: 权限不够studentRHLinux9 var$cd /usr/src/进入目录/usr/var/dbstudentRHLinux9 src$cd /返回到上一级目录(父目录)studentRHLinux9 usr$cd studentRHLinux9 student$/返回到自己的主目录,相当于 cdstudentRHLinux9 student$cd usr/srcstudentRHLinux9 src$cd / studentRHLinux9 /$/返回到父目录的父目录ls 命令功能:列出指定目录下的文件和子目录清单语法:ls 选项 目录路径名若缺省目
45、录名,则表示当前目录。常用的选项及其含义如下:-l:以长格式来显示文件的详细信息。这个选项最常用。-a :显示指定目录下的所有子目录和文件,包括隐藏文件。-c :按文件的修改时间排序。-i:在输出的第一列显示文件的 i 节点号。Unix 和 Linux 把文件控制块(FCB)称为 i 节点(索引节点) 。-F:在每个文件或目录后面加上一个标记,用来表示文件或目录的类型。其中,标记“/”表示目录, “*”表示可执行文件, “”表示符号链接文件, “|”表示管道或 FIFO, “=”表示 socket 文件,没有任何标记表示普通文件。-R:递归式地显示指定目录下各级子目录中的文件和目录。第 1 栏
46、为文件的类型(1 个符号)和用户的存取权限(9 个符号) ,共 10 个符号。文件类型符号:d: 目录:普通文件l : 链接文件b: 块设备文件,如磁盘c: 字符设备文件,如打印机 第 2 栏为该文件的链接个数 第 3 栏为文件所有者的用户名 第 4 栏为用户所在的用户组 第 5 栏为文件的大小。对于设备文件,显示的是主、次设备号。 第 6 栏为创建或最后修改的日期与时间 第 7 栏为文件或目录的名称。对于符号链接文件,显示的文件名后面有-和被链接的文件路径名。pwd 命令功能:显示当前目录的绝对路径语法:pwd【例 5.3】studentRHLinux9 pub$pwd/var/ftp/pu
47、b mkdir 命令功能:建立新目录或目录结构语法:makdir 选项 新目录名 1 新目录名 2 常用的选项及其含义:-m:对新建目录设置存取权限-p:新目录名可以是一个路径名。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。例:studentRHLinux9 student$mkdir dir1 /在当前目录下建立一个子目录studentRHLinux9 student$mkdir dir2 dir3 /建立两个并行的子目录studentRHLinux9 student$mkdir -p music/pop/建立子目录 music 及其下一级目录 poprmdir 命令功能:从指定目录中删除一个或多个空的子目录。语法:rmdir 选项 目录名 1 目录名 2 常用的选项及其含义:-p:递归删除目录,当子目录删除后其父目录为空时,也一并被删除。【说明】该命令不能删除当前目录。目录被删除前应该是空目录。例:$rmdir dir1 /删除子目录 dir1$rmdir music /rmdir: music: 目录非空$rmdir -p music/pop /递归删除 pop 目录和 music 目录touch 命令功能:建立文件及更新文件建立的日期与时