Linux文件系统

目录

文件系统的层级结构标准 FHS

常见的目录和文件

/etc 系统主要的配置文件存放目录

/proc 文件系统         

/var 系统在运行中内容不断发生改变的文件

Linux文件目录常用管理命令

mkdir 创建目录

more less 逐屏显示文件内容(适合大文件)

cat 打印文件内容的标准输出(适合不超过20行的小文件)

stat 查看文件的详细属性信息

touch 改变指定文件的访问时间和修改时间创建文件

grep 过滤文本

diff 比较文件的差异

rm 删除文件或者目录或者子文件子目录

mv 文件/目录改名或者更改存储位置

cp 拷贝

ln 在文件或目录之间创建连接的命令

file 识别文件内容类型

split 文档分割命令  默认是按照每1000行进行分割

Linux文件系统 inode  block  superblock

Linux文件删除原理

Linux文件处理工具

cut 文件切割

sort 用于字段排序

uniq 去重   指排序过之后的去重,必须是相邻重复行才可以去重

wc 文件中的字符、行数等等的统计

文件内容搜索工具

文件搜索命令

which 查找可执行文件    依赖PATH

whereis 查看文件位置

配置yum仓库

locate   初次安装 执行updatedb创建数据库

find   实时查找,通过遍历指定的起始路径下文件系统层级结构完成文件查找


文件系统的层级结构标准 FHS

定义Linux系统中主要的目录和存放的内容

Linux操作系统中,所有的文件和目录都被组织成以一个根节点开始的倒置的树状结构

     [root@localhost /]# ls
     bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
     boot  etc  lib   media  opt  root  sbin  sys  usr

/ :根目录 整个文件系统的起始节点

/bin :用户在单用户模式下必须具备的二进制命令文件

/dev :必要的设备文件目录

/etc :系统配置文件

/home :普通用户家目录

/lib :依赖库

/lib64 :库文件 Glibc

/mnt :临时挂载点

/media :临时挂载点 可以热插拔的介质

/proc :虚拟的一个文件系统,系统启动后会将进程和内核信息以文件形式映射到系统上

/run :运行时变量数据 从本次启动到现在的系统信息

/srv :提供特定站点数据

/tmp :所有用户可以用来存放临时文件的目录

/var :系统在运行中内容不断发生改变的文件

/boot :boot lodeer文件

/opt :可选的应用程序包

/root :root用户家目录

/sbin :系统可执行的二进制命令文件

/sys :连接到计算机上的设备信息

/usr :用户的一些数据

常见的目录和文件

/etc 系统主要的配置文件存放目录

/etc/bashrc :用来定义系统范围内的函数和别名

/etc/crontab :计划任务的配置文件

/etc/fstab :记录系统中开机启动时所要自动挂载的相关文件系统列表

/etc/group :记录系统用户组的基本信息

/etc/gshadow :记录用户组密码

/etc/hosts :记录主机名和ip

/etc/issue :用户在登录系统前显示的信息

/etc/passwd :用户的基本信息

/etc/shadow :用户的密码信息

/etc/login.defs :设置用户账号的设置信息,再添加新用户时根据这个文件生成相应的显示内容

/etc/skel :添加新用户时将此目录中拷贝/home中并修改目录名为用户名

/etc/profile :每个用户的环境变量信息

/etc/profile.d :包含/etc/profile中需要执行的脚本

/etc/ssh :ssh服务配置文件

/etc/yum.repos.d :里面的配置文件用来连接系统和实际库 (yum仓库配置文件目录)

/proc 文件系统         

/proc/bus :一些总线设备,USB的设备也记录在此

/proc/cpuinfo :处理器信息 如类型,制造商,型号,功能

/proc/net :网络协议状态信息

/proc/dma :显示当前使用的DMA通道

/proc/sys :存储内核运行的参数

/proc/uptime :系统启动的时间长度

/proc/ksyms :核心符号表

/var 系统在运行中内容不断发生改变的文件

/var/cache :应用程序本身运行过程中产生的一些暂存文

/var/lib :程序本身执行的过程中,需要使用到数据文件放置的目录

/var/local :存放安装程序的可变数据(系统管理员安装的程序)   

/var/lock :锁定文件

/var/log :各种程序的日志文件

/var/run :保存在下一次系统引导有效的关于系统的信息文件

Linux文件目录常用管理命令

mkdir 创建目录

     mkdir [OPTION]... DIRECTORY...

     -p :递归创建

     -v :显示创建过程

          [root@localhost tmp]# mkdir -pv one/two
          mkdir: created directory ‘one’
          mkdir: created directory ‘one/two’

  • 创建以下目录
  • mylinux
  •      bin 
  •      sbin
  •      usr
  •            bin 
  •            sbin
  •            local
  •      etc
  •            sysconfig
  •      media

          [root@localhost tmp]# mkdir -pv       mylinux/{bin,sbin,usr/{bin,sbin,local},etc/{sysconfig},media}
          mkdir: created directory ‘mylinux’
          mkdir: created directory ‘mylinux/bin’
          mkdir: created directory ‘mylinux/sbin’
          mkdir: created directory ‘mylinux/usr’
          mkdir: created directory ‘mylinux/usr/bin’
          mkdir: created directory ‘mylinux/usr/sbin’
          mkdir: created directory ‘mylinux/usr/local’
          mkdir: created directory ‘mylinux/etc’
          mkdir: created directory ‘mylinux/etc/{sysconfig}’
          mkdir: created directory ‘mylinux/media’

more less 逐屏显示文件内容(适合大文件)

     more [options] file [...]
     -num :一次显示num行

     +num :从第num行开始显示
操作命令:

     空格键 向下滚一屏

     B 返回上一屏

cat 打印文件内容的标准输出(适合不超过20行的小文件)

     cat [OPTION]... [FILE]...

          [root@localhost tmp]# cat file
          Hello Word!

stat 查看文件的详细属性信息

     stat [OPTION]... FILE...
          [root@localhost tmp]# stat file
          File: ‘file’
          Size: 12              Blocks: 8          IO Block: 4096   regular file
          Device: 802h/2050d      Inode: 9151837     Links: 1
          Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
          Context: unconfined_u:object_r:user_tmp_t:s0
          Access: 2022-01-21 10:14:47.846804119 +0800
          Modify: 2022-01-21 10:08:05.310826736 +0800
          Change: 2022-01-21 10:14:47.846804119 +0800
          Birth: -

touch 改变指定文件的访问时间和修改时间创建文件

若没有文件则touch file创建文件 若已经拥有file文件则为修改文件

     touch [OPTION]... FILE...

     -a :只修改access time(访问时间)

          [root@localhost tmp]# touch -a file
          [root@localhost tmp]# stat file
          File: ‘file’
          Size: 12              Blocks: 8          IO Block: 4096   regular file
          Device: 802h/2050d      Inode: 9151837     Links: 1
          Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
          Context: unconfined_u:object_r:user_tmp_t:s0
          Access: 2022-01-21 10:14:47.846804119 +0800
          Modify: 2022-01-21 10:08:05.310826736 +0800
          Change: 2022-01-21 10:14:47.846804119 +0800
          Birth: -
     -d :指定时间

     -r :file 指定使用file的时间戳去更新文件

grep 过滤文本

     grep [OPTIONS] PATTERN [FILE...]
     grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

diff 比较文件的差异

     diff [OPTION]... FILES
          [root@localhost tmp]# diff file file1
          1c1
          < Hello Word!
          ---
          > Linux!!!

     -c :显示全部内文,并表处不同之处

     -q :仅显示有无差异,不显示详细的信息     

     -y :以并列的方式显示文件的异同之处
          [root@localhost tmp]# diff file file1 -y
          Hello Word!                                                   | Linux!!!

rm 删除文件或者目录或者子文件子目录

     rm [OPTION]... FILE...
     -f :强制先删除,删除不给提示

     -i :交互式删除,删除给提示
          [root@localhost tmp]# rm -i file
          rm: remove regular file ‘file’?

     -r(-R) :递归删除 删除子文件子目录
          [root@localhost tmp]# rm -rf studyone

     -v :显示详细信息

mv 文件/目录改名或者更改存储位置

     mv [OPTION]... [-T] SOURCE DEST
     mv [OPTION]... SOURCE(从哪来)/文件名... DIRECTORY(到哪去)
     mv [OPTION]... -t DIRECTORY SOURCE...
     -b :当目标文件存在时,先备份在覆盖
          [root@localhost tmp]# mv -b /mnt/study /tmp/

     -f :强制覆盖
          [root@localhost tmp]# mv -bf /mnt/123 /tmp/

     -i :交互式移动

     -t :先指定目标 在指定源文件

          [root@localhost tmp]# mv -t /tmp/ /mnt/file

cp 拷贝

     cp [OPTION]... [-T] SOURCE DEST
     cp [OPTION]... SOURCE (从哪来)/文件名... DIRECTORY(到哪去)
     cp [OPTION]... -t DIRECTORY SOURCE...

          [root@localhost tmp]# cp /tmp/file /mnt

     -i :交互式复制

     -f :强制覆盖

     -r :递归复制

ln 在文件或目录之间创建连接的命令

     ln [OPTION]... [-T] TARGET LINK_NAME   (1st form)
     ln [OPTION]... TARGET                  (2nd form)
     ln [OPTION]... TARGET... DIRECTORY     (3rd form)
     ln [OPTION]... -t DIRECTORY TARGET...  (4th form)

     链接文件

          硬链接:通过inode索引节点号来进行连接

          软链接:类似于windows上的快捷方式 

          [root@localhost tmp]# ln file file_hard
     -s  创建软链接
          [root@localhost tmp]# ln -s file file_sort

          [root@localhost tmp]# ls -li
          total 12
          8830599 -rw-r--r--. 2 root root 17 Jan 22 11:36 file
          8901649 -rw-r--r--. 1 root root 51 Jan 22 11:52 file1
          8830599 -rw-r--r--. 2 root root 17 Jan 22 11:36 file_hard
          8392329 lrwxrwxrwx. 1 root root  4 Jan 22 19:45 file_sort -> file

file 识别文件内容类型

     file [-bchiklLNnprsvz0] [--apple] [--mime-encoding] [--mime-type] [-e testname] [-F separator] [-f namefile] [-m magicfiles] file ...

     file -C [-m magicfiles]
     file [--help]

          [root@localhost tmp]# file file1
          file1: ASCII text

     -f  file :读取文件file中文件列表,并查看文件内容类型,而非查看file

          [root@localhost tmp]# file -f file
          /etc/fstab: ASCII text
        /bin/mv:    ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=3d1659181a1bdf21b51208da69474f5db5b35d41, stripped

-b:不显示文件名

split 文档分割命令  默认是按照每1000行进行分割

-b:指定每一个文件的大小

          [root@localhost tmp]# spilt -b 50K file

-d:以数字作为后缀   -a 指定后缀长度

          [root@localhost tmp]# spilt -b 50k file -d -a 2

Linux文件系统 inode  block  superblock

inode:记录文件的属性信息,一个文件占用一个inode,同时记录文件的内容存放的block号码

block:实际记录文件内容的磁盘空间,不同文件大小,占用不同数量的block  一般一个block是4k大小

superblock:记录文件系统整体信息,包括inode/block的总量,使用量,剩余量  文件系统类型以及文件系统相关信息

磁盘的容量由inode和block同时决定  

Linux文件删除原理

两个link计数器

i_count:调用的次数

i_nlink:文件的链接次数(硬链接)

对于rm命令而言,实际上是减少i_nlink

i_count=0&&i_nlink=0

Linux文件处理工具

cut 文件切割

     cut OPTION... [FILE]...

     -b:以字节单位进行切割

          [root@localhost tmp]# cat file | cut -b 3,11
          lo

     -c:以字符单位进行切割

     -d:自定义分隔符

     -f:与-d一起使用,指定显示那个区域

          [root@localhost tmp]# cat file | cut -d" " -f 3
          word

sort 用于字段排序

     sort [OPTION]... [FILE]...
     sort [OPTION]... --files0-from=F
          [root@localhost tmp]# cat file1
          23asdasfdv:85asfasd:555
          66adafasd:99asxzv:888
          54acvxbdf:33safsfs:777

     -n:使用纯数字进行排序

          [root@localhost tmp]# sort -n file1
          23asdasfdv:85asfasd:555
          54acvxbdf:33safsfs:777
          66adafasd:99asxzv:888

     -r:反向排序

     -u:去重

     -t:指定分隔符

     -k:与-t一起使用指定以那个域来排序

          [root@localhost tmp]# sort -t ":" -f 2 file1

     -o  filename :output,结果输出到文件

uniq 去重   指排序过之后的去重,必须是相邻重复行才可以去重

     uniq [OPTION]... [INPUT [OUTPUT]]

     -c:显示出现的次数

          [root@localhost tmp]# uniq file -c

     -d:只显示重复的行

     -D:显示所有重复行

     -i:忽略大小写

     -u:只输出唯一的行

     -s:跳过前几个字符

     -w:忽略第几个字符以后的内容

wc 文件中的字符、行数等等的统计

     wc [OPTION]... [FILE]...
     wc [OPTION]... --files0-from=F

          [root@localhost tmp]# wc file
          3  8 45 file

     -l:统计行数

     -L:统计最长行的长度

     -c:统计字节数

          [root@localhost tmp]# wc -c file
          45 file

     -w:统计字数

     -m:统计字符数

文件内容搜索工具

文本处理工具三剑客  grep  sed  awk

正则表达式:由一类特殊的字符及文本编写成的一种模式,其中的字符和文本不代表

字面意思,二是表示控制或者通配的功能。

     grep [OPTIONS] PATTERN [FILE...]
     grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

          [root@localhost ~]# grep "root" /etc/passwd
          root:x:0:0:root:/root:/bin/bash

     --color=auto: 对匹配到的字符做高亮显示,

     -i:忽略大小写

     -o:仅显示匹配到的字符串

     -E:使用扩展正则表达式

     -n:显示行号

     -v:显示不能被模式匹配到的行

     -A num:后num行

     -B num:前num行

     -C num:前后num行

     基本正则表达式

         元字符:

             字符匹配

             .:匹配任意单个字符

             []:匹配指定范围内的任意单个字符

             [^]:匹配指定范围外的任意单个字符

             [0-9] 所有数字

             [a-z] aAbB......z   

             [A-Z] AbB......zZ

             [[:lower:]]  小写字母

             [[:upper:]]   大写字母

             [[:digit:]]   数字

             [[:alpha:]]   所有字母

             [[:punct:]]   标点符号

             [[:alnum:]]   数字+字母

             [[:space:]]   空白字符

             [^[:lower:]]  除小写字母

                  [root@localhost ~]# grep "r[[:alpha:]][[:alpha:]]t" /etc/passwd
                  root:x:0:0:root:/root:/bin/bash
                  operator:x:11:0:operator:/root:/sbin/nologin

             匹配次数

             *:匹配其前面的字符任意次  0次1次或者多次

             .*:匹配任意长度的任意字符

             \?:匹配其前面的字符0次或者1次

             \+:匹配其前面的字符1次或者多次

             \{m\}:匹配其前面的字符m次

             \{m,n\}:匹配其前面的字符至少m次 至多n次

             \{0,n\}:至多n次

             \{m,\}:至少m次

             位置锚定

             ^:行首锚定,用于模式的最左侧

                  [root@localhost ~]# grep "^root" /etc/passwd
                  root:x:0:0:root:/root:/bin/bash

             $:行尾锚定,用于模式的最右侧

             ^$:空行

             ^[[:space:]]$:空行,包含空白字符的行

             ^pattern$:用pattern来匹配整行

             \< 或者\b:词首锚定,用于单词的左侧

             \> 或者\b:词尾锚定,用于单词的右侧

             \<word\>:匹配一个完整单词

                [root@localhost ~]# grep "\<root\>" /etc/passwd
                root:x:0:0:root:/root:/bin/bash
                operator:x:11:0:operator:/root:/sbin/nologin

             分组及引用

             \(\):将一个或者多个字符捆绑在一起,当作一个整体来处理

             \(\(\(\)\)\)

             \1

             \2

             \3

             .....

文件搜索命令

which 查找可执行文件    依赖PATH

     which [options] [--] programname [...]

          [root@localhost ~]# which cd
          /usr/bin/cd

whereis 查看文件位置

     whereis [options] [-BMS directory... -f] name...

          [root@localhost ~]# whereis cd
          cd: /usr/bin/cd /usr/share/man/man1/cd.1.gz

     -b:只显示文件位置

     -m:只显示man手册位置

          [root@localhost ~]# whereis -m cd
          cd: /usr/share/man/man1/cd.1.gz

配置yum仓库

# cd /etc/yum.repos.d

# mkdir  bak

# mv C* bak

# vi yum.repo

[base]

name=centos7

baseurl=file:///media

gpgcheck=0

enabled=1

检查虚拟机的光驱是否是连接状态

# mount /dev/sr0 /media/       ---每一次重启之后,都要执行这条命令

# yum clean all

# yum makecache

# yum install mlocate -y

locate   初次安装 执行updatedb创建数据库

会构建数据库

查找速度快,模糊查找

非实时查找

find   实时查找,通过遍历指定的起始路径下文件系统层级结构完成文件查找

查找速度慢

实时查找,精确查找

     find [options] [查找起始路径]   [查找条件]    [处理动作]

查找条件:

     文件名  支持通配符

     -name  filename:按名字查找

          [root@localhost ~]# find /tmp -name file

     -iname filename:忽略大小写

     文件从属关系

     -user USERNAME:查找属主指定用户的所有文件
          [root@localhost ~]# find /var -user root

     -group GRPNAME:查找属组指定组成的所有文件

     -uid UID:查找属主指定的UID的所有文件

     -gid GID:查找属组指定的GID的所有文件

     -nouser:查找没有属主的文件

     -nogroup:查找没有属组的文件

     文件类型

     -type  TYPE

     f:普通文件

          [root@localhost ~]# find -type f

     d:目录

     b:快设备

     c:字符设备

     l: 链接文件

     p:管道文件

     s:套接字文件

     文件大小

     -size [+|-]#num

      #num:等于

      +#num:大于

          [root@localhost ~]# find /var -size +1M

      -#num:小于

     时间戳:

        以天为单位

        -atime  [+|-]#:访问时间           -amin:分钟

             [root@localhost ~]# find -atime -7

        -ctime:文件改变时间 

        -mtime:修改时间

        # :# 到 #+1 天之间

        +#:#+1 天之前

        -#:#天以内

             [root@localhost ~]# find -atime -7

     根据权限查找:

        -perm [/ l -]mode

        mode:精确权限匹配     
             [root@localhost ~]# find /var -perm -555

        -:每一类用户(ugo)的权限中每一位(rwx)同时符合条件才满足 权限位与关系

        /:每一类用户(ugo)的权限中任何一位(rwx)符合条件才满足 权限位或关系

     根据目录层级:

     -depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找

     -maxdepth:在某个层次目录中按照递减方法查找

     -mindepth:在某个层次目录中按照递减方法查找

     逻辑关系

     与  -a

     或  -o

     非  -not  !

     处理动作:默认是打印到标准输出

     -ok commond {} \;:执行动作之前先提示,即需要交互

     -exec commond {} \;:找到结果之后直接执行动作

     | xargs
         [root@localhost ~]# find /etc -perm -555 | xargs ls

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值