1.3 Linux文件系统

发布时间 2023-07-13 17:41:21作者: 烟儿公主

一、Linux文件系统结构

Linux下都是文件,所以没有Windows一样的盘,有的只有文件夹。

cd /    // 进入根目录

ls     // 查看根目录"/"下的文件及文件夹

/bin     :存储了很多系统命令, /usr/sbin 也存储了许多系统命令。

/sbin   :超级用户 root 的根目录文件。

/root   :普通用户默认目录,在该目录下,每个用户都有一个以本用户名命名的文件夹。

/home     :存放 Ubuntu 系统内核和系统启动文件。

/boot       :通常包括系统引导后被挂载的文件系统的挂载点。

/mnt   :存放设备文件,我们后面学习 Linux 驱动主要是跟这个文件夹打交道的。

/dev    :保存系统管理所需的配置文件和目录。

/etc     :保存系统程序运行所需的库文件, /usr/lib 下存放了一些用于普通用户的库文件。

/lib      :存储一些二进制可执行命令文件, /usr/bin 也存放了一些基于用户的命令文件。

/lost+found :一般为空,当系统非正常关机以后,此文件夹会保存一些零散文件。

/var     :包括与系统用户直接有关的文件和目录,比如应用程序和所需的库文件。

/usr     :存放 Ubuntu 系统自动挂载的设备文件。

/media     :虚拟目录,不实际存储在磁盘上,通常用来保存系统信息和进程信息。

/proc      : 存储系统和用户的临时文件,该文件夹对所有的用户都提供读写权限。

/tmp       :可选文件和程序的存放目录。

/opt     :系统设备和文件层次结构,并向用户程序提供详细的内核数据信息。

/sys      :存储一些不断变化的文件,比如日志文件


二、文件操作基础知识

1.创建新文件(touch)

touch 不仅仅可以用用来创建文本文档,其它类型的文档也可以创建。

touch  [参数]  [文件名]

参数如下:

-a       :只更改存取时间。

-c       :不建立任何文件。

-d<日期>    : 使用指定的日期,而并非现在日期。

-t<时间>     :使用指定的时间,而并非现在时间。




2.创建文件夹(mkdir)

mkdir  [参数]   [文件夹名目录名]

主要参数:

-p  :如所要创建的目录其上层目录目前还未创建,那么会一起创建上层目录。

 

3.删除文件及目录(rm)

rm  [参数]  [目的文件或文件夹目录名]  

主要参数:

-d   :直接把要删除的目录的硬连接数据删成 0,删除该目录。

-f    :强制删除文件和文件夹(目录)

-i    :删除文件或者文件夹(目录)之前先询问用户。

-r    : 递归删除,指定文件夹(目录)下的所有文件和子文件夹全部删除掉。

-v    :显示删除过程。

 

4.删除文件夹(rmdir)

rmdir  [参数]  [文件夹(目录)]

 

5.复制文件(cp)

cp  [参数]  [源地址]  [目的地址]

主要参数:
-a   :此参数和同时指定“-dpR”参数相同

-d   :在复制有符号连接的文件时,保留原始的连接。

-f    :强行复制文件,不管要复制的文件是否已经存在于目标目录。

-I    :覆盖现有文件之前询问用户。

-p   :保留源文件或者目录的属性。

-r -R :递归处理,将指定目录下的文件及子目录一并处理


*”,“*.c”就表示 test1 下的所有以“.c”结尾的文件,也就是 a.c b.c

../test2”中的“../”表示上级目录,因此“../test2”就是上级目录下的 test2 文件夹。 

 

6.文件移动(mv)

mv  [参数]  [源地址]  [目的地址]

主要参数:

-b   :如果要覆盖文件的话覆盖前先进行备份。

-f    :若目标文件或目录与现在的文件重复,直接覆盖目的文件或目录。

-I    :在覆盖之前询问用户。

 

7.目录查询文件(find)

find  [路径]  [参数]  [关键字]

主要参数:

-name<filename>   : 按照文件名称查找,查找与 filename 匹配的文件,可使用通配符。

-depth          :从指定目录下的最深层的子目录开始查找。

-gid<群组识别码>    :查找符合指定的群组识别码的文件或目录。

-group<群组名称>   :查找符合指定的群组名称的文件或目录。

-size<文件大小>     :查找符合指定文件大小的文件。

-type<文件类型>    :查找符合指定文件类型的文件。

-user<拥有者名称>   :查找符合指定的拥有者名称的文件或目录。 

 

8.关键字查询(grep)

grep  [参数]  关键字  文件列表

-b         :在显示符合关键字的那一列前,标记处该列第 1 个字符的位编号。

-c          :计算符合关键字的列数。

-d<进行动作>     : 当指定要查找的是目录而非文件时,必须使用此参数!否则 grep 令将回报信息并停止搜索。

-i          :忽略字符大小写。

-v         :反转查找,只显示不匹配的行。

-r          :在指定目录中递归查找。



 

三、文件基础知识

1.文件类型

每个文件的详细信息占一行,每行最前面都是一个符号就标记了当前文件类型。例如testdir1是d开头,那么它就是目录文件。

-        :通文件,一些应用程序创建的,比如文档、图片、音乐等等。

d     :目录文件。

c      :字符设备文件, Linux 驱动里面的字符设备驱动,比如串口设备,音频设备等。

b     :块设备文件,存储设备驱动,比如硬盘, U 盘等。

l       :符号连接文件,相当于 Windwos 下的快捷方式。

s      :套接字文件。

p     :管道文件,主要指 FIFO 文件。

我们后面学习 Linux 驱动开发的时候基本是在和字符设备文件和块设备文件打交道。

 

2.权限管理

  其中“-rw-rw-r--”表示文件权限与用户和用户组之间的关系,第一位表示文件类型。剩下的 9 位以 3 位为一组,分别表示文件拥有者的权限,文件拥有者所在用户组的权限以及其它用户权限。后面的“luoxuesong luoxuesong ”分别代表文件拥有者(用户)和该用户所在的用户组,因此文件 test.c 的权限情况如下:
①文件
test.c 的拥有者是用户 luoxuesong ,其对文件 test.c 的权限是“rw-”,也就是对该文件拥有读和写两种权限。
②用户 luoxuesong
所在的用户组也叫做 luoxuesong ,其组内用户对于文件 test.c 的权限是“rw-”,也是拥有读和写这两种权限。
③其它用户对于文件
test.c 的权限是“r--”,也就是只读权限。 

2.1权限修改(chmod)

chmod用于修改文件或文件夹权限。

chmod  [参数]  [文件名/目录名]

主要参数:

-c     :效果类似“-v”参数,但仅回显更改的部分。

-f     :不显示错误信息。

-R     :递归处理,指定目录下的所有文件及其子文件目录一起处理。

-v     :显示指令的执行过程。

这个766是根据以上表格来算出来的,766=rwx rw- rw-

u+x=归属用户+可执行权限

 

2.1 文件归属者修改 (chown)

命令 chown 用来修改某个文件或者目录的归属者用户或者用户组。

chown  [参数]  [用户名.<组名>]  [文件名/目录]

其中[用户名.<组名>]表示要将文件或者目录改为哪一个用户或者用户组,用户名和组名用“.”隔开,其中用户名和组名中的任何一个都可以省略,命令主要参数如下:

-c     :效果同-v 类似,但仅回报更改的部分。

-f      :不显示错误信息。

-h     :只对符号连接的文件做修改,不改动其它任何相关的文件。

-R     :递归处理,将指定的目录下的所有文件和子目录一起处理

-v      :显示处理过程。