文件类型和文件系统
从资源管理角度来看,操作系统是计算机中软、硬件资源管理者。
其中软件资源管理部分称为文件系统,主要负责信息的存储、检索、更新、共享和保护。
文件是操作系统用来存储文件信息的基本结构,它是操作系统在分区上保存信息的方法和数据结构。
文件类型
用find命令查找指定类型的文件:
find / -type [f d b c s p l] [-ls] [|wc–l]
-:普通文件 (f)
d:目录文件
b:块设备文件 (block)
c:字符设备文件 (character)
s:套接字文件(socket)
p:命令管道文件(pipe)
l:符号链接文件(symbolic link file)
-ls
选项:显示出这些文件的详细信息
管道命令|
和统计命令wc –l
:统计出查找到的文件的个数
操作演示:
查看/dev文件下的所有文件类型:
在/dev下查找目录文件:find /dev -type d -ls
在/dev下查找套接字文件:find /dev -type s -ls
在/dev下查找字符设备文件,就把s改成c,其余以此类推
如果要查有多少个字符类型文件:加 | wc -l
如果要查有多少个文件夹,就把c改成d,其他以此类推
使用“ls –l”命令显示文件列表时,共显示9个部分,其中第一部分表示文件的类型和权限,而第1个字符代表文件的类型,可以为-、d、s、b、c、p和l,各文件类型的说明分别如下:
1)普通文件(-):用于存放数据、程序等信息的一般文件,包括文本文件和二进制文件。
2)目录文件(d):相当于Windows系统中的文件夹,由该目录所包含的目录项所组成的文件。
3)套接字文件(s):套接字文件系统是一个用户不可见的,高度简化的,用于汇集网络套接字的内存文件系统,它没有块设备,没有子目录,没有文件缓冲,它借用虚拟文件系统的框架来使套接字与文件描述字具有相同的用户接口。当用户用socket(family,type,protocol)创建一个网络协议族为family,类型为type,协议为protocol的套接字时, 系统就在套接字文件系统中为其创建了一个名称为其索引节点编号的套接字文件。
4)块设备文件(b):存取是以一个字块为单位。普通文件的处理是不必要对硬件进行过多操作的,而字符型设备和块设备就不同了,所以是以特别形式文件出现。/dev/cdrom,/dev/fd0,/dev/hda都是磁盘(光驱,软驱,主硬盘),它们的存取是通过数据块来进行的。
5)字符设备文件(c):存取数据时是以单个字符为单位的。/dev/audio是字符设备文件,对audio的存取是以字节流方式来进行的。
6)命名管道文件(p):负责将一个进程的信息传递给另一个进程,从而使该进程的输出成为另一个进程的输入。
7)符号链接文件(l): 符号链接又叫软链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。
用ln -s source_file softlink_file
命令可以生成一个软连接,在对符号文件进行读或写操作的时候,系统会自动把该操作转换为对源文件的操作。但删除链接文件时,系统仅仅删除链接文件,而不删除源文件本身。删除软链接用rm softlink_file
或者unlink softlink_file
。
在当前工作目录中执行“ls –l
”命令,如图,可以看出该目录中的文件主要是普通文件和目录文件:
使用ls –l 命令查看用户主目录中的文件:
再执行“ls –l /dev
”命令,如图,可以看出大部分文件为设备文件:
文件命名
-
由字母(可用汉字)、数字、下划线、圆点等字符构成。(除字符“/”外的所有字符都可)
但应避免使用特殊字符,如?@ # $ ( ) \ | ; ’ ’ " "<>*等。 -
长度不超过255个字符。
-
同一目录下不能有相同的文件名,不同目录下可以同名。
-
若文件名的第1个字符为“.”,表示该文件为隐藏文件。
-
文件的属性与取名无关,文件名中可以不规定扩展名。
-
Linux系统中文件名是区分大小写的,而Windows中文件名字是保留大小写但不区分。比如Linux中myfile,Myfile和myFILE表示的是三个不同的文件。
-
文件的属性与取名无关,文件名可以不使用扩展名(可以叫1,也可以叫1.txt)
操作演示:
检验是否能在同一目录下创建同名文件:
创建两个都叫 a 的目录:
说明第一个的a创建了,第二个的不行
验证区分大小写:
隐藏文件:
后缀可省略:
目录名和路径
1)目录
目录是指包含许多文件项目的一类特殊文件。子目录(当前目录的下一级目录)、父目录(当前目录的上一级目录)、工作目录(当前目录)、用户主目录(Home Directory)。
2)路径
由目录名和 “/
”(斜杠)做分隔符组成的字符串,用来表示文件或目录在文件系统中所处的层次的一种方法。(例如:/usr/share/doc)路径又分绝对路径和相对路径。
3)“.
”表示当前目录,“. .
”表示父目录,“~
”表示用户主目录。
操作演示:
进入目录下,并检查里面有多少文件:
相对路径:
Linux文件系统结构
Linux的文件系统采用分层结构。其顶层为根目录,用符号“/”表示,在根目录下是不同的子目录。
Linux文件系统常用目录说明:
/
Linux系统目录树的起点。
/root
:系统管理员(也叫超级用户)的主目录。
/boot
:这里存放的是启动Linux时使用的一些核心文件。
/bin
:bin是binary的缩写。这个目录存放着使用者最经常使用的命令。例如cp、ls、cat等等。
/home
:用户的主目录,比如说有个用户叫sy,那么他的主目录就是/home/sy。注意:root用户的目录不在这里,而在/root里。
/dev
:dev是device(设备)的缩写。这个目录下是Linux所有的外部设备,在Linux中设备也是文件,使用访问文件的方法访问设备。例如:/dev/sda代表第一个物理SCSI硬盘。
/lib
:这个目录里存放着系统最基本的动态链接共享库,其作用类似于Windows里的.dll文件。几乎所有的应用程序都需要用到这些共享库。
/etc
:这个目录用来存放系统管理所需要的配置文件和子目录。
/mnt
:这个目录在刚安装好系统时是空的,系统提供这个目录的目的是让用户临时挂载别的文件系统。
/usr
:这是最庞大的目录,我们要用到的应用程序和文件几乎都存放在这个目录下。
/sbin
:s就是Super User的意思,也就是说这里存放的是系统管理员使用的管理命令和管理程序。
/tmp
:用来存放临时文件的地方。
/var
:这个目录中存放着那些不断在扩充着的东西,为了保持/usr的相对稳定,那些经常被修改的目录可以放在这个目录下,系统的日志文件就在/var/log目录中。
/proc
:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。也就是说,这个目录的内容不在硬盘上而是在内存里。
软链接和硬链接
Linux允许一个物理文件有一个以上的逻辑名,即可为一个文件创建一个链接文件,用来表示该文件的另一个名字。
链接不同的文件可为之指定不同的访问权限,达到既可共享,又可控制安全的目的。
链接分为硬链接和软链接。
硬链接:硬链接复制文件i-node,也就是保留所链接文件的索引节点(磁盘的物理位置)信息,即使文件更名或改变、移动,硬链接文件仍然存在。
软(符号)链接:软(符号)链接仅仅是指向目的文件的路径,类似于Windows下的快捷方式,如果被链接的文件更名或移动,符号链接文件就无任何意义。
ln链接命令
硬链接格式:ln 源文件 链接文件
软链接格式:ln -s 源文件 链接文件
软链接:工作原理:使用带有-i选项的ls命令列出当前目录中所有文件和目录、其中包含每个文件和目录的i节点号。
硬链接:一个硬连接是一个文件名与一个i节点之间的对应关系。每个文件都至少使用一个硬连接、在一个目录中的每一个记录都构成了一个硬连接,硬连接把多个不同的文件名对应到一个i节点上。
例如:
ln result.txt result1 //硬链接
ln –s result.txt result2 //软链接
ls -il //符号连接占用一个i节点、即软连接也是文件
注意:软链接可以指向目录,不允许将硬链接指向目录。