欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > linux >内容正文

linux

Linux入门——文件管理

发布时间:2025/3/19 linux 55 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Linux入门——文件管理 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

 

我们知道Linux有一个思想“一切都是一个文件(包括硬件)”,这是一篇关于基础文件管理的心得

文件系统结构元素

 

                                                  文件系统与目录结构

Linux文件的特点:

  • 文件名区分大小写
  • 以 . 开头文件为隐藏文件(可通过ls  –a  查看
  • 文件有两类数据
  •                         元数据:metadata   (文件属性:类型,权限,从属关系,大小,时间,等等)

                            数据:data  (文件本身内容)

             4.文件名最长255个字节

             5.文件的划分

                           -:普通文件             d: 目录文件          b: 块设备

                            c: 字符设备             l: 符号链接文件      p: 管道文件pipe

                            s: 套接字文件socket

              

    Cd:改变目录

    切换至上一级目录:cd ..

    切换至当前用户主目录:cd (回到根目录)

    切换至以前的工作目录:cd -(只能在两个目录间切换)

    创建和查看文件

    Ls

    ls (list): 列出文件名 ,若不指定文件名或目录名,则列出当前 目录,默认自动展开列出一级子目录的文件名

    ls -a 显示所有文件,包含隐藏文件

    ls  -l = (ll) 列出文件的类型、权限、链接数、owner、group、大小,时间,名字

    ls -d 列出目录但不展目录

    ls  -R  目录递归通过(不举例子了,我曹列个没完没了)

    stat

    stat   文件名    查看文件的状态,我们主要关注的是三个时间戳::

    access time:访问时间,atime,读取文件内容(访问时改变)

    modify time: 修改时间, mtime,改变文件内容(文件本身内容改变时改变)

    change time: 改变时间, ctime,元数据发生改变(文件元数据改变时改变)

    Touch

    Touch   文件名    若文件不存在,则创建一个空文件,若文件存在则更新时间戳

    Mkdir

     mkdir    目录名  

    mkdir  -p  a/b/c/d/e 连续创建多级目录

     

    复制和删除文件

    Cp

    cp 目标文件   目的文件(若目的文件不存在则创建改文件,但只能创建一级文件,两级不行:

    cp -r /etc /app/123/234/456  会报错)

    cp  -r或-R  递归复制,如源包含目录,一定要递归才能复制

    cp  -d 当复制的源是一个软链接时,复制出的文件,也是软链接,若不加d,则复制完整的源文件

    cp  -p 保留复制文件的 权限,owner,group,时间 戳不变

    cp  -v  显示复制详细信息

    rm

    rm –rf * 强制删除所有文件

    rm –rf / 慎用

    索引节点

    在当前文件系统中,文件分为两部分: 块和节点 ,块内存储文件的数据,节点存储文件的元数据

    一个节点(inode)是在一个表项,包含有关文件的信息(元数据),包括:

             1.文件类型,权限,UID,GID

             2.链接数(指向这个文件名路径名称个数)

             3.该文件的大小和不同的时间戳

             4.指向磁盘上文件的数据块指针

             5.有关文件的其他数据

    对于一个文件来说有且只有一个节点(inode节点就好比文件的身份证)

    Inode只有126B(现在好像大了是256B)而一个节点大小是2B,inode是如何存储文件的呢

     

     

    Inode分为 12 直接指针,一个间接指针, 一个双重间块接指针,一个三重间接块指针

    间接指针指用一个块去存储Inode的指针

    我们假设一个block(块)大小是1K,那么我们存储文件的在最大容量是:

    (12*1K +256*1k+256*256*1K+256*256*256*1K)/1024/1024=16G

    如果你这个磁盘存储的文件比较大可以扩大block容量提升性能(毕竟你的指针就少了)

    目录的实质:

    我们要明白文件的名字是不可能唯一的,但文间的inode号是唯一的

    在block中是不存在子文件这一说法的,所有文件都是平级关系,目录的inode中存储目录的元数据,目录的block存储的是子文件的名字和子文件的inode号

              文件引用一个是inode号

              人是通过文件名来引用一个文件

              一个目录是目录下的文件名和文件inode号之间的映射

     

     

    CP命令的实质:

             分配一个空闲的inode号,在inode表中生成新条目

             在目录中创建一个目录项,将名称与inode编号关联

             拷贝数据生成新的文件

    Mv命令的实质

    1.如果mv命令的目标和源在相同的文件系统,作为mv命令

               用新的文件名创建对应新的目录项

               删除旧目录条目对应的旧的文件名

              不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动!•

    2.如果目标和源在一个不同的文件系统,mv相当于cp和rm

    rm命令的实质:

         链接数递减,从而释放的inode号可以被重用

          把数据块放在空闲列表中

          删除目录项

          数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖。

    硬链接

    我们做个试验

    1.我们创建两个目录dir1,dir2,以及一个文件a并向其输入内容hi

    2.在dir1中创建一个a的硬链接b,dir2创建一个a的硬链接b,并查看ls –iRl

    3.删除a(此时b,c内容不变)

    4.修改dir1中的b(此时c中的内容也发生改变)

    还是那句话一个文件只有一个inode号只要inode号不变无论他有多少名字都是同一个文件,就好比人可以有多个名字,但只有一个身份证号

    用一个形象的例子来表示硬链接,a要给c打电话,但他没有c的电话,b有,b告诉a电话号码,以后a再去联系c就不需要b了

    我们亦可以了解到

    1.硬链接一旦创建成功,则没有源和目的文件关系

    2.硬链接必须在相同的分区下

    3.硬链接不能对目录创建

    4.目录的硬链接数包含目录自身的名字,以及 . 和子目录里的 ..

    软连接

    同样我们也举个例子

    1在dir1 创建b的软连接b.txt通过相对路径

    2在dir1 创建b的软连接b1.txt通过绝对路径,并查看

    3删除b(b.txt,b1.txt都不可用),并查看

    4重新创建一个b并输入hello,并查看(都可用)

    这就好a要给c打电话,但他没有c的电话,b有,b用自己手机把c号码拨通后给了a,以后a再去联系c依旧需要b

    1.软连接就相当于windos下快捷方式

    2.软链接可以跨分区

    3.可以相对路径 ,也可以绝对路径,在创建相对路径时,推荐进入到最终目录,再创建

    4.删除源,软链接不可用,同时软连接不关心源是什么,只要有源就行

    5.软连接存储的是地址

    6.软连接相当于创建一个新文件

     

     

    转载于:https://www.cnblogs.com/angge/p/9308942.html

    总结

    以上是生活随笔为你收集整理的Linux入门——文件管理的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。