文件系统结构和基础命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件系统结构和基础命令相关的知识,希望对你有一定的参考价值。

文件系统结构和基础命令

文件结构

        bin --> binnary 普通用户(可执行二进制程序)
        sbin  管理员(可执行二进制程序)
        boot  存放设备启动 引导程序(内核文件)
        dev   存放设备
        etc   存放配置文件
        home  家目录
        var   存放变化文件
        proc  系统内存的映射目录,提供内核与进程信息
ls -l 文件名   //看第一个字符
    - 普通文件(文本文件,二进制文件,压缩文件,电影,图片。。。)
    d 目录文件(蓝色)
    b 设备文件(块设备/block) 存储设备硬盘,U盘
    c 设备文件(字符设备/char)打印机,终端/dev/tty1
    s 套接字文件
    p 管道文件 (×××)
    l 链接文件(淡蓝色)
文件系统分层结构:LSB(linux Standard Base)
文件系统目录结构标准文档:FHS(Filesytem Hierarchy Standard)
                            http://www.pathname.com/fhs
扫描磁盘 echo ‘- - - ‘ > /sys/class/scsi_host/host0/scan
区分大小写有文件系统决定 
/etc/DIR_COLORS 定义了文件颜色

/dev/zero (二进制0)  /dev/null(空)   字符设备

dd if=/dev/zero of =/data/zerofile bs=1 count=1
hexdump -C / xxd 查看二进制
绝对路径:描述从/开始的全路径
相对路径:描述参考当前工作(或其他)目录,来说明路径,不以/开始
basename 基名 (文件路径最后的名字)
dirname  目录名(取文件夹目录)
/etc/rc.local 保存的是用户自定义开机引导程序
/var/log/message 保存的是系统日志信息
  • 显示当前工作目录 ---CWD
  • type 查看命令类型
  • file 查看文件类型
  • pwd -P 显示文件真实路径
  • stat 可以查看文件变更时间
文件通配符    元字符:表示特定含义,不表示字符本身

*      匹配零个或多个字符
?     匹配任意单个字符
~      当前用户家目录
~mage  用户mage家目录
~+     当前工作目录
~-     前一个工作目录
[0-9]  匹配数字范围
[a-z]  字母
[A-Z]  字母
[wei]  匹配列表中的任何一个字符
[^wei] 匹配列表中所有字符以外的字符

预定义的字符类:man 7 glob
[:digit:]: 任意数字,相当于0-9
[:lower:]: 任意小写字母
[:upper:]: 任意大写字母
[:alnum:]: 任意数字或字母
[:blank:]: 水平空白字符
[:cntrl:]: 控制(非打印)字符
[:graph:]: 图形字符
[:print:]: 可打印字符
[:punct:]: 标点符号  
[:space:]: 空白字符  
[:xdigit:]: 十六进制字符 

文件管理命令

  • cp 常用选项
    -i 覆盖前提示
    -n 不覆盖,注意两者顺序
    -r,-R 递归复制目录及内部的所有内容
    -a 归档,相当于-dR --preserv=all
    -v 具体详细信息
    -d --no-dereference --preserv=links 不复制原文件,只复制链接名
    --preserv[=ATTR_LIST]
      mode:权限
      ownership:属主属组
      all :所有
  • 清空文件
    >/boot/f1  (<清空磁盘)
  • rm -f /boot/f1 (删除文件)

  • touch 创建特殊文件夹

    touch ./-h  或者 touch -- -h
    touch ./~
  • rm 删除特殊文件或文件夹
    rm ./-h

目录操作

  • mkdir 创建目录

    • -p:存在于不报错,且可自动创新所需的路径
    • -v:显示详细信息
    • -m MODE:创建目录时直接指定权限
  • rmdir 删除空目录

    • -p:递归删除父空目录
    • -v:显示详细信息
  • rm -r 递归删除目录树

  • 批量修改文件名称:
    • rename:
      例:rename conf conf.bak *.bak

索引节点

  • inode(index node) 表中包含文件系统所有文件列表
  • 系统是通过索引节点(而不是文件名)来定位每一个文件。
  • inode是指向一个文件数据区的指针号码,一个inode对应着系统中唯一的一片物理数据区,而位于两个不同物理数据区的文件必定分别对应着两个不同的inode号码。
  • mv和inode

    如果mv命令的目标和源在相同的文件系统,作为mv命令
    用新的文件名创建对应新的目录项
    删除旧的目录条目对应的旧的文件名
    不影响inode表(除时间戳)或磁盘上的数据位置;没有数据被移动!
    如果目标和源在一个不同的文件呢系统,mv相当于cp和rm
  • cp和inode

    在CP的命令:
    分配一个空闲的inode号,在inode表中生成新条目
    在目录中创建一个目录项,将名称与inode编号关联
    拷贝数据生成的新文件
  • rm和inode
    rm命令:
    链接数递减,从而释放的inode号可以被重用
    把数据块放在空闲列表中
    删除目录项
    数据实际上不会马上被删除,担当另一个文件使用数据块时将被覆盖

节点编号被用光,系统会提示空间不足,
ls -i 查看节点编号
sherd -zu 彻底删除文件

  • -z 表示清零
  • -u 表示覆盖

软,硬链接

  • 硬链接 ln 源文件 目标文件

    本质上是相同的文件创建不同的文件名(节点编号相同)
    例: ln /data/mysql/db1 /data2/db1 ; rm -f /data/mysql/db1 
    数据库文件过大,会对数据库造成压力,将文件链接到其他目录,删除数据库原目录文件,保留其他目录文件,减小对数据库压力,然后删除其他目录链接文件。
  • 软链接 ln -s 源文件 目标文件

    通过软链接找到原始文件
    
    删除软链接目录时,不可加/,否则会删除文件夹内容
    软链接的相对路径 是相对链接文件的路径,而不是当前路径
  • 软,硬链接的区别:
    1.硬链接是同一个文件创建不同的名,软链接是不同的文件(本质)
    2.软连接可以跨设备垮分区,硬链接不支持
    3.软连接可以支持目录,硬链接不支持
    4.软连接创建的时候不增长链接数,硬链接会增长
    5.硬链接原始文件删除以后不影响链接文件,没有主次之分,软连接原始文件删除以后,链接失效
    6.文件类型不同,硬链接创建什么类型文件链接文件是什么类型,
    7.相对路径法:硬:相对于CWD, 软:相对于软链接文件的相对路径
    8.链接文件的大小:软链接的大小就是路径的字符数,硬链接大小与原文件相同

确定文件内容

  • file 查看文件类型 分析文件的头,从而了解文件是做什么用的
    magic number 魔数  描述了文件的类型
    file -b 不显示文件名称
     -f filelist 列出文件filelist中文件名的文件类型
     -F 使用指定分隔符号替换输出文件名后默认的":"分隔符
     -L 查看对应软链接对应文件的文件类型
     --help 显示命令在线帮助

面试题:

区别:

  • ln-s /data/file1 /data/file2
  • mv /data/file1 /data/file2

ln -s 文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode"链接数"不会因此发生变化。
命令 mv 移动并重命名文件,其结果不影响文件的用户数据及 inode 号,只更改文件名,文件移动前后 inode 号不变。

以上是关于文件系统结构和基础命令的主要内容,如果未能解决你的问题,请参考以下文章

Linux基础(层级结构基础命令)

Linux下基础命令

Linux目录结构和基础知识

Linux基础入门了解系统目录

Linux命令的简单使用

Linux系统基础