前面的文章稍微提起过Linux的文件系统,并提到文件挂载的概念,这篇文章,咱们详细的讨论一下Linux的文件系统以及挂载的概念,并介绍一些简单的对文件的操作
1.windows与linux的磁盘区别
我们日常接触使用windows系统较多,知道Windows的磁盘可以分为很多块,有C盘,D盘,E盘等等,各个磁盘之间相互独立,互不干扰,且根据自己的需求来分,很多人喜欢开个D盘来放自己的东西,防止增删时影响到C盘里的系统文件,每一个磁盘都内置有文件系统,使存储的文件信息更加直观的展现给用户看,不然都是一些二进制数,我们是看不懂的
系统的文件信息都被默认放到了C盘里,个人信息被放到了D盘,进入C,D盘里能看到一些文件,文件里可能还有其他文件,画出来就像倒着的树状图一样,称为倒树状结构,最上面的(C:) 与 ( D:) 称为树根。因为C,D互不干扰,分别为两个不同的树根,因此Windows采用的文件结构是多根倒树状结构。
下面我们再聊聊linux的文件结构,不同于windows,linux只有一个树根,即 ' / ' 根目录,其他所有的文件都在这个根目录的下面
那么linux的磁盘空间该如何分配呢,一般会划出一块很大的空间直接给 ' / ',但如果想细分的话,可以指定单独的一块空间给某个目录,那这个目录的数据都会存放到这块单独的空间里,这个目录也被称为挂载点。例如,我们将一大块空间分给' / '之后,再拿出一小块空间,把这一小块空间分配给 '/boot ' ,那么'/boot '就被称为一个挂载点,以后'/boot '里的数据都会存放到这一小块空间里,不会占用' / '的空间。我们外插入一个u盘时,Linux里有专门放u盘数据的文件,插入后,u盘会挂载到这个文件上面,进入这个文件,就能够访问u盘里的数据。
2.Linux的文件目录信息
下面说说Linux的一些常见目录及所包含的信息
/root :管理员的家目录
/home:普通用户的家目录
/etc:系统的配置文件
/var:系统服务的数据
/tmp:系统临时文件目录
/usr/bin:用户命令
/usr/sbin:管理员命令
/boot:系统启动时所需要的文件
/sys:反应系统当前运行状态
文件的命名规则:
除了字符' / ',其他字符都是可以用来命名的,Linux的文件命名是区分大小写的,且文件名的长度不能超过255个字符
文件所在的路径:
绝对路径:以' / '开始的目录,是文件位置的全路径,在任何位置都可以使用
(从根开始一直到要找的文件的路径)一般配置信息时会用到
相对路径:不以' / '开始的目录,只有在特定的位置才能使用
3.Linux对文件及目录进行操作的一些命令
cd:改变目录
cd 后面接上绝对路径或者相对路径,就移动到这个目录下面。输入命令pwd,可以查看当前所在的目录
输入命令 cd .. 会移动到当前目录的上一级目录,直接输入cd 或 cd ~ 会移动到当前用户的主目录,如果在~后面接上用户名,会移动到这个用户的主目录下
输入命令 cd - 能够实现两个热点路径的快速切换
cp:拷贝文件和目录
通过man帮助,我们查到CP的语法格式为:
cp [option]... SOURCE DEST
[option]就是可接的一些选项了,SOURCE是我们要复制的文件或目录,DEST表示要复制到的目的地,SOURCE可以有多个文件,而DEST目的地只能有一个。
上图的操作是把 /home 目录下的 practice 复制到 /root 目录下的 practice-2,因为 practice 和 practice-2 都是文本文件,因此会把 practice -2 中的内容都替换成 practice。如果目的地是一个目录,那么会把这个文件放到目的地目录里,如果目标文件不存在,也就是practice-2 不存在的话,会创建一个practice-2文件,并把practice的内容复制到里面。
mv:移动,重命名文件和目录
语法格式和cp是类似的
上图就是把/home里的 haha 文件移动到 /root 里
mv还有重命名的作用,接上要改名的文件,后面再跟上要改的名字就能完成改名,上图就是我们把haha文件改名为kaka。注意,要改的名字不能和当前文件夹里的文件重名,否则会导致内容覆盖。
创建和删除文件
创建文件使用命令touch,如果要创建的文件已经存在,则更新该文件的时间戳
通过命令stat 可以查看一个文件的时间戳
时间戳:
access time:文件最后一次被访问的时间 (访问时间)
modify time:文件内容最后一次被修改的时间 (修改时间)
change time:文件状态最后一次发生变更的时间 (状态时间)
删除文件命令 rm 即 remove
相关选项:-f 强制删除 ,-r 递归删除,即删除目录里的全部文件,-i交互式,即删除有提示
创建及删除目录
创建目录的命令为 mkdir
要创建多级目录可以使用选项 -p ,-pv可以查看每一级目录被创建的过程。
rmdir只能用来删除空目录,想删除某个目录的话,不能在要删除的目录下使用 rm,这样是识别不到要删除的目录的,要退回上一级目录或者使用绝对路径,非要在要删除的目录下删除该目录的内容,可以在使用rm 时加上 *,代表删除当前目录下的所有内容,但是不包括当前目录
简单来说就是你可以使用rm * 删除当前目录下的所有内容,但是删不掉当前目录,要么退回到上一级目录去删,要么就使用绝对路径
文件属性
命令 file或是 stat 可以查看指定文件的类型属性,文本文件,压缩文件等
文件的压缩
Linux的文件压缩命令有很多,比较常见的是zip 和 tar ,zip是压缩命令,unzip是解压命令,tar是集压缩和解压于一体的命令,通过加不同的选项实现不同的功能
tar -t 不打开压缩文件,直接查看压缩包里的内容, -v 压缩/解压时,显示包里的内容
-C 解压到指定路径
zip 压缩包名 待压缩的文件或目录
如上图,压缩test目录,事实上我犯了一个错误,因为我仅仅只是压缩了目录,并没有压缩目录里的文件,要想连目录里的文件一同压缩,就要加上递归选项 -r
文件的搜索
通过命令 find 来实现文件的搜索,具体的用法大家可以查阅一下,因为这个命名有关的选项还是蛮多的
需要注意的是这个命令不仅会在内存中搜索,还会跑到磁盘中搜索,搜索效果挺好,但是也导致效率并不是很高,大家斟酌使用吧