目录
对linux系统有过了解的应该都会有一种感觉,linux系统中有各种各样的文件,很多的操作都是通过文件进行的,所以也有人说:“linux中一切皆文件,文件几乎是linux系统的所有。”
既然这样说,那linux中到底都有哪些文件呢?这些文件都有哪些作用?对文件可以做些什么操作呢?
那就一点一点来说吧!linux系统的发行版有好几种,我这里以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文件 — 存放系统日志文件。
-
在linux命令行中可以用ls - l命令显示文件的信息,开头是由10个字符构成的字符串表示文件类型与文件权限,如下图:

其中第一个字符表示文件类型,它可以是下述类型之一:
- - 普通文件
- d 目录(文件夹)
- l 符号链接
- b 块设备文件
- c 字符设备文件
- p 命名管道(FIFO)
- s socket文件
在用 ls - l 命令显示的信息中,开头是由10个字符构成的字符串表示文件类型与文件权限,2-10个字符共9个字符表示文件的访问权限,分为3组,每组3个字符。如下所示:

第一组(2-4)表示文件所有者访问权限;
第二组(5-7)表示同组用户的访问权限;
第三组(8-10)表示其他用户的访问权限。
每一组使用3个字符分别表示设置的3种访问权限,分别是:
读权限,用“r”表示;
写权限,用“w”表示;
执行权限,用“x”表示(对于目录表示进入权限);没有设置权限用“-”表示。
文件的绝对路径,由目录的最顶层作为开始的。即从目录的最开始位置开始,直到目标所在的位置结束。简单而言就是从根目录开始算第一层。
绝对路径是由根目录“/”写起的,比如 /home/aaa/bbb
相对路径是相对于当前目录的位置而言的。可以理解为在一个目录路径中切换时,不用从文件的最开始位置开始,而是直接从某个路径下的文件路径开始切换。相对路径不是由根目录“/”写起的,比如当前文件的位置是 /home/test/test1 目录下,要到 /home/test/test2 中去,就可以使用相对路径,就是 cd ../test2。
linux中文件的切换操作可以使用以下的操作:
- 1).或者./ :当前目录;
- 2)..或者../ :切换到上层目录,可以叠加。../../../上上上层目录。
- 3)/ :切换到最顶层的目录。
- 4)~ :切换到家目录。普通用户-/home/用户名/;root用户-/root
- 查看文件信息或列出目录内容:
- ls [选项] [目录或文件]
-
- 选项:
- -a 显示指定目录下所有子目录与文件,包括隐藏文件。
- -A 显示指定目录下所有子目录与文件,包括隐藏文件。但不列出“ .”和 “ ..”。
- -i 显示文件和目录的inode编号。
- -l 以长格式来显示文件的详细信息,这个选项最常用。
- -p 在目录后面加一个“ /”。
- -R 递归式地显示指定目录的各个子目录中的文件。
- 其中:ls的使用是可以叠加的,比如下面的示例。
- ls -hl :以详细信息列出文件,并且文件的大小根据实际情况使用k、m、G进行显示;
- ls -al:以详细信息列出所有文件(叠加-a和-l)
比如用ls -l 查看的文件如下:

- 将当前工作目录切换至指定的目的目录。
- cd [目的目录]
-
- 特殊的使用方法如下:
- cd 切换至用户主目录
- cd ~ 切换至用户主目录
- cd - 切换至此目录之前所在的目录
- cd .. 切换至上级目录(在根目录使用“cd ..”还是进入根目录)
- cd ../.. 切换至上两级目录
- cd . 切换至当前目录
- 修改文件或目录的权限,该命令有两种语法,分别是文字设定法和数字设定法。如下:
- (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。
- 创建一个目录:
- mkdir [选项] 目录名称
-
- 选项:
- -m:对新建目录设置存取权限,也可以用chmod命令设置。如下:
- mkdir -m=rw- test2 。即这个可以用来建立一个有权限的新东西。
-
- -p:可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。如下:
- mkdir -p lesson/test1 。这个可以用来建立多级层次的新东西。
- 更新或新建文件:
- touch [选项] 文件或目录
-
- 说明:如果文件或目录存在就更新其建立时间,如果文件或目录不存在就创建普通文件。
-
- 新建普通文件touch。如:touch flowerHang
- 删除文件或目录:
- rm [选项] 文件或目录 ......
- 说明:该命令的功能为删除一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。执行rm指令可删除文件或目录,如欲删除目录必须加上参数“-r”,否则预设仅会删除文件。
-
- 选项:
- -f 忽略不存在的文件,从不给出提示。
- -r 指示rm将参数中列出的全部目录和子目录均递归地删除。
- -i 进行交互式删除。
- 使用示例如下:
- 1)删除普通文件,rm。如:rm flowerHang
- 2)删除文件夹。 rm work/ -r ;rmdir work/
- 3)删库跑路指令。sudo rm / -rf (坐牢死亡指令,劝君珍惜自由!)
-
- 将给定的文件或目录复制到另一个文件或目录:
- cp [选型] 源文件或目录 目标文件或目录
-
- 说明:cp命令用在复制文件或目录时,如果同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,而最后的目的地并非是一个已存在的目录,则会出现错误信息。
-
- 选项:
- -f 强行复制文件或目录,不论目标文件或目录是否已存在。
- -i 和f选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。
- -r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。
- -a 该选项通常在拷贝目录时使用,它保留链接、文件属性,并递归地拷贝目录。
- -d 拷贝时保留链接。
- 对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。
- mv [选项] 源文件或目录 目标文件或目录
-
- 说明:视mv命令的第二个参数的不同(目标文件或目录)完成命令的改名和移动功能。当第二个参数类型是文件时,mv命令完成文件或目录的重命名功能,此时源文件或目录只能有一个,它将所给的源文件或目录重命名为给定的目标文件或目录名。当第二个参数是已经存在的目录名称时,源文件或目录参数可以有多个,mv命令将各个参数指定的源文件或目录均移至目标目录中(最后一项目录)。在跨文件系统移动文件时,mv先复制,将原有文件删除,而与该文件的链接也将丢失。
-
- 选项:
- -i 交互方式操作。如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答y或n,这样可以避免误覆盖文件。
- -f 禁止交互操作。在mv操作要覆盖某已有的目标文件时不给任何指示,指定此选项后,i选项将不再起作用。
-
对嵌入式技术感兴趣的,欢迎关注微信公众号“嵌入式之入坑笔记”,一起学习讨论啊!