veket官方网站论坛

veket

 找回密码
 要注册
搜索
楼主: gfbmgy

linux文件管理

[复制链接]
 楼主| 发表于 2010-4-24 15:42 | 显示全部楼层
  13.comm命令

  如果想对两个有序的文件进行比较,可以使用comm命令。

  语法:comm [- 123 ] file1 file2

  说明:该命令是对两个已经排好序的文件进行比较。其中file1和file2是已排序的文件。comm读取这两个文件,然后生成3列输出:仅在file1中出现的行;仅在file2中出现的行;在两个文件中都存在的行。如果文件名用“-”,则表示从标准输入读取。

  选项1, 2或3抑制相应的列显示。例如comm - 12就只显示在两个文件中都存在的行;comm - 23只显示在第一个文件中出现而未在第二个文件中出现的行;comm - 123则什么也不显示。
 楼主| 发表于 2010-4-24 15:42 | 显示全部楼层
  14.diff命令

  该命令的功能为逐行比较两个文字文件,列出其不同之处。它比comm命令完成更复杂的检查。它对给出的文件进行系统的检查,并显示出两个文件中所有不同的行,不要求事先对文件进行排序。

  语法:diff [选项] file1 file2

  说明:该命令告诉用户,为了使两个文件file1和file2一致,需要修改它们的哪些行。如果用“-”表示file1或fiie2,则表示标准输入。如果file1或file2是目录,那么diff将使用该目录中的同名文件进行比较。例如:

  diff /usr/xu mine

  把目录/usr/xu 中名为mine的文件与当前目录中的mine文件进行比较。

  通常输出由下述形式的行组成:

  n1 a n3, n4

  n1, n2 d n3

  n1, n2 c n3, n4

  这些行类似ed命令把filel转换成file2。字母(a, d和c)之前的行号(n1, n2)是针对file1的,其后面的行号(n3, n4)是针对file2的。字母a, d和c分别表示附加、删除和修改操作。

  在上述形式的每一行的后面跟随受到影响的若干行,以“<”打头的行属于第一个文件,以“>”打头的行属于第二个文件。

  diff能区别块和字符设备文件以及FIFO(管道文件),不会把它们与普通文件进行比较。

  如果file1和file2都是目录,则diff会产生很多信息。如果一个目录中只有一个文件,则产生一条信息,指出该目录路径名和其中的文件名。

  diff各选项的含义如下:

  - b 忽略行尾的空格,而字串中的一个或多个空白字符都视为相等。

  - c 采用上下文输出格式(提供三行上下文)。

  - C n 采用上下文输出格式(提供n行上下文)。

  - e 产生一个合法的ed脚本作为输出。

  - r 当file1和file2是目录时,递归作用到各文件和目录上。
 楼主| 发表于 2010-4-24 15:42 | 显示全部楼层

文件系统

  文件系统指文件存在的物理空间,Linux系统中每个分区都是一个文件系统,都有自己的目录层次结构。Linux会将这些分属不同分区的、单独的文件系统按一定的方式形成一个系统的,总的目录层次结构。一个操作系统的运行离不开对文件的操作,因此必然要拥有并维护自己的文件系统。

  Linux文件系统使用索引节点来记录文件信息,作用像Windows的文件分配表。

  索引节点是一个结构,它包含了一个文件的长度、创建及修改时间、许可权、所属关系、磁盘中的位置等信息。一个文件系统维护了一个索引节点的阵列,每个文件或目录都与索引节点阵列中的惟一一个元素对应。系统给每个索引节点分配了一个号码,也就是该节点在阵列中的索引号,称为索引节点号。

  Linux文件系统将文件索引节点号和文件名同时保存在目录中。所以,目录只是将文件的名称和它的索引节点号结合在一起的一张表,目录中每一对文件名称和索引节点号称为一个连接。

  对于一个文件来说,有惟一的索引节点号与之对应,而对于一个索引节点号,却可以有多个文件名与之对应。因此,在磁盘上的同一个文件可以通过不同的路径去访问它。

  可以用ln命令对一个已经存在的文件再创建一个新的连接,而不复制文件的内容。

  连接有软连接和硬连接之分,软连接又叫符号连接。它们各自的特点如下。

  硬连接:

  (1)原文件名和链接文件名都指向相同的物理位址。

  (2)目录不能有硬连接;硬连接不能跨越文件系统(不能跨越不同的分区)。

  (3)文件在磁盘中只有一个复制,以节省硬盘空间。

  (4)由于删除文件要在同一个索引节点属于惟一的连接时才能成功,因此可以防止不必要的误删除。

  符号连接:

  (1)用ln -s命令创建文件的符号连接;

  (2)符号连接是Linux特殊文件的一种,作为一个文件,它的资料是它所连接的文件的路径名。类似于Windows下的快捷方式。

  (3)可以删除原有的文件而保存链接文件,没有防止误删除功能。

  装载文件系统

  由上一节知道,Linux系统中每个分区都是一个文件系统,都有自己的目录层次结构。Linux会将这些分属不同分区的、单独的文件系统按一定的方式形成一个系统的总的目录层次结构。这里所说的“按一定方式”就是指的装载。

  将一个文件系统的顶层目录挂到另一个文件系统的子目录上,使它们成为一个整体,称为装载。把该子目录称为挂接点。

  注意:挂接点必须是一个目录。

  一个分区装载在一个已存在的目录上,这个目录可以不为空,但装载后这个目录下以前的内容将不可用。

  对于其他操作系统创建的文件系统的装载也是这样。但是需要理解的是,光盘、软盘、其他操作系统使用的文件系统的格式与Linux使用的文件系统格式是不一样的。光盘是ISO9660;软盘是FAT16或ext2;Windows NT是FAT16, NTFS, Windows 98是FAT16, FAT32;Windows 2000和Windows XP是FAT16, FAT32, NTFS。装载前要了解Linux是否支持所要装载的文件系统格式。

  装载时使用mount命令。格式:mount [-参数] [设备名称] [挂接点]

  其中常用的参数有:

  -t<文件系统类型> 指定设备的文件系统类型,常见的有:

  minix Linux 最早使用的文件系统;

  ext2 Linux 目前常用的文件系统;

  msdos MS-DOS的FAT,就是FAT16;

  vfat Windows 98常用的FAT32;

  nfs 网络文件系统;

  iso9660 CD-ROM光盘标准文件系统;

  ntfs Windows NT/2000的文件系统;

  hpfs OS/2文件系统;

  auto 自动检测文件系统。

  -o<选项> 指定装载文件系统时的选项,有些也可用在/etc/fstab中。常用的有:

  codepage=XXX 内码表;

  iocharset=XXX 字符集;

  ro 以只读方式装载;

  rw 以读写方式装载;

  nouser 使一般用户无法装载;

  user 可以让一般用户装载设备。

  提醒一下,mount命令没有创建挂接点的功能,因此您应该确保执行mount命令时,挂接点已经存在。(即你要把文件系统装载到哪,首先要先建立这个目录。)

  例:Windows 98装在hda1分区,同时电脑上还有软盘和光盘需要装载。

  # mk /mnt/winc

  # mk /mnt/floppy

  # mk /mnt/cdrom

  # mount -t vfat /dev/hda1 /mnt/winc

  # mount -t msdos /dev/fd0 /mnt/floppy

  # mount -t iso9660 /dev/cdrom /mnt/cdrom

  现在就可以进入/mnt/winc等目录读写这些文件系统了。

  要保证最后两行的命令不出错,就要确保软驱和光驱里有盘。

  如果你的Windows 98目录里有中文文件名,使用上面的命令装载后,显示的是一堆乱码。这就要用到 -o 参数里的codepage iocharset选项。codepage指定文件系统的内码表,简体中文代码是936;iocharset指定字符集,简体中文一般用cp936或 gb2312。

  当装载的文件系统Linux不支持时,mount一定会报错,如Windows 2000的NTFS文件系统。可以重新编译Linux内核以获得对该文件系统的支持。
 楼主| 发表于 2010-4-24 15:43 | 显示全部楼层
  自动装载

  每次开机访问Windows分区都要运行mount命令,这显然太烦琐。为什么访问其他的Linux分区不用使用mount命令呢?

  其实,每次开机时,Linux自动将需要装载的Linux分区装载上了。那么我们是不是可以设置让Linux在启动的时候也装载我们希望装载的分区,如Windows分区,以实现文件系统的自动装载呢?

  这是完全可以的。在/etc目录下有个fstab文件,它里面列出了Linux开机时自动装载的文件系统的列表。比如 /etc/fstab文件如下:

  /dev/hda2 / ext3 defaults 1 1

  /dev/hda1 /boot ext3 defaults 1 2

  none /dev/pts devpts gid=5,mode=620 0 0

  none /proc proc defaults 0 0

  none /dev/shm tmpfs defaults 0 0

  /dev/hda3 swap swap defaults 0 0

  /dev/cdrom /mnt/cdrom iso9660 noauto,codepage=936,iocharset=gb2312 0 0

  /dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0

  /dev/hdb1 /mnt/winc vfat defaults,codepage=936,iocharset=cp936 0 0

  /dev/hda5 /mnt/wind vfat defaults,codepage=936,iocharset=cp936 0 0

  在/etc/fstab文件里,第1列是装载的文件系统的设备名,第2列是挂接点,第3列是装载的文件系统类型,第4列是装载的选项,选项间用逗号分隔。

  最后两行是我手工添加的Windows下的C, D盘,加了codepage=936和ocharset=cp936参数以支持中文文件名。参数defaults实际上包含了一组默认参数:

  rw 以可读写模式装载;

  suid 开启用户 ID和用户组ID设置位;

  dev 可解读文件系统上的字符或块设备;

  exec 可执行二进位文件;

  auto 自动装载;

  nouser 使一般用户无法装载;

  async 以非同步方式执行文件系统的输入输出操作。

  大家可以看到,在这个列表里,光驱和软驱是不自动装载的,参数设置为noauto。(如果你非要设成自动装载,您要确保每次开机时你的光驱和软驱里都要有光盘或软盘。)
 楼主| 发表于 2010-4-24 15:43 | 显示全部楼层

高级文件系统管理

   磁盘与文件结构

  文件结构是文件存放在磁盘等存储设备上的组织方法,主要体现在对文件和目录的组织上。目录提供了管理文件的一个方便而有效的途径。我们能够从一个目录切换到另一个目录,而且可以设置目录和文件的许可权,设置文件的共用程度。

  使用Linux,用户可以设置目录和文件的许可权,以便允许或拒绝其他人对其进行访问。Linux目录采用多级树形结构,用户可以浏览整个系统,可以进入任何一个已授权进入的目录,访问那里的文件。

  文件结构的相互关联性使共用资料变得容易,几个用户可以访问同一个文件。 Linux 是一个多用户系统,操作系统本身的驻留程序存放在以根目录开始的专用目录中,有时被指定为系统目录。

  内核、Shell和文件结构一起形成了基本的操作系统结构。它们使得用户可以运行程序、管理文件以及使用系统。此外,Linux操作系统还有许多被称为实用工具的程序,可以辅助用户完成一些特定的任务。
您需要登录后才可以回帖 登录 | 要注册

本版积分规则

QQ|手机版|Archiver|veket官方网站论坛 ( 粤ICP备 11052856 )

GMT+8, 2024-5-5 05:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表