第三章 UNIX 的文件与目录

63
第第第 UNIX 第第第第第第

description

第三章 UNIX 的文件与目录. 一、 文件的概念. 计算机中的所有信息保存在文件中。 如:通知、程序、文本 文件是 : 数据集合 字符流,或称为字节流 操作系统不对文件进行任何结构化 在 UNIX 系统中,文件是字节序列. 二、文件类型. 普通文件 文本数据或代码数据 没有内部的格式 目录文件 将所有内容组织成一个表 目录内文件名的列表 特殊文件 代表系统中的设备,在 /dev 目录中. 三、路径名. 由斜杠 / 分隔的由目录名组成的一个序列,它指示找到一个文件所必须经历的目录。 - PowerPoint PPT Presentation

Transcript of 第三章 UNIX 的文件与目录

Page 1: 第三章   UNIX 的文件与目录

第三章 UNIX 的文件与目录

Page 2: 第三章   UNIX 的文件与目录

一、 文件的概念

• 计算机中的所有信息保存在文件中。• 如:通知、程序、文本• 文件是:• 数据集合• 字符流,或称为字节流• 操作系统不对文件进行任何结构

化• 在 UNIX 系统中,文件是字节序列

Page 3: 第三章   UNIX 的文件与目录

二、文件类型

• 普通文件• 文本数据或代码数据• 没有内部的格式• 目录文件• 将所有内容组织成一个表• 目录内文件名的列表• 特殊文件• 代表系统中的设备,在 /dev 目录中

Page 4: 第三章   UNIX 的文件与目录

三、路径名

• 由斜杠 / 分隔的由目录名组成的一个序列,它指示找到一个文件所必须经历的目录。

• 两种类型:• 全路径(绝对路径):由根目录 / 开始• 相对路径:由当前目录开始

Page 5: 第三章   UNIX 的文件与目录

路径名举例

. 表示当前目录; . . 表示上级(父)目录例: (参看 p43, 图 4-2 )当前目录是 /home/team01

/home/team01/doc/mon_report

doc/mon_report

. ./tea m03/pgms/suba

./test1

Page 6: 第三章   UNIX 的文件与目录

四、与目录相关的命令

• pwd

• cd

• mkdir

• rmdir

• ls

Page 7: 第三章   UNIX 的文件与目录

工作目录

• 在 UNIX 系统中,用户总处于某个目录中。正在工作的这个目录叫工作目录或当前目录。

Page 8: 第三章   UNIX 的文件与目录

1 、显示工作目录 PWD

• 列出正在工作的目录 (Print Working Directory)pwd 命令,用于显示你当前所处的目录名

• pwd 命令总是返回你当前所处的目录的完全路径名。

• 登录完成后,显示用户主目录的路径名

Page 9: 第三章   UNIX 的文件与目录

PWD 命令

• 图例:显示的是用户主目录的路径名。

• /home/a1 是用户的主目录路径名,也是用户当前工作目录的路径名。从 / 开始,是一个绝对路径名,表示从根目录开始直到用户主目录的路径。

• a1 是登录名和用户主目录名

Page 10: 第三章   UNIX 的文件与目录

定位工作目录中的文件

• 工作目录是 a1 ,若显示有文件 myfirst 和一个名为 source 的目录,其中有一个文件。 a1 目录中的文件 myfirst 的路径名是/usr/a1/myfirst ,这是文件的绝对路径名。如果在工作目录中,不需要用完整的路径名指示,而只需要文件名(这里是 myfirst )就足够了。

Page 11: 第三章   UNIX 的文件与目录

定位其他目录中的文件

• 当文件不在工作目录时,需要指定文件所在的目录。

• 例如,工作目录是 usr 。用户 source 目录中的文件 first.c 的路径名为: a1/source/first.c 。

Page 12: 第三章   UNIX 的文件与目录

2 、改变当前目录 change diretcor

• 格式: $cd dir_name

• 作用:从一个目录改变到另一个目录。• $cd 不带任何参数时,将把你送回自己

的用户主目录中。(即用户登录时自动进入的第一个目录)

• $cd .. 将把你向上送至当前目录的父目录中。

Page 13: 第三章   UNIX 的文件与目录

改变当前目录 change diretcor

• 返回用户主目录:如果目录有许多层,而当前目录处在目录结构中比较深的位置时,不用输入太多字符就可以回到用户主目录会非常方便。用户可以用 $HOME (保存用户主目录路径名的变量)作为 cd 命令的目录名。或者仅输入 cd ,然后按回车键,默认回到用户主目录。

Page 14: 第三章   UNIX 的文件与目录

举例: ( 参见 p43)

• $cd home

• $cd doc

• $cd

• $pwd _______

• $cd aaa _______

Page 15: 第三章   UNIX 的文件与目录

3 、创建目录 (mkdir)

• 格式: $mkdir dir_name

• 作用:创建一个子目录,或一次创建多 个子目录。

• 在每一个新的子目录中,均包含两个标准的项目: .( 点 ) 和 ..( 双点 )

•  mkdir 命令带 -m 选项,可用来创建一个带有特定权限的子目录。

Page 16: 第三章   UNIX 的文件与目录

Mkdir 命令 创建目录

• [ 实例 ]• 回到用户主目录,在

memos 目录下创建名为 divid88 的子目录。

Page 17: 第三章   UNIX 的文件与目录

举例:

• 1. 在用户主目录下创建 memos 和 important:• $cd• $mkdir memos• $pwd _________• $cd memos• $pwd __________• $cd• $mkdir memos/important• $cd memos/important• $pwd ___________

Page 18: 第三章   UNIX 的文件与目录

$ cd$ cd

$ mkdir menmos$ mkdir menmos

$ pwd$ pwd

/usr/david/usr/david

$ cd memo $ cd memo

$ pwd$ pwd

$_$_$ cd$ cd

$ mkdir memos/important$ mkdir memos/important

$ cd menmos/important$ cd menmos/important

$ pwd$ pwd

/usr/david/memos/important/usr/david/memos/important

$_$_

根目录

USR

david

REPORT

Draft_1

phones

123important

source

当前目录

现在工作目录

first.c myfirst

memos

Page 19: 第三章   UNIX 的文件与目录

(续)

• 注意: 1 、创建的目录应该不存在; 2 、可以在任何一级用 mkdir ,

而不一定要在当前目录下创建。

Page 20: 第三章   UNIX 的文件与目录

5 、删除目录 (rmdir)

• 格式: $rmdir dir_name• 作用:删除不需要的目录• 说明:• 1.     dir_name 参数必须有• 2.     dir_name 参数不能被指定为当前目录(即:

要在父目录中删除子目录)• 3. 被删除的子目录必须为空子目录。• (即只包含 . 和 . . )

Page 21: 第三章   UNIX 的文件与目录

一次操作多个目录

• 在 AIX 中,可同时创建多个目录 , 且可用一个命令删除某个目录及其所有的子目录。

• 在操作时要使用带 -p 的命令选项。• 举例: $mkdir –p dir1/dir2/dir3 $rmdir –p dir1/dir2/dir3有下列二种情况之一时, rmdir 命令不起作用:1.       待删除的目录不是空目录2.       你对待删除目录没有写的权限

Page 22: 第三章   UNIX 的文件与目录

一次操作多个目录

• -P 选项:一行命令可以创建一个完整的目录结构。使用 -P 选项在当前目录下逐级创建目录。

• [ 注意 ] :创建的目 录不存在。用不着非得创建当前目录的子目录。只要给出新目录的路径名,可以在任何一级目录运行该命令。

Page 23: 第三章   UNIX 的文件与目录

举例:

• 在用户主目录内创建一个三层的目录:• $cd

• $mkdir –p xx/yy/zz

Page 24: 第三章   UNIX 的文件与目录

根目录

USR

david

REPORT Draft_1 phones

123

source

first.c myfirst

memos

important

xx

yy

zz

Page 25: 第三章   UNIX 的文件与目录

6 、显示目录中的各项 (ls)

• 格式: $ls dir_name (dir_name 是可选的 )

• 作用:显示(列表 list )目录命令• 选项: -a,-R• 举例: $cd, $ls (显示用户主目录中的内容) $ls -a (显示所有文件) 文件名以 . 开头的文件是隐藏文件 $ls -R (显示所有子目录的内容)

Page 26: 第三章   UNIX 的文件与目录

列出目录中文件的详细信息 (ls)

• 格式: $ls –l• 作用:使用带 -l 选项的 ls 命令,能得到目录中的

文件的详细信息• 显示内容的说明:• 字段 1 显示是文件还是目录;读写权限。• 字段 2 显示了链接数 • 字段3显示了该文件的拥有者的名称• 字段4显示了用户组权限所作用的用户组的名称。• 字段5显示了该文件的字节数• 字段6显示了该文件被最后修改的时间• 字段7显示了该文件或目录的名称

Page 27: 第三章   UNIX 的文件与目录

-l 以长 (long) 格式显示文件的七项主要信息 , 例如 :

$ ls -l data

total 28

-rwxrw-r-- 1 zhang student 259 Jul 11 18:23 file1

-rw-rw---- 1 zhang student 76 Sep 05 09:56 file2

drwxr-xr-x 2 zhang student 48 Sep 05 16:39 hist

文件名 最后修改时间 文件大小 ( 字节数 )

文件所属用户组 文件属主 ( 所有者 )

文件链接数 文件保护模式 文件类型 (-: 普通 d: 目录 c: 字符设备 b: 块设备 p:

管道 )

Page 28: 第三章   UNIX 的文件与目录

如果 ls 命令列出的文件是设备特殊文件 , 则该命令的输

出格式略有不同 , 例如 :

$ ls –l /dev 次设备号brw-rw---- 1 root admin 2, 5 Sep 05 09:56 disk3

crw-rw-rw- 1 root admin 6, 0 Sep 05 16:39 lp

文件名 最后修改时间 主设备号 文件所属用户组 文件属主 ( 所有者 )

文件链接数 文件保护模式 文件类型 (c: 字符设备 b: 块设备 )

Page 29: 第三章   UNIX 的文件与目录

ls 命令的命令选项

• -a 功能:列出所有文件,包括隐藏文件(入图所示)

• -C 功能: 以多列的格式列表,按列排序

• -F功能: 如果是目录,文件名后加 / ;如果是可执行文件,加 * 表示

Page 30: 第三章   UNIX 的文件与目录

ls 命令的命令选项

• -l 功能:按照长格式列表,显示文件的详细信息

• -m功能:按页宽列文件,以逗号分隔• -p功能: 如果是目录,文件名后加 /• -r功能: 以字母反序列表• -R功能:循环列出子目录的内容• -s功能: 以文件块为单位显示文件大小• -x功能: 以多列的格式列表,按行排序

Page 31: 第三章   UNIX 的文件与目录

[ 说明 ]

• 1 。 每个选项字母前需要加连字符。• 2 。 命令名和选项之间必须要有空格。• 3 。 加目录的路径名列出其他目录的文

件。• 4 。 一行命令中可以多于一个选项。

Page 32: 第三章   UNIX 的文件与目录

(续)

• 注意:• 目录的大小是以 512 字节为增量的。• 名称是存贮在目录之中的,其它显示的

信息是存贮在 inode 表中的

Page 33: 第三章   UNIX 的文件与目录

7 、显示目录条目的信息

• 使用 -i 命令选项, inode 序号将列在第一列。• 使用 -d 命令选项,将只显示目录条目的信息。•  

• 可以使用不同的命令选项来显示不同的时间标记

• ls –lc 显示更新时间• ls –l 显示更改时间• ls –lu 显示访问时间

Page 34: 第三章   UNIX 的文件与目录

显示目录条目的信息

• 文件类型:文件类型: - 表示普通文件 d 表示目录文件 b 表示块设备文件 例如磁盘 c 表示字符设备文件 例如打印机

Page 35: 第三章   UNIX 的文件与目录

五、 UNIX 文件系统

1. 文件系统的存储结构 UNIX 系统可以把一个能随机存取的存储介质( 如硬盘、软盘和光盘等)上的存储空间划分成一个至多个区域,每个区域都可以像独立的物理设备一样单独进行管理和数据存取,这样的存储区域,即是逻辑设备。在逻辑设备上按照一定的格式进行划分,就构成了逻辑文件系统,简称文件系统。

Page 36: 第三章   UNIX 的文件与目录

引导块 : 系统上电启动时 , 其中的引导程序读入和装

载操作系统 . 它不是文件系统的必要组成部分 .

超级块 : 存放文件系统的标题信息 , 包括文件系统大小、 i 节点表大小、数据区的使用状况等 .

i 节点表 : 其中的每一个表项存放一个文件的静态信息 : 大小、类型、属主、索引表、访问权限和修改日期等 .

数据存储区 : 实际存放数据的地方 . 以块为单位存取

引导块 超级块 i 节点表 数据存储区

逻辑文件系统的存储结构

Page 37: 第三章   UNIX 的文件与目录

2. 文件系统的建立 :

# mkfs specialfile blocksize gap blocks

specialfile: 要建立文件系统的逻辑设备名 blocksize: 文件系统块的大小 , 通常为 512 字节 gap: 间隔因子 , 用于提高读写速度 blocks: 文件系统的大小 ( 块数 )

Page 38: 第三章   UNIX 的文件与目录

3. 文件系统的安装和拆卸 建立好的文件系统在使用时 , 应挂接到一个目录下 , 这个目录通常为根目录下的一个空目录 , 用户访问该目录时也就访问到了挂接在该目录下的文件系统的内容 . 这个挂接操作就叫安装 .

一个文件系统不用时 , 可使其从安装目录上拆卸下来 , 该安装目录断开与该文件系统的任何联系 , 由此保护该文件系统不受任何非法访问 .

# mount specialfile directoryname

如 : mount /dev/hd03 /mnt

# umount specialfile(or directoryname)

如 : umount /dev/hd03 (umount /mnt)

Page 39: 第三章   UNIX 的文件与目录

4. 文件系统的逻辑结构root

bin

who

cp

date

cat

ls

libbin

bc

yacc

lex

libz.a

libm.a

libc.a

sar

include

stdio.h

file.h

a.out.h

dir.h

spool

cron

mail

lpd

usrunixboot mnt etc tmp dev

mount

rc

ttys

passwd

file.tmp

ex53

tmp029

abc

ttyp1fd0

cdrom ttyp2

lp

hd02

tty02mem

tty01

hd01

图例 : 目录 普通文件 设备文件

Page 40: 第三章   UNIX 的文件与目录

在 UNIX 系统中 , 所有静态的对象都属于

“ 文件”的范畴 , 其主要目的是规范和简化上

层应用程序的接口 .

“ 文件” 和与其相对应的 “进程” 是 UNIX

系统中的两个最基本概念 .

Page 41: 第三章   UNIX 的文件与目录

5 、目录文件的内容

• 目录是一种特殊的文件,它仅包含欲访问存放于其中的文件或目录所必需的信息。

• 目录一般比其它文件占用的空间小。• 目录的作用在于将相关的文件组织在一起。• 每一个目录条目,包括一个文件名(或子目录

名),一个相关的 inode ( i 节点)序数

Page 42: 第三章   UNIX 的文件与目录

目录结构

72 .

2 ..

51 xyz

0 prog

296 abc

上级目录 51 .

72 ..

134 file

1111

2222222

333

444444

/data/data/xyz

/data/abc

父目录

子目录

目录项长度 :

2 + 14 = 16 字节

Page 43: 第三章   UNIX 的文件与目录

6. 索引节点 (inode, i 节点 ) 磁盘 i 节点表中的一个表项 , 存放文件的静态

信息 . 各文件之间是以其 i 节点号相互区别的 .

. 用户访问文件的过程• 指定文件名找到相关的 inode 序数 访问 inode 表找到文件的位置访问文件中包

含的数据. inode 表中包含了指定文件的各种相关信息。(p42 图 4-1)

Page 44: 第三章   UNIX 的文件与目录

六、与文件相关的操作• cp

• mv

• ln

• Cat (more)

• rm

Page 45: 第三章   UNIX 的文件与目录

1 、文件名及其规范 ① 文件名长度 在短文件名的系统中 , 文件名最长为 14 字符 , 在

长文 件名的系统中 , 文件名长度可达 512 字符 .

② 文件名可用字符 (A ~ Z) 大写字母 ( _ ) 下划线 (a ~ z) 小写字母 ( . ) 小数点 (0 ~ 9) 数字 除此之外的所有其它字符 ( 包括空格 ) 不能用于文件

名 .

以点 (.) 开始的文件名是隐含文件名 , 在列目录操作时通常不显示出来 .

UNIX 系统对文件名的含义不作任何解释 , 文件名 ( 包括其后缀 ) 的含义由使用者或调用程序来解释 .

注意 : 在 UNIX 系统中字母的大小写是有区别的 !

Page 46: 第三章   UNIX 的文件与目录

AIX/Linux 的文件名

• 文件名命名的规则:• 只使用字母(大、小写)、数字及三个特殊符号#,

@ , _ 。也可使用 .( 点 ) 。• 文件名中不包括空格• 文件名中不包括 shell使用的特殊字符,如 * ?

> < / ; & ! [ ] | ‘ “ ( ) 。• 不能用 +号或 -号作为文件名的第一个字符• 不能与系统中的命令名相同• 对大、小写是不同的。• 文件名中最多包括 255 个字符

Page 47: 第三章   UNIX 的文件与目录

• 注意:• AIX 中没有文件扩展名。• . (点)只作为文件名中的一部分。• 使用 ls 命令是看不到以 . 作为文件名的

第一个字符的文件的。 • 举例: myfile 、 MFILE 、 my file

• JAN_list 、 my.new.list

Page 48: 第三章   UNIX 的文件与目录

touch 命令

• 作用: Touch 命令是用于修改文件的访问时间 更改时间 (modificated) 的。并可以用来创建 0 字节长度的文件。

• 格式: $touch 命令参数• 使用 touch命令有两种目的。• 1 、如果命令参数中指定的文件并不存在,这个文件

将被创建;• 2 、如果命令参数中指定的文件存在,那么这个文件

的最后一次更改时间( modificated )将被更新为当前的时间。

Page 49: 第三章   UNIX 的文件与目录

拷贝文件 ( cp )

• 格式: $cp source target• $cp file1 file2 ... Target-dir• 作用:复制文件,对文件备分。用户可把文件

从某个目录复制到另一个目录•   选项: -i: 如果目标文件存在,请求确认• -r:复制目录到新的目录• 如果目标( target )参数中指定的是一个目录

名,那么新的文件可与源文件同名。

Page 50: 第三章   UNIX 的文件与目录

cp 举例: ( p55 )

.单个文件拷贝: (图 4-9 )$pwd ( /home/team01/doc )$cp /home/team03/pgms/suba programa. 多个文件拷贝: (图 4-10 )$cd /home/team01$cp doc/programa test1 c. 不同目录之间的拷贝: (图 4-11 )$cd doc$ cp trio_ltr ../c

Page 51: 第三章   UNIX 的文件与目录

移动文件或重命名文件( mv )

• 格式: $move source target• 作用:把文件从一个地方移动到别处,或用来更改文件、目录的名字。

• 说明:源参数 (source) 可以是一个文件,也可是多个文件。如果是多个文件,那么目标参数( target )必须是一个目录。

• 目标参数( target )可以是一个文件,也可以是一个目录

• 使用 mv ,文件数量不变,只改变文件名或文件所处的目录。 

Page 52: 第三章   UNIX 的文件与目录

① 如果 bbb 为普通文件名 , 则将 aaa 换名为 bbb. 如果 bbb 不存在 , 则新建 bbb, 如果 bbb 存在 ,

则用aaa 覆盖 bbb. 执行后 aaa 不存在了 . (注意与命令

cp的区别 ) e.g. mv file1 file2 ② 如果 bbb 为一个目录文件名 , 则将 aaa移动到bbb 目录下 , 文件名不变 , 仍然为 aaa. e.g mv file3 /home/student ③ 如果 bbb 为一个带路径的普通文件名 , 则把aaa移动到指定的目录下 , 并且换名为 bbb. e.g mv file4 /home/student2/file4.org

Page 53: 第三章   UNIX 的文件与目录

mv 举例:

• P58

• 注意:使用mv命令后,并没有增加或减少文件,文件数量不变。唯一的改变是文件名或文件所处的目录改变了。

Page 54: 第三章   UNIX 的文件与目录

链接文件 : ln 命令 ln 命令的主要功能是给一个已经存在的文件再

取一个名字 . 新的文件名与原文件名可以在同一个目录下 ,

也可以在不同的目录下 . 新老文件名代表同一个文件 . 例如 : $ ls -l file1 -rw-r--r-- 1 liu teacher 296 Sep 05 18:32

file1 $ ln file1 file2 $ ls -l file1 file2 -rw-r--r-- 2 liu teacher 296 Sep 05 18:32

file1 -rw-r--r-- 2 liu teacher 296 Sep 05 18:32

file2

Page 55: 第三章   UNIX 的文件与目录

说明 : . 链接前 , 文件已有不止一个名字 . 链接后 , 文件内容并没有被复制 . 对文件的任何一个名字的操作具有完全相

同的效果 . 删除一个文件名时 , 只要剩余文件名个数

不为零 , 文件继续存在

Page 56: 第三章   UNIX 的文件与目录

• 格式: $ln source_file target_file• 作用:在现有文件与新文件之间建立新链接,

使一个文件具有一个以上的名字 。• 说明: . 用 ln命令可以让一个文件在目录 树中具有两个不同的名称。 . 链接后,该文件的属主及文件的 权限设定没有变化。• 举例: $ln report rp

Page 57: 第三章   UNIX 的文件与目录

ln

• 注意:• 1、 ln与 cp的区别: ln只为文件建立另一个文件名,没有新的文件产生,而cp是把文件的物理位置进行复制,有两个分别的文件。2、 ln可以指定一个已经存在的目录名作为新文件名,这样,用户可以不输入路径就可以在指定目录中访问该文件。 3、 ln 的使用会使链接数增加。

Page 58: 第三章   UNIX 的文件与目录

小结:

• cp 、 mv 和 ln 的区别:• .cp 创建新文件;• .mv更改文件名或把文件移到别处;• .ln 为已经存在的文件建立别名。

Page 59: 第三章   UNIX 的文件与目录

显示文件内容 ( cat,pg,more )

• 1 、 cat ( concatenate,连结)• 格式: $cat filename1 filename2 • 作用:用来显示、创建或者合并文件• 说明:如果输出的内容超过了一屏长度,那么

系统直接滚动到最后一屏的内容。你只能阅读最后一屏的内容。

• 举例: $cat fff (显示 fff的内容)• $cat f1 f2(分别看 f1和 f2的内容)• 文件超过 23 行,则只能看到最后 23 行,用 <c

trl-s>暂停, < ctrl-q>恢复。

Page 60: 第三章   UNIX 的文件与目录

显示文件内容

• 2 、 more• 格式: $more filename• 作用: more 命令与 pg 命令有相同的作用,只

是想看下一屏内容时,按 <space> 键。 • 举例: $more fff

Page 61: 第三章   UNIX 的文件与目录

删除文件 ( rm )

• 格式: $rm file1 file2• 作用:用 rm 命令可删除不需要的文件。• 指定文件名,删除工作目录里的 • 文件;指定路径名,删除位于其• 他目录的文件。 rm 直接删除,没• 有提示、确认。• 选项: -i: 删除文件前,给出确认;• -r: 删除指定的目录及目录中的所有文件• 和子目录。即删除整个目录结构。• 注意:用 rm 命令删除后无法恢复。

Page 62: 第三章   UNIX 的文件与目录

本章小结:

• 系统中存在三个类型的文件:• 普通文件• 目录文件• 特殊文件• AIX 的文件系统结构是层次树状的结构• 可以使用全路径或相对路径来访问文件。

以 / 开始的路径名一定是全路径。

Page 63: 第三章   UNIX 的文件与目录

小结(续)

• 与目录相关的命令:• pwd,cd,mkdir,rmdir 和 ls

• 与文件相关的命令:• cp,mv,ln,cat,pg,more,rm