Linux文件系统,文件类型与文件操作命令
Linux文件系统
- 在Linux系统下,系统根目录为
/
,可在终端中输入指令查看根目录下的具体文件。
cd / #进入到根目录
ls #查看根目录下的文件以及文件夹
文件夹 |
功能 |
/bin |
存储一些二进制可执行命令文件, /usr/bin 也存放了一些基于用户的命令文件 |
/sbin |
存储了很多系统命令, /usr/sbin 也存储了许多系统命令 |
/root |
超级用户 root 的根目录文件 |
/home |
普通用户默认目录,在该目录下,每个用户都有一个以本用户名命名的文件夹 |
/boot |
存放 Ubuntu 系统内核和系统启动文件 |
/mnt |
通常包括系统引导后被挂载的文件系统的挂载点 |
/dev |
存放设备文件 |
/etc |
保存系统管理所需的配置文件和目录 |
/lib |
保存系统程序运行所需的库文件, /usr/lib 下存放了一些用于普通用户的库文件 |
/lost+found |
一般为空,当系统非正常关机以后,此文件夹会保存一些零散文件 |
/var |
存储一些不断变化的文件,比如日志文件 |
/usr |
包括与系统用户直接有关的文件和目录,比如应用程序和所需的库文件 |
/media |
存放 Ubuntu 系统自动挂载的设备文件 |
/proc |
虚拟目录,不实际存储在磁盘上,通常用来保存系统信息和进程信息 |
/tmp |
存储系统和用户的临时文件,该文件夹对所有的用户都提供读写权限 |
/opt |
可选文件和程序的存放目录 |
/sys |
系统设备和文件层次结构,并向用户程序提供详细的内核数据信息 |
- Linux是一个支持多用户的操作系统,系统还会为每一个用户创建一个用户根目录。每创建一个新用户,系统就会在
/home
文件夹下,创建一个以用户名命名的文件夹,这个文件夹就是用户的根目录,如/home/zzh
文件类型
- 在用户的根目录下,使用命令
ls -l
,可以查看到所有文件的详细信息。
- 在图中,每个文件详细信息的第一个字符,标记了当前文件的文件类型,不同字符所表示的文件类型如下:
标识符 |
文件类型 |
- |
普通文件,一些应用程序创建的,比如文档、图片、音乐等 |
d |
目录文件 |
c |
字符设备文件, Linux 驱动里面的字符设备驱动,比如串口设备等 |
b |
块设备文件,存储设备驱动,比如硬盘, U 盘等 |
l |
符号连接文件,相当于 Windwos 下的快捷方式 |
s |
套接字文件 |
p |
管道文件,主要指 FIFO 文件 |
文件操作指令
文件的权限管理
- 使用
ls -l
命令,可以查看当前路径下,各文件的具体用户的使用权限。可使用chmod
命令,对各用户的权限进行修改,具体指令格式如下:
chmod [用户类型] [+|-|=] [模式] 文件名
- 其中,操作对象中的用户类型可是下述字母中的任一个或者它们的组合:
用户类型 |
含义 |
u |
表示“用户(user)”,即文件或目录的所有者 |
g |
表示“同组(group)用户”,即与文件属主有相同组 ID 的所有用户 |
o |
表示“其他(others)用户” |
a |
表示“所有(all)用户”,它是系统默认值 |
操作符号 |
含义 |
+ |
添加某个权限 |
- |
取消某个权限 |
= |
赋予给定权限并取消其他所有权限 |
模式 |
含义 |
r(4) |
可读 |
w(2) |
可写 |
x(1) |
可执行 |
- 读、写、运行三项权限可以用数字表示,就是 r=4,w=2,x=1。例如,
rw-r--r--
可用数字表示成 644
:
chmod 664 test
文件的创建与删除
创建新文件(touch)
- 使用
touch
命令,可以创建各种类型的文件。命令格式如下:
touch [选项参数]] [文件名]
- 使用 touch 创建文件的时候,如果[文件名]的文件不存在,那就直接创建一个以[文件名]命
名的文件,如果[文件名]文件存在的话就仅仅修改一下此文件的最后修改日期。
- 命令的主要选项如下:
选项 |
功能 |
-a |
只更改存取时间 |
-c |
不建立任何文件 |
-d<日期> |
使用指定的日期,而并非现在日期 |
-t<时间> |
使用指定的时间,而并非现在时间 |
文件夹创建(mkdir)
- 建文件夹使用命令
mkdir
,类似 MSDOS 下的md
命令,命令格式如下:
mkdir [选项参数]] [文件夹名目录名]
- 需要注意,使用该命令时,要求创建目录的用户在当前目录中
(dir-name 的父目录中)具有写权限,并且 dirname 不能是当前目录中已有的目录或文件名称。
- 命令的主要选项如下:
选项 |
功能 |
-p |
如所要创建的目录其上层目录目前还未创建,那么会一起创建上层目录 |
文件及目录删除(rm)
rm
命令可以完成一个文件的删除或者多个文件及文件夹的删除,它可以实现递归删除。命令格式如下:
rm [选项参数]] [目的文件或文件夹目录名]
选项 |
功能 |
-d |
直接把要删除的目录的硬连接数据删成 0,删除该目录 |
-f |
强制删除文件和文件夹(目录) |
-i |
删除文件或者文件夹(目录)之前先询问用户 |
-r |
递归删除,指定文件夹(目录)下的所有文件和子文件夹全部删除掉 |
-v |
显示删除过程 |
- 当我们需要使用
rm
命令删除一个文件夹下的所以文件和子文件夹时,需要加入选项参数-rf
,具体指令如下:
rm -rf dir
文件夹目录删除(rmdir)
- Linux还提供了直接删除文件夹目录的命令:
rmdir
,它可以不加任何参数的删除掉指定的文件夹(目录),命令格式如下:
rmdir [选项参数]] [文件夹(目录)]
选项 |
功能 |
-p |
如所要创建的目录其上层目录目前还未创建,那么会一起创建上层目录 |
文件的复制与移动
文件复制(cp)
- Linux 下的复制命令为
cp
,该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中,具体指令如下:
cp [选项参数]] [源地址] [目的地址]
选项 |
功能 |
-a |
此参数和同时指定“-dpr”参数相同 |
-d |
在复制有符号连接的文件时,保留原始的连接 |
-f |
强行复制文件,不管要复制的文件是否已经存在于目标目录 |
-I |
覆盖现有文件之前询问用户 |
-p |
保留源文件或者目录的属性 |
-r 或-R |
递归处理,将指定目录下的文件及子目录一并处理 |
文件移动(mv)
- 有时候我们需要将一个文件或者文件夹移动到另外一个地方去,或者给一个文件或者文件
夹进行重命名,这个时候我们就可以使用mv
命令。命令格式如下:
mv [选项参数]] [源地址] [目的地址]
选项 |
功能 |
-b |
如果要覆盖文件的话覆盖前先进行备份 |
-f |
若目标文件或目录与现在的文件重复,直接覆盖目的文件或目录 |
-I |
在覆盖之前询问用户 |
链接文件(ln)
- ln 命令用于给系统中已有的某个文件指定另外一个可用于访问它的名称,当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。命令格式如下:
ln [选项参数][原文件][目标文件]
ln [选项参数][原目录][目标目录]
选项 |
功能 |
-b |
删除,覆盖以前建立的链接 |
-d |
允许超级用户制作目录的硬链接 |
-f |
强制执行 |
-i |
交互模式,文件存在则提示用户是否覆盖 |
-n |
把符号链接视为一般目录 |
-s |
软链接(符号链接) |
-v |
显示详细的处理过程 |
文件的压缩与解压缩
zip压缩(zip)
- zip 命令用于将一个或者多个文件压缩成一个.zip 结尾的文件。命令格式如下:
zip [选项参数]] [压缩文件名.zip] [被压缩的文件]
选项 |
功能 |
-b<工作目录> |
指定暂时存放文件的目录 |
-d |
从 zip 文件中删除一个文件 |
-F |
尝试修复已经损毁的压缩文件 |
-g |
将文件压缩入现有的压缩文件中,不需要新建压缩文件 |
-h |
帮助 |
-j |
只保存文件的名,不保存目录 |
-m |
压缩完成以后删除源文件 |
-n<字尾符号> |
不压缩特定扩展名的文件 |
-q |
不显示压缩命令执行过程 |
-r |
递归压缩,将指定目录下的所有文件和子目录一起压缩 |
-v |
显示指令执行过程 |
-num |
压缩率,为 1~9 的数值 |
zip解压缩(unzip)
- unzip 命令用于对.zip 格式的压缩包进行解压。命令格式如下:
unzip [选项参数]] [压缩文件名.zip]
选项 |
功能 |
-l |
显示压缩文件内所包含的文件 |
-t |
检查压缩文件是否损坏,但不解压 |
-v |
显示命令显示的执行过程 |
-Z |
只显示压缩文件的注解 |
-C |
压缩文件中的文件名称区分大小写 |
-j |
不处理压缩文件中的原有目录路径 |
-L |
将压缩文件中的全部文件名改为小写 |
-n |
解压缩时不要覆盖原有文件 |
-P<密码> |
解压密码 |
-q |
静默执行,不显示任何信息 |
-x<文件列表> |
指定不要处理.zip 中的哪些文件 |
-d <目录> |
把压缩文件解到指定目录下 |
其他格式的压缩与解压缩(tar)
- zip 和 unzip 这两个是命令只适用于.zip 格式的压缩和解压,其它格式的压缩和解压使用命令
tar, tar 将压缩和解压缩集合在一起,使用不同的选项参数即可。命令格式如下:
tar [选项参数] [压缩文件名] [被压缩文件名]
选项 |
功能 |
-c |
创建新的压缩文件 |
-C<目的目录> |
切换到指定的目录 |
-f<备份文件> |
指定压缩文件 |
-j |
用 tar 生成压缩文件,然后用 bzip2 进行压缩 |
-k |
解开备份文件时,不覆盖已有的文件 |
-m |
还原文件时,不变更文件的更改时间 |
-r |
新增文件到已存在的备份文件的结尾部分 |
-t |
列出备份文件内容 |
-v |
显示指令执行过程 |
-w |
遭遇问题时先询问用户 |
-x |
从备份文件中释放文件,也就是解压缩文件 |
-z |
用 tar 生成压缩文件,用 gzip 压缩 |
-Z |
用 tar 生成压缩文件,用 compress 压缩 |
- 例如,我们可使用如下两个命令分别将test文件夹压缩为
.bz2
和.gz
格式:
tar -vcjf test.tar.bz2 test #压缩为.bz2
tar -vczf test.tar.gz test #压缩为.gz
文件的查找
文件查找(find)
find
命令用于在目录结构中查找与关键信息相匹配的文件。其命令格式如下:
find [路径] [选项参数] [匹配信息]
选项 |
功能 |
-name |
按照文件名称查找,查找与 filename 匹配的文件,可使用通配符 |
-depth |
从指定目录下的最深层的子目录开始查找 |
-gid<群组识别码> |
查找符合指定的群组识别码的文件或目录 |
-group<群组名称> |
查找符合指定的群组名称的文件或目录 |
-size<文件大小> |
查找符合指定文件大小的文件 |
-type<文件类型> |
查找符合指定文件类型的文件 |
-user<拥有者名称> |
查找符合指定的拥有者名称的文件或目录 |
文件内容查找(grep)
find
命令用于在目录中搜索文件,我们有时候需要在文件中搜索一串关键字, grep
就是完
成这个功能的。grep
命令用于查找包含指定关键字的文件,如果发现某个文件的内容包含所指定的关键字,grep
命令就会把包含指定关键字的这一行标记出来。grep
命令格式如下:
grep [选项参数] [关键字] [文件列表]
grep
命令一次只能查一个关键字,命令的主要选项如下:
选项 |
功能 |
-b |
在显示符合关键字的那一列前,标记处该列第 1 个字符的位编号 |
-c |
计算符合关键字的列数 |
-i |
忽略字符大小写 |
-n |
显示序号 |
-v |
反转查找,只显示不匹配的行 |
-r |
在指定目录中递归查找 |
参考:
《正点原子-嵌入式Linux驱动开发指南》- 第二章 Ubuntu系统入门 - 2.6 Linux文件系统