鸟哥的Linux私房菜——基础学习篇(第三版) (1-7章)

第1章 计算机概论

  1. CPU的种类

    CPU主要分为两类:精简指令集RISC和复杂指令集CISC。

    对于精简指令集,常见系列有Sun公司的SPARC系列,IBM公司的PowerPC系列,和ARM系列

    复杂指令集主要有AMD,Intel 和VIA的x86系列的CPU

第3章 主机规划与磁盘分区

1. 磁盘介绍

整颗磁盘的第一个扇区特别重要,它记录了两个重要的信息:

(1) MBR (master boot record) 主要启动记录区: 可以安装开机管理程序的地方, 有446bytes

(2) 分区表 (partition table): 记录整个磁盘的分区状态, 有64bytes

MBR非常重要, 系统在开机的时候要主动读取这个分区的内容, 这样才知道如何引导开机

2. 磁盘分区表

在分区表所在的64 bytes 容量中,总共分为四组记录区,每组记录区记录了该区段的启始不结束的磁柱号码。 若将硬盘以长条形来看,然后将磁柱以柱形图来看,那么那64 bytes 的记录区段有点像底下图示:

鸟哥的Linux私房菜——基础学习篇(第三版) (1-7章)_第1张图片

假设上面的硬盘装置文件名为/dev/hda 时,在linux中得到的装置文件名称如下:

 P1:/dev/hda1

 P2:/dev/hda2

 P3:/dev/hda3

 P4:/dev/hda4

由于分区表就只有64 bytes 而已,最多只能容纳四笔分区的记录, 这四个分区的记录被称为主要(Primary)或扩展(Extended)分区槽。 根据上面的图示与说明,我们可以得到几个重点信息:

 (1) 其实所谓的『分区』只是针对那个64 bytes 的分区表进行设定而已!

 (2) 硬盘默认的分区表仅能写入四组分区信息

 (3) 这四组分区信息我们称为主要 (Primary) 或扩展 (Extended) 分区槽

 (4) 分区槽的最小单位为磁柱 (cylinder)

 (5) 当系统要写入磁盘时,一定会参考磁盘分区表,才能针对某个分区槽进行数据的处理

 

3. 磁盘分区的好处

(1) 数据的安全性

(2) 系统的效率考虑

由二分区槽将数据集中在某个磁柱的区段,例如上图当中第一个分区槽位二磁柱号码 1~100号,如此一来当有数据要读取自该分区槽时, 磁盘只会搜寻前面1~100的磁柱范围,由于数据集中了,将有利于数据读取的速度与效能!所以说,分区是很重要的!

4. 扩展分区

 

如果要多于4个分区可以使用扩展分区,将扩展分区进行划分. 上面提到的4个分区可以划为主分区或扩展分区

鸟哥的Linux私房菜——基础学习篇(第三版) (1-7章)_第2张图片

在上图当中,我们知道硬盘的四个分区记录区仅使用到两个,P1为主要分区,而 P2则为扩展分区。

请注意, 扩展分区的目的是使用额外的扇区来记录分区信息,扩展分区本身并不能被拿来格式化。 然

后我们可以透过扩展分区所指向的那个区块继续作分区的记录。

同样的,上述的分区槽在Linux系统中的装置文件名分别如下:

 P1:/dev/hda1

 P2:/dev/hda2

 L1:/dev/hda5

 L2:/dev/hda6

 L3:/dev/hda7

 L4:/dev/hda8

 L5:/dev/hda9

 

关于分区终结如下:

主要分区、扩展分区与逻辑分区的特性我们作个简单的终结如下:

(1) 主要分区与扩展分区最多可以有四笔(硬盘的限制)

(2) 扩展分区最多只能有一个 (操作系统的限制)

(3) 逻辑分区是由扩展分区持续切割出来的分区槽;

(4) 能够被格式化后,作为数据存取的分区槽为主要分区与逻辑分区。扩展分区无法格式化;

(5) 逻辑分区的数量依操作系统而不同,在Linux 系统中,IDE硬盘最多有59个逻辑分区 (5号到63号), SATA 硬盘则有11个逻辑分区(5 号到15 号)。

 

5. 开机流程与主要启动记录区 (MBR)

简单的说,整个开机流程到操作系统之前的动作应该是这样的:

(1). BIOS:开机主动执行的韧体,会认识第一个可开机的装置;

BIOS会去分析计算机里面有哪些储存设备,我们以硬盘为例,BIOS会依据使用者的设定去取得能够开机的硬盘,并且到该硬盘里面去读取第一个扇区的 MBR 位置。 MBR 这个仅有446 bytes 的硬盘容量里面会放置最基本的开机管理程序, 此时 BIOS 就功成圆满,而接下来就是MBR 内的开机管理程序的工作了。

(2). MBR:第一个可开机装置的第一个扇区内的主要启动记录区块,内含开机管理程序;

(3). 开机管理程序 (boot loader) :一支可读取核心档案来执行的软件;

这个开机管理程序的目的是在加载(load)核心档案, 由于开机管理程序是操作系统在安装的时候所提供的, 所以他会认识硬盘内的文件系统格式,因此就能够读取核心档案, 然后接下来就是核心档案的工作, 开机就完成了.

(4). 核心档案:开始操作系统的功能...

 

由上面的说明我们会知道,BIOS 与MBR 都是硬件本身会支持的功能,至于Boot loader则是操作系统安装在MBR 上面的一套软件了。由于 MBR 仅有 446 bytes 而已,因此这个开机管理程序是非常小而美的。 这个boot loader的主要仸务有底下这些项目:

(1) 提供选单:用户可以选择不同的开机项目,这也是多重引导的重要功能!

(2) 载入核心档案:直接指向可开机的程序区段来开始操作系统;

(3) 转交其他loader:将开机管理功能转交给其他 loader 负责。

开机管理程序除可以安装在MBR中外,还可以安装在其他分区的启动扇区。

6. 双系统引导

我们举一个例子来说,假设你的个人计算机只有一个硬盘,里面切成四个分割槽,其中第一、二分割槽分别安装了Windows 及Linux, 你要如何在开机的时候选择用Windows 还是Linux开机呢?假设MBR 内安装的是可同时认识Windows/Linux操作系统的开机管理程序, 那么整个流程可以图标如下:

鸟哥的Linux私房菜——基础学习篇(第三版) (1-7章)_第3张图片

在上图中我们可以发现,MBR 的开机管理程序提供两个选单,选单一(M1)可以直接加载Windows 的核心档案来开机; 选单二(M2)则是将开机管理工作交给第二个分割槽的启动扇区(boot sector)。当使用者在开机的时候选择选单二时, 那么整个开机管理工作就会交给第二分割槽的开机管理程序了。 当第二个开机管理程序启动后,该开机管理程序内(上图中)仅有一个开机选单,因此就能够使用Linux的核心档案来开机啰。 这就是多重引导的工作情况啦!我们将上图作个总结:

 (1) 每个分割槽都拥有自己的启动扇区 (boot sector)

(2) 图中的系统槽为第一及第二分割槽,

(3) 实际可开机的核心档案是放置到各分割槽内的

(4) Loader只会认识自己的系统槽内的可开机核心档案,以及其他 loader而已;

(5) Loader可直接指向或者是间接将管理权转交给另一个管理程序。

为什么人家常常说:『如果要安装多重引导, 最好先安装Windows 再安装Linux』呢?这是因为:

 (1) Linux在安装的时候,你可以选择将开机管理程序安装在 MBR 或各别分割槽的启动扇区, 而且Linux的loader可以手动设定选单 (就是上图的 M1, M2...) ,所以你可以在 Linux 的boot loader里面加入Windows 开机的选项;

 (2) Windows 在安装的时候,他的安装程序会主动的覆盖掉 MBR 以及自己所在分割槽的启动扇区,你没有选择的机会, 而且他没有让我们自己选择选单的功能。

因此,如果先安装Linux再安装 Windows 的话,那 MBR 的开机管理程序就只会有Windows 的项目,而不会有Linux的项目 (因为原本在MBR 内的 Linux的开机管理程序就会被覆盖掉)。 那需要重新安装Linux 一次吗?当然不需要,你只要用尽各种方法来处理 MBR 的内容即可。 例如利用全中文的spfdisk(http://spfdisk.sourceforge.net/)软件来安装认识Windows/Linux 的管理程序, 也能够利用Linux的救援模式来挽救 MBR 即可。

 

鸟哥的Linux私房菜——基础学习篇(第三版) (1-7章)_第4张图片

 

第4章 安装CentOS

1. 磁盘分区

如同前面谈到的,磁盘分区是整个安装过程里面最重要的部分了。CentOS默认给了我们四种分割模式,分别为:

(1) 移除所选磁盘上的所有分割区,并建立默认分割模式: 如果选择这种模式,linux会将硬盘里面的分割全部被删除后, 以安装程序的默认方式重新建立分割槽

(2) 移除所选磁盘上的 Linux 分割区,并建立默认的分割模式: 在这个硬盘内,只有Linux 的分割槽会被删除,然后再以安装程序的默认方式重新建立分割槽。

(3) 使用所选取磁盘上的未使用空间,建立默认的分割模式: 如果你的这颗硬盘内还有未被分割的磁柱空间 (注意,是未被分割,而不是该分割槽内没有数据的意思!), 那么使用这个项目后,他不会更改原有的分割槽,只会就剩余的未分割区块进行预设分割的建置。

(4) 建立自定义的分割模式

 

2. 文件系统的选择

 

这几种文件系统类型分别是:

(1) Ext2/ext3:是Linux 适用的文件系统类型。由于 ext3 文件系统多了日志的记录, 对于系统的复原比较快速,因此建议你务必要选择新的 ext3 不要用ext2 了。

(2) Physical volume (LVM) :这是用来弹性调整文件系统容量的一种机制, 可以让你的文件系统容量变大或变小而不改变原有的档案数据内容!

(3) Software RAID:利用Linux操作系统的特性,用软件仿真出磁盘阵列的功能!

(4) Swap:就是内存置换空间!由于swap 并不会使用到目录树的挂载, 所以用swap 就不需要指定挂载点!

在传统的 Linux说明文件当中特别有指定到『swap 最好为物理内存的 1.5 到2倍之间』。swap置换空间是很重要的, 因为他可以避免因为物理内存不足而造成的系统效能低落的问题。但是如果你的物理内存有 4GB以上时, 老实说,swap也可以不必额外设定.

swap 内存置换空间的功能是:当有数据被存放在物理内存里面,但是这些数据又不是常被CPU所取用时, 那么这些不常被使用的程序将会被丢到硬盘的 swap 置换空间当中, 而将速度较快的物理内存空间释放出来给真正需要的程序使用! 所以,如果你的系统不很忙,而内存又很大,自然不需要 swap啰。

(5) Vfat:同时被Linux 与Windows 所支持的文件系统类型。 如果你的主机硬盘内同时存在Windows与Linux操作系统,为了数据的交换,确实可以建置一个 vfat 的文件系统!

 

3. SELinux

它是Security Enhanced Linux的缩写,这个软件是由美国国家安全局(National Security Agency, NAS)所开发的,这东西并不是防火墙喔!SELinux 是一个Linux系统讵问控制 (Access control) 的细部设定, 重点在于控制程序对于系统档案的讵问权限限制。由于 CentOS 5.x 以后的Linux版本对于SELinux的设定已经非常的妥当了, 因此建议您务必要打开这个功能!

4. Kdump

Kdump 就是,当核心出现错误的时候, 是否要将当时的内存内的讯息写到档案中,而这个档案就能够给核心开发者研究为啥会宕机之用。 我们并不是核心开发者,而且内存内的数据实在太大了,因此常常进行 Kdump 会造成硬盘空间的浪费。 所以,这里建议不要启动Kdump 的功能!

 

5. 双系统的安装

 

新主机仅有一颗硬盘

如果你的系统是新的,并且想要安装多重操作系统时,那么这个多重操作系统的安装将显的很简单啊! 假设以目前主流的 160GB 硬盘作为规划好了,而你想要有WindowsXP, WindowsXP的数据碟, Linux, swap 及一个共享分割槽, 那我们首先来规划一下硬盘分割吧!如果是这样的需求,那你可以这样规划:

鸟哥的Linux私房菜——基础学习篇(第三版) (1-7章)_第5张图片

安装一定要先装WindowsX 再装Linux才好!

  1. 安装Windows XP

    在这个阶段依旧使用Windows XP光盘开机来安装,安装到了分割时,记得依照上述表格的规划制作出两个主要分割槽, 并且将文件系统格式化为 NTFS,然后再将Windows XP装到 C 槽当中。理论上,此时仅有/dev/sda1, /dev/sda2 而已喔!

  2. 安装CentOS 5.x

    再来则是安装Linux,安装时要注意的地方也是在分割的地方,请回到前一小节的磁盘分区部分来进行分割设定。另外一个要注意的地方则是在开机管理程序的地方, 尤其是『默认开机』项目,是默认要Windows 还是Linux开机呢?这需要你的选择喔!而且 grub 务必要安装到MBR 上头。

  3. 后续维护的注意事项

    多重引导设定完毕后请特别注意, (1)Windows 的环境中最好将Linux的根目录与 swap取消挂载,否则未来你打开档案总管时, 该软件会要求你『格式化!』如果一个不留神,你的 Linux系统就毁了。 (2) 你的Linux不可以随便的删除! 因为grub 会去读取Linux根目录下的/boot/目录内容,如果你将 Linux移除了,你的Windows 也就无法开机了! 因为整个开机选单都会不见喔!

     

     

第5章 首次登陆与在线帮助

鸟哥的Linux私房菜——基础学习篇(第三版) (1-7章)_第6张图片

1. 关机/重新启动相关的指令

谈一谈几个与关机/重新启动相关的指令:

(1) 将数据同步写入硬盘中的指令: sync

 (2) 惯用的关机指令: shutdown

 (3) 重新启动,关机: reboot, halt, poweroff

鸟哥的Linux私房菜——基础学习篇(第三版) (1-7章)_第7张图片

鸟哥的Linux私房菜——基础学习篇(第三版) (1-7章)_第8张图片

鸟哥的Linux私房菜——基础学习篇(第三版) (1-7章)_第9张图片

2.切换执行等级: init

本章上头有谈到过关于 run level 的问题。之前谈到的是系统运作的模式,分为纯文本(run level 3)及图形接口模式(run level 5)。除了这两种模式外,有没有其他模式呢?其实 Linux 共有七种执行等级, 七种等级的意义我们在后面会再谈到。本章你只要知道底下四种执行等级就好了:

 run level 0:关机

 run level 3:纯文本模式

 run level 5:含有图形接口模式

 run level 6:重新启动

那如何切换各模式呢?可以使用 init 这个指令来处理喔!也就是说,如果你想要关机的话, 除了上述的 shutdown -h now 以及poweroff 之外,你也可以使用如下的指令来关机:

[root@www ~]# init 0

3. 保护硬盘

硬盘该如何预防发生文件系统错误的问题呢?

 (1) 妥善保养硬盘:

例如:主机通电之后部要搬动,避免移动或震动硬盘;尽量降低硬盘的温度,可以加装风扇来冷却硬盘; 或者可以换装 SCSI 硬盘。

 (2) 划分不同的partition:

为什么磁盘分区这么重要!因为Linux每个目录被读写的频率不同,妥善的分割将会让我们的Linux更安全! 通常我们会建议划分下列的磁盘区块:

o /

o /boot

o /usr

o /home

o /var

这样划分有些好处,例如/var是系统默认的一些数据暂存或者是 cache数据的储存目录, 像 e-mail 就含在这里面。如果还有使用 proxy 时,因为常常存取,所以有可能会造成磁盘损坏, 而当这部份的磁盘损坏时,由于其他的地方是没问题的,因此资料得以保存,而且在处理时也比较容易!

 

第六章、Linux 的档案权限与目录配置

鸟哥的Linux私房菜——基础学习篇(第三版) (1-7章)_第10张图片

鸟哥的Linux私房菜——基础学习篇(第三版) (1-7章)_第11张图片

1. 权限设置

 chgrp :改变档案所属群组

 chown :改变档案拥有者

 chmod :改变档案的权限, SUID, SGID, SBIT 等等的特性

 

事实上,chown 也可以使用『chown user.group file』,亦即在拥有者与群组间加上小数点『.』也行! 不过很多朋友在设定账号时,喜欢在账号当中加入小数点(例如vbird.tsai这样的账号格式),这就会造成系统的误判了! 所以我们比较建议使用冒号『:』来隔开拥有者与群组啦!此外,chown 也能单纯的修改所属群组呢! 例如『chown .sshd install.log』就是修改群组~看到了吗?就是那个小数点的用途!

2.  权限对档案的重要性

鸟哥的Linux私房菜——基础学习篇(第三版) (1-7章)_第12张图片

3.  权限对目录的重要性

鸟哥的Linux私房菜——基础学习篇(第三版) (1-7章)_第13张图片

Linux下的档案类型:一般文件(regular file)-,目录(directory)d,链接文件(link)l,设备文件(device)【区块设备b和字符设备c】,接口文件(socket)s,数据传输文件(pipe)p

4. Linux目录配置的依据—FHS

因为利用 Linux来开发产品或 distributions的社群/公司与个人实在太多了, 如果每个人都用自己的想法来配置档案放置的目录,那么将可能造成很多管理上的困扰。 你能想象,你进入一个企业之后,所接触到的 Linux目录配置方法竟然跟你以前学的完全不同吗? 所以,后来就有所谓的Filesystem Hierarchy Standard (FHS)标准!

根据 FHS(http://www.pathname.com/fhs/)的官方文件指出, 他们的主要目的是希望让使用者可以了解到已安装软件通常放置于那个目录下, 所以他们希望独立的软件开发商、操作系统制作者、以及想要维护系统的用户,都能够遵循 FHS的标准。 也就是说,FHS的重点在于规范每个特定的目录下应该要放置什么样子的数据而已。 这样做好处非常多,因为 Linux操作系统就能够在既有的面貌下(目录架构不变)发展出开发者想要的独特风格。

事实上,FHS是根据过去的经验一直再持续的改版的,FHS依据文件系统使用的频繁与否与是否允许使用者随意更动, 而将目录定义成为四种交互作用的形态,用表格来说有点像底下这样:

鸟哥的Linux私房菜——基础学习篇(第三版) (1-7章)_第14张图片

上表中的目录就是一些代表性的目录,该目录底下所放置的数据在底下会谈到,这里先略过不谈。 我们要了解的是,什么是那四个类型?

 可分享的:可以分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据, 是能够分享给网络上其他主机挂载用的目录;

 不可分享的:自己机器上面运作的装置档案或者是与程序有关的 socket 档案等, 由于仅与自身机器有关,所以当然就不适合分享给其他主机了。

 不变的:有些数据是不会经常变动的,跟随着 distribution 而不变动。 例如函式库、文件说明文件、系统管理员所管理的主机服务配置文件等等;

 可变动的:经常改变的数据,例如登录文件、一般用户可自行收受的新闻组等。

事实上,FHS针对目录树架构仅定义出三层目录底下应该放置什么数据而已,分别是底下这三个目录的定义:

 / (root, 根目录):与开机系统有关;

 /usr (unix software resource):与软件安装/执行有关;

 /var (variable):与系统运作过程有关。

为什举要定义出这三层目录呢?其实是有意义的喔!每层目录底下所应该要放置的目录也都又特定的规定!

 5. 根目录 (/) 的意义与内容:

根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的, 同时根目录也与开机/还原/系统修复等动作有关。 由于系统开机时需要特定的开机软件、核心档案、开机所需程序、 函式库等等档案数据,若系统出现错误时,根目录也必须要包含有能够修复文件系统的程序才行。 因为根目录是这么的重要,所以在 FHS的要求方面,他希望根目录不要放在非常大的分割槽内, 因为越大的分割槽妳会放入越多的数据,如此一来根目录所在分割槽就可能会有较多发生错误的机会。

因此 FHS标准建议:根目录(/)所在分割槽应该越小越好, 且应用程序所安装的软件最好不要与根目录放在同一个分割槽内,保持根目录越小越好。 如此不但效能较佳,根目录所在的文件系统也较不容易发生问题。

有鉴于上述的说明,因此 FHS定义出根目录(/)底下应该要有底下这些次目录的存在才好:

鸟哥的Linux私房菜——基础学习篇(第三版) (1-7章)_第15张图片

鸟哥的Linux私房菜——基础学习篇(第三版) (1-7章)_第16张图片

鸟哥的Linux私房菜——基础学习篇(第三版) (1-7章)_第17张图片

除了这些目录的内容之外,另外要注意的是,因为根目录与开机有关,开机过程中仅有根目录会被挂载, 其他分割槽则是在开机完成之后才会持续的进行挂载的行为。就是因为如此,因此根目录下与开机过程有关的目录, 就不能够与根目录放到不同的分割槽去!那哪些目录不可与根目录分开呢?有底下这些:

 /etc:配置文件

 /bin:重要执行档

 /dev:所需要的装置档案

 /lib:执行档所需的函式库与核心所需的模块

 /sbin:重要的系统执行文件

这五个目录千万不可与根目录分开在不同的分割槽!

 

6.  /usr 的意义与内容

依据 FHS的基本定义,/usr里面放置的数据属于可分享的与不可变动的(shareable, static), 如果你知道如何透过网络进行分割槽的挂载(例如在朋务器篇会谈到的 NFS朋务器),那么/usr 确实可以分享给局域网络内的其他主机来使用喔!

很多读者都会误会/usr 为user 的缩写,其实usr 是Unix Software Resource 的缩写, 也就是『Unix操作系统软件资源』所放置的目录,而不是用户的数据啦! FHS 建议所有软件开发者,应该将他们的数据合理的分别放置到这个目录下的次目录,而不要自行建立该软件自己独立的目录。 因为是所有系统默认的软件(distribution发布者提供的软件)都会放置到/usr底下,因此这个目录有点类似Windows 系统的『C:\Windows\ + C:\Program files\』这两个目录的综合体,系统刚安装完毕时,这个目录会占用最多的硬盘容量。 一般来说,/usr的次目录建议有底下这些:

鸟哥的Linux私房菜——基础学习篇(第三版) (1-7章)_第18张图片

7.  /var 的意义与内容:

如果/usr 是安装时会占用较大硬盘容量的目录,那么/var就是在系统运作后才会渐渐占用硬盘容量的目录。 因为/var 目录主要针对常态性变动的档案,包括快取(cache)、登录档(log file)以及某些软件运作所产生的档案, 包括程序档案(lock file, run file),或者例如MySQL 数据库的档案等等。常见的次目录有:

鸟哥的Linux私房菜——基础学习篇(第三版) (1-7章)_第19张图片

 

 针对FHS,各家distributions的异同由于 FHS仅是定义出最上层(/)及次层(/usr, /var)的目录内容应该要放置的档案与目录数据, 因此,在其他次目录层级内,就可以随开发者自行来配置了。举例来说,CentOS的网络设定数据放在 /etc/sysconfig/network-scripts/ 目录下,但是 SuSE 则是将网络放置在 /etc/sysconfig/network/ 目录下,目录名称可是不同的呢!不过只要记住大致的 FHS标准,差异性其实有限啦!

8. 目录树(directory tree)

另外,在 Linux底下,所有的档案与目录都是由根目录开始的!那是所有目录与档案的源头~ 然后再一个一个的分支下来,有点像是树枝状. 因此,我们也称这种目录配置方式为:『目录树(directory tree)』 这个目录树有什么特性呢?他主要的特性有:

  • 目录树的起始点为根目录 (/, root);
  • 每一个目录不止能使用本地端的 partition 的文件系统,也可以使用网络上的 filesystem 。举例来说, 可以利用 Network File System (NFS) 服务器挂载某特定目录等。
  • 每一个档案在此目录树中的文件名(包含完整路径)都是独一无二的。

如果我们将整个目录树以图标的方法来显示,并且将较为重要的档案数据列出来的话,那么目录树架构有点像这样:

鸟哥的Linux私房菜——基础学习篇(第三版) (1-7章)_第20张图片

根据 FHS 的定义,最好能够将/var 独立出来, 这样对于系统的数据还有一些安全性的保护!因为至少/var 死掉时,你的根目录还会活着! 还能够进入救援模式!

分区建议:

/boot

/:

/var:

/usr:

/home:

 

第7章 档案与目录管理

1. ls命令参数解析

鸟哥的Linux私房菜——基础学习篇(第三版) (1-7章)_第21张图片

 

2. 取得路径的文件名与目录名称

我们前面介绍的完整文件名 (包含目录名称与文件名) 当中提到,完整档名最长可以到达 4096 个字符。 那么你怎么知道那个是档名?那个是目录名?就是利用斜线 (/) 来分辨! 其实,取得文件名或者是目录名称,一般的用途应该是在写程序的时候,用来判断之用的~ 所以,这部分的指令可以用在第三篇内的 shell scripts 里头喔! 底下我们简单的以几个范例来谈一谈 basename 与 dirname 的用途!

鸟哥的Linux私房菜——基础学习篇(第三版) (1-7章)_第22张图片

3. 档案内容查阅:

如果我们要查阅一个档案的内容时,该如何是好呢?这里有相当多有趣的指令可以来分享一下: 最常使用的显示档案内容的指令可以说是 cat 与 more 及 less 了!此外,如果我们要查看一个很大型的档案 (好几百MB时),但是我们只需要后端的几行字而已,那么该如何是好?呵呵!用 tail 呀,此外, tac 这个指令也可以达到!好了,说说各个指令的用途吧!

 cat 由第一行开始显示档案内容

 tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!

 nl 显示的时候,顺道输出行号!

 more 一页一页的显示档案内容

 less 与 more 类似,但是比 more 更好的是,他可以往前翻页!

 head 只看头几行

 tail 只看尾巳几行

 od 以二进制的方式读取档案内容!

 

4. 修改档案时间或建置新档: touch

我们在 ls 这个指令的介绍时,有稍微提到每个档案在 linux底下都会记录讲多的时间参数, 其实是有三个主要的变动时间,那么三个时间的意义是什么呢?

  • modification time (mtime):

    当该档案的『内容数据』变更时,就会更新这个时间!内容数据指的是档案的内容,而不是档案的属性或权限喔!

  • status time (ctime):

    当该档案的『状态 (status)』改变时,就会更新这个时间,举例来说,像是权限与属性被更改了,都会更新这个时间啊。

  • access time (atime):

    当『该档案的内容被取用』时,就会更新这个读取时间 (access)。举例来说,我们使用 cat 去读取 /etc/man.config , 就会更新该档案的 atime 了。

 

 

鸟哥的Linux私房菜——基础学习篇(第三版) (1-7章)_第23张图片

5. umask用法

 

在默认权限的属性上,目录与档案是不一样的。从第六章我们知道 x 权限对于目录是非常重要的! 但是一般档案的建立则不应该有执行的权限,因为一般档案通常是用在于数据的记录嘛!当然不需要执行的权限了。 因此,预设的情况如下:

  • 若使用者建立为『档案』则预设『没有可执行( x )权限』,亦即只有 rw 这两个项目, 也就是最大为 666 分,预设权限如下: -rw-rw-rw-
  • 若用户建立为『目录』,则由于 x 与是否可以进入此目录有关,因此默认为所有权限均开放, 亦即为 777 分,预设权限如下: drwxrwxrwx

要注意的是,umask 指的是『该默认值需要减掉的权限!』如果以上面的例子来说明的话,因为 umask 为 022 ,所以 user 并没有被拿掉任何权限,不过 group 与others 的权限被拿掉了 2 (也就是 w 这个权限),那么当使用者:

 建立档案时:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r--

 建立目录时:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x

6. find指令

find 的特殊功能就是能够进行额外的动作(action)。我们将范例八的例子以图解来说明如下:

鸟哥的Linux私房菜——基础学习篇(第三版) (1-7章)_第24张图片

鸟哥的Linux私房菜——基础学习篇(第三版) (1-7章)_第25张图片鸟哥的Linux私房菜——基础学习篇(第三版) (1-7章)_第26张图片

转载地址:http://www.cnblogs.com/xkfz007/archive/2012/03/02/2377843.html

你可能感兴趣的:(linux,shell)