目录
对linux系统有过了解的应该都会有一种感觉,linux系统中有各种各样的文件,很多的操作都是通过文件进行的,所以也有人说:“linux中一切皆文件,文件几乎是linux系统的所有。”
既然这样说,那linux中到底都有哪些文件呢?这些文件都有哪些作用?对文件可以做些什么操作呢?
那就一点一点来说吧!linux系统的发行版有好几种,我这里以ubuntu系统环境进行说明。
1、ubuntu都有哪些系统文件?
如果要查看ubuntu的系统文件的话,需要将当前的目录定位到系统根目录(/)下,命令行的话通过ls 指令就可以查看到。如下图所示:
这些文件分别是什么呢?如下说明:
1)bin文件 — 二进制文件,存放的是执行文件;
2)boot文件 — 存放系统固件(镜像)的文件;
3)cdrom文件 — 挂载cdrom的目录,当linux系统插入光盘的时候,就可以通过访问这个目录访问到光盘里面的内容。
4)dev文件 — 驱动结点的目录。
5)etc文件 — 存放系统配置文件。
6)home文件 — 用户的目录,做项目开发一般都在home目录里面。
7)lib文件 — 存放库的目录。
8)lost+found文件 — 丢失寻找目录。
11)media文件 — 插sd卡或者u盘就会挂载在这个文件夹下。
12)mnt文件 — 用户挂载目录。
13)opt文件 — 用来放编译器或者一些第三方库和命令。
14)proc文件 — 进程状态的目录。
15)root文件 — 超级用户的家目录。
16)run文件 — 运行时产生的文件都放在这里。
17)sbin文件 — 超级用户的专属命令就放在这里。
18)srv文件 — 是一些网路服务启动之后,这些服务所需要取用的资料目录。
19)sys文件 — 系统的信息目录。
20)tmp文件 — 临时目录,掉电后数据全部丢失。
21)usr文件 — 最庞大的目录,要用到的应用程序和文件几乎都在这个目录。
22)var文件 — 存放系统日志文件。
2、linux文件类型 & 访问权限
2.1、linux的文件类型
在linux命令行中可以用ls - l命令显示文件的信息,开头是由10个字符构成的字符串表示文件类型与文件权限,如下图:
其中第一个字符表示文件类型,它可以是下述类型之一:
- 普通文件
d 目录(文件夹)
l 符号链接
b 块设备文件
c 字符设备文件
p 命名管道(FIFO)
s socket文件
2.2、linux文件的访问权限
在用 ls - l 命令显示的信息中,开头是由10个字符构成的字符串表示文件类型与文件权限,2-10个字符共9个字符表示文件的访问权限,分为3组,每组3个字符。如下所示:
第一组(2-4)表示文件所有者访问权限;
第二组(5-7)表示同组用户的访问权限;
第三组(8-10)表示其他用户的访问权限。
每一组使用3个字符分别表示设置的3种访问权限,分别是:
-
读权限,用“r”表示;
-
写权限,用“w”表示;
-
执行权限,用“x”表示(对于目录表示进入权限);没有设置权限用“-”表示。
3、linux中的文件路径
3.1、绝对路径
文件的绝对路径,由目录的最顶层作为开始的。即从目录的最开始位置开始,直到目标所在的位置结束。简单而言就是从根目录开始算第一层。
绝对路径是由根目录“/”写起的,比如 /home/aaa/bbb
3.2、相对路径
相对路径是相对于当前目录的位置而言的。可以理解为在一个目录路径中切换时,不用从文件的最开始位置开始,而是直接从某个路径下的文件路径开始切换。相对路径不是由根目录“/”写起的,比如当前文件的位置是 /home/test/test1 目录下,要到 /home/test/test2 中去,就可以使用相对路径,就是 cd ../test2。
linux中文件的切换操作可以使用以下的操作:
1).或者./ :当前目录;
2)..或者../ :切换到上层目录,可以叠加。../../../上上上层目录。
3)/ :切换到最顶层的目录。
4)~ :切换到家目录。普通用户-/home/用户名/;root用户-/root
4、linux中文件的基本操作指令
4.1、ls 查看命令
查看文件信息或列出目录内容:
ls [选项] [目录或文件]
选项:
-a 显示指定目录下所有子目录与文件,包括隐藏文件。
-A 显示指定目录下所有子目录与文件,包括隐藏文件。但不列出“ .”和 “ ..”。
-i 显示文件和目录的inode编号。
-l 以长格式来显示文件的详细信息,这个选项最常用。
-p 在目录后面加一个“ /”。
-R 递归式地显示指定目录的各个子目录中的文件。
其中:ls的使用是可以叠加的,比如下面的示例。
ls -hl :以详细信息列出文件,并且文件的大小根据实际情况使用k、m、G进行显示;
ls -al:以详细信息列出所有文件(叠加-a和-l)
比如用ls -l 查看的文件如下:
4.2、cd 切换文件路径
将当前工作目录切换至指定的目的目录。
cd [目的目录]
特殊的使用方法如下:
cd 切换至用户主目录
cd ~ 切换至用户主目录
cd - 切换至此目录之前所在的目录
cd .. 切换至上级目录(在根目录使用“cd ..”还是进入根目录)
cd ../.. 切换至上两级目录
cd . 切换至当前目录
4.3、chmod 文件权限修改命令
修改文件或目录的权限,该命令有两种语法,分别是文字设定法和数字设定法。如下:
(1)文字设定法:chmod [操作对象][操作符] [权限模式] 文件/目录名
①操作对象
u 表示“用户(user)”,即文件或目录的所有者。
g 表示“同组(group)用户”,即与文件所有者有相同组ID的所有用户。
o 表示“其他(others)用户”。
a 表示“所有(all)用户”。它是系统默认值。
②操作符
+ 添加某个权限。
- 取消某个权限。
= 赋予给定权限并取消其他所有权限(如果有的话)。
③权限模式
r 可读。
w 可写。
x 可执行。
说明:权限模式可以是3中权限的组合,当时组合时需要指明操作对象。
(2)数字设定法:chmod [权限模式] 文件/目录名
①权限模式:将每一组权限的rwx看成二进制,二进制为1表示有此权限,二进制为0表示没有此权限,那就有3组2进制。
例如,将文件test文件修改为r-xrw--wx,二进制为101 110 011,十进制为563,则命令为chmod 563 test。
4.4、mkdir 创建目录(文件夹)
创建一个目录:
mkdir [选项] 目录名称
选项:
-m:对新建目录设置存取权限,也可以用chmod命令设置。如下:
mkdir -m=rw- test2 。即这个可以用来建立一个有权限的新东西。
-p:可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。如下:
mkdir -p lesson/test1 。这个可以用来建立多级层次的新东西。
4.5、touch 新建文件
更新或新建文件:
touch [选项] 文件或目录
说明:如果文件或目录存在就更新其建立时间,如果文件或目录不存在就创建普通文件。
新建普通文件touch。如:touch flowerHang
4.6、rm 删除指令
删除文件或目录:
rm [选项] 文件或目录 ......
说明:该命令的功能为删除一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。执行rm指令可删除文件或目录,如欲删除目录必须加上参数“-r”,否则预设仅会删除文件。
选项:
-f 忽略不存在的文件,从不给出提示。
-r 指示rm将参数中列出的全部目录和子目录均递归地删除。
-i 进行交互式删除。
使用示例如下:
1)删除普通文件,rm。如:rm flowerHang
2)删除文件夹。 rm work/ -r ;rmdir work/
3)删库跑路指令。sudo rm / -rf (坐牢死亡指令,劝君珍惜自由!)
4.7、cp 复制粘贴指令
将给定的文件或目录复制到另一个文件或目录:
cp [选型] 源文件或目录 目标文件或目录
说明:cp命令用在复制文件或目录时,如果同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,而最后的目的地并非是一个已存在的目录,则会出现错误信息。
选项:
-f 强行复制文件或目录,不论目标文件或目录是否已存在。
-i 和f选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。
-r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。
-a 该选项通常在拷贝目录时使用,它保留链接、文件属性,并递归地拷贝目录。
-d 拷贝时保留链接。
4.8、mv文件/目录改名或移动
对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。
mv [选项] 源文件或目录 目标文件或目录
说明:视mv命令的第二个参数的不同(目标文件或目录)完成命令的改名和移动功能。当第二个参数类型是文件时,mv命令完成文件或目录的重命名功能,此时源文件或目录只能有一个,它将所给的源文件或目录重命名为给定的目标文件或目录名。当第二个参数是已经存在的目录名称时,源文件或目录参数可以有多个,mv命令将各个参数指定的源文件或目录均移至目标目录中(最后一项目录)。在跨文件系统移动文件时,mv先复制,将原有文件删除,而与该文件的链接也将丢失。
选项:
-i 交互方式操作。如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答y或n,这样可以避免误覆盖文件。
-f 禁止交互操作。在mv操作要覆盖某已有的目标文件时不给任何指示,指定此选项后,i选项将不再起作用。
对嵌入式技术感兴趣的,欢迎关注微信公众号“嵌入式之入坑笔记”,一起学习讨论啊!