美文网首页
文件属性、链接、用户及正则表达式

文件属性、链接、用户及正则表达式

作者: 你好_请关照 | 来源:发表于2019-04-15 22:10 被阅读0次

    一、

    Linux文件属性

    ls -lhi 每一列含义
    文件类型
    inode和block
    软硬链接
    用户
    权限
    相关命令:which 、whereis、date、find、tar、tr

    1、文件属性简介

    文件属性简介

    2、inode和block

    2.1 含义:

    inode含义
    inode index node 索引节点
    inode号码相当于是我们每个人的身份证号码
    inode空间
    存放文件的属性信息(权限 所有者 大小 修改时间 硬链接数 文件类型)
    block的位置
    没有存放文件名:文件名不是文件属性

    block含义:
    存放数据库(文件的内容)

    2.2关系:

    查看一个文件file.txt背后与inode和block关系


    inode与block关系
    类型 inode block
    文件 文件属性信息 文件内容
    目录 目录信息 目录下面文件名字(文件名和inode对应关系)

    2.3特点

    inode

    在同一个磁盘分区中是唯一的
    每创建一个非空的文件就要占用inode和1个block

    block

    存放数据(文件内容)
    block大小通常为4K(硬盘分区>500MB的情况下)
    创建大文件10G,占用多个block
    创建小文件1K,剩余空间将无法给别人使用。

    2.4查看

    inode 和block 数量是常见在磁盘分区(格式化)

    查看block磁盘空间一共有多少,还剩多少

    查看block

    查看inode总数及使用情况

    查看inode

    3、软连接VS硬链接

    3.1 链接文件的创建:

    默认不带参数的情况,ln命令创建的是硬链接,带参数 -s的创建的是软链接。

    3.2含义:

    硬链接:在同一分区中inode节点号相同文件。
    软连接:相当于windows中的快捷方式,存放源文件的位置,inode节点号与源文件不同。

    3.3特点:

    不能对目录创建硬链接,但可以创建软连接
    软链接可以跨越文件系统,但硬链接不可以。

    3.4源文件、软连接、硬链接的删除

    1、删除软链接文件,对源文件及硬链接无任何影响;
    2、删除硬链接文件,对源文件 及软连接文件无任何影响
    3、删除链接文件的源文件,对硬链接文件无影响,会导致其软连接失效(红底白字闪烁)
    4、同时删除源文件及其硬链接文件,整个文件才会被”真正“的删除

    软连接和硬链接的区别

    4、用户

    分类 UID范围 说明
    root 0 像皇帝一样
    虚拟用户 (C7)1~999 (C6)1~499 满足每个进程要有一个用户和用户组 无法登陆
    普通用户 (C7)1000以上 (C6)500以上 普通百姓

    添加用户

    [root@localhost ~]# useradd xiaoxi  
    

    设置密码

    [root@localhost ~]# passwd xiaoxi
    Changing password for user xiaoxi.
    New password: 
    BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
    Retype new password: 
    passwd: all authentication tokens updated successfully.
    

    切换用户

    [root@localhost ~]# su xiaoxi
    [xiaoxi@localhost root]$ whoami 
    xiaoxi
    

    whoami 命令是用来查看当前所登陆的用户是谁

    用户切换命令关系图

    删除用户

    [root@localhost ~]# userdel -r xiaoxi
    
    删除用户时 建议加上 -r 参数 否则不会删除家目录,当再次创建一模一样的用户时,会出现报错如下;
    
    [root@localhost ~]# useradd xiaoxi
    useradd: warning: the home directory already exists.
    Not copying any file from skel directory into it.
    Creating mailbox file: File exists
    
    

    用户相关文件

    • /etc/passwd 存放用户信息
    [root@localhost ~]# cat /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
    
    一列:用户名称
    二列:x表示密码占位符(密码配置文件存放在/etc/shadow)
    三列:用户的UID(用户ID是唯一的,Linux中UID是用来判断权限)
    四列:用户的GID(主组的GID)
    五列:用户说明,相当于windows中的描述
    六列:用户的家目录
    七列:用户登录时使用的shell
    
    
    • /etc/group 用户组信息
      几乎不会用到
    • /etc/shadow 密码信息
    [root@localhost ~]# cat /etc/shadow
    root:$6$W7l84.hfZ92d/Xi.$lhJKODCm0wv7Dlu/y899QCPHYeZ64XEhr7.pGFO8RyfRl/ea8jYsltzUzxNzNasRgxaG/Yq.7UpCp.OBVtsft1::0:99999:7:::
    bin:*:17834:0:99999:7:::
    daemon:*:17834:0:99999:7:::
    adm:*:17834:0:99999:7:::
    lp:*:17834:0:99999:7:::
    sync:*:17834:0:99999:7:::
    shutdown:*:17834:0:99999:7:::
    halt:*:17834:0:99999:7:::
    mail:*:17834:0:99999:7:::
    operator:*:17834:0:99999:7:::
    games:*:17834:0:99999:7:::
    ftp:*:17834:0:99999:7:::
    nobody:*:17834:0:99999:7:::
    systemd-network:!!:17998::::::
    dbus:!!:17998::::::
    polkitd:!!:17998::::::
    tss:!!:17998::::::
    abrt:!!:17998::::::
    sshd:!!:17998::::::
    postfix:!!:17998::::::
    ntp:!!:17999::::::
    xiaoxi:!!:18003:0:99999:7:::
    
    
    一列:用户名称
    二列:加密后的密码(采用SHA512散列算法加密,如密码位为“!!”or“*”表示没有密码)
    三列:密码最后一次修改的时间(单位为天,以1970年1月1日为标准时间,每过一天加一天)
    四列:限制两次密码修改的间隔时间(0表示不限制)
    五列:密码有效期(99999表示永不过期)
    六列:密码到期前警告天数
    七列:密码到期宽限天数(0表示到期即失效,-1表示永不过期)
    八列:账户失效时间(单位为天,以1970年1月1日为标准时间)
    九列:未定义,备用列
    
    
    
    • /etc/gshadow 用户组密码
      几乎不会用到

    5、权限

    image.png

    5.1 字母及含义

    字母 含义
    u user(所有者)
    g group(所属组)
    o other (其他人)
    a ==u+g+o 表示所有

    5.2 权限位中字母及数字含义

    权限 全拼 数字 含义
    - 0 没有权限
    r read 4 读取权限
    w write 2 写入权限
    x excute 1 执行权限

    5.3修改权限(chmod)
    chmod change mode 修改权限

    chmod命令的-R选项
    chmod -R 777 /abc
    -R 递归修改此目录及目录下所有的子文件和子目录的权限

    方法1:数字

    [root@localhost xiaoxi]# ll
    total 0
    -rw-r--r--. 1 root root 0 Apr 15 20:21 file1
    -rw-r--r--. 1 root root 0 Apr 15 20:21 file2
    -rw-r--r--. 1 root root 0 Apr 15 20:21 file3
    [root@localhost xiaoxi]# chmod 777 file1
    [root@localhost xiaoxi]# ll
    total 0
    -rwxrwxrwx. 1 root root 0 Apr 15 20:21 file1
    -rw-r--r--. 1 root root 0 Apr 15 20:21 file2
    -rw-r--r--. 1 root root 0 Apr 15 20:21 file3
    

    方法2:字母

    [root@localhost xiaoxi]# ll
    total 0
    -rw-r--r--. 1 root root 0 Apr 15 20:21 file1
    -rw-r--r--. 1 root root 0 Apr 15 20:21 file2
    -rw-r--r--. 1 root root 0 Apr 15 20:21 file3
    [root@localhost xiaoxi]# chmod a+x file1
    [root@localhost xiaoxi]# ll
    total 0
    -rwxr-xr-x. 1 root root 0 Apr 15 20:21 file1
    -rw-r--r--. 1 root root 0 Apr 15 20:21 file2
    -rw-r--r--. 1 root root 0 Apr 15 20:21 file3
    [root@localhost xiaoxi]# chmod g+wx file2 
    [root@localhost xiaoxi]# ll
    total 0
    -rwxr-xr-x. 1 root root 0 Apr 15 20:21 file1
    -rw-rwxr--. 1 root root 0 Apr 15 20:21 file2
    -rw-r--r--. 1 root root 0 Apr 15 20:21 file3
    [root@localhost xiaoxi]# chmod o+w file3 
    [root@localhost xiaoxi]# ll
    total 0
    -rwxr-xr-x. 1 root root 0 Apr 15 20:21 file1
    -rw-rwxr--. 1 root root 0 Apr 15 20:21 file2
    -rw-r--rw-. 1 root root 0 Apr 15 20:21 file3
    

    6、命令:

    6.1 which :查看命令的完整路径和别名(如果有别名的话)

    [root@localhost ~]# which ls
    alias ls='ls --color=auto'
        /usr/bin/ls
    

    6.2 whereis:用于搜索程序名,和man说明文件

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

    6.3 date:查看或修改时间

    修改本地时间

    [root@localhost dir]# date -s "20001001 19:30:00"
    Sun Oct  1 19:30:00 CST 2000
    [root@localhost dir]# 
    
    

    +按照指定格式显示日期
    %F = %Y-%m-%d

    [root@localhost ~]# date +%F
    2019-04-18
    [root@localhost ~]#  date +%Y-%m-%d
    2019-04-18
    [root@localhost ~]# 
    

    %T = %H:%M:%S

    [root@localhost ~]# date +%T
    17:49:07
    [root@localhost ~]# date +%H:%M:%S 
    17:49:36
    [root@localhost ~]# 
    

    %w 周几

    [root@localhost ~]# date +%w
    4
    

    ntpdate自动同步时间:

    根据网上的时间服务器同步本地时间

    [root@localhost ~]# ntpdate ntp1.aliyun.com
    18 Apr 17:42:08 ntpdate[7117]: adjust time server 120.25.115.20 offset 0.267318 sec
    

    6.4 tar:打包压缩及解包解压缩

    参数 释义
    -c 创建打包文件
    -v 显示过程
    -z 压缩或解压缩(通过gzip的方式)
    -f 指定压缩包
    -x 解包
    -t 查看压缩包的内容
    -C 指定到解压目录
    **用法:**
    

    tar -zcvf file.tar.gz /dir/file 创建压缩包 file.tar.gz

    [root@localhost dir]# tar -zcvf file.tar.gz file{01..05} 
    file01
    file02
    file03
    file04
    file05
    [root@localhost dir]# ll
    total 4
    -rw-r--r--. 1 root root   0 Apr 18 18:51 file01
    -rw-r--r--. 1 root root   0 Apr 18 18:51 file02
    -rw-r--r--. 1 root root   0 Apr 18 18:51 file03
    -rw-r--r--. 1 root root   0 Apr 18 18:51 file04
    -rw-r--r--. 1 root root   0 Apr 18 18:51 file05
    -rw-r--r--. 1 root root 153 Apr 18 18:51 file.tar.gz
    

    tar -tf file.tar.gz 显示压缩包内容

    [root@localhost dir]# ll
    total 4
    -rw-r--r--. 1 root root   0 Apr 18 18:51 file01
    -rw-r--r--. 1 root root   0 Apr 18 18:51 file02
    -rw-r--r--. 1 root root   0 Apr 18 18:51 file03
    -rw-r--r--. 1 root root   0 Apr 18 18:51 file04
    -rw-r--r--. 1 root root   0 Apr 18 18:51 file05
    -rw-r--r--. 1 root root 153 Apr 18 18:51 file.tar.gz
    [root@localhost dir]# tar -tf file.tar.gz 
    file01
    file02
    file03
    file04
    file05
    [root@localhost dir]# 
    
    

    tar -zxvf tar == tar -xf 解压并解包

    (1)、解单个包

    [root@localhost dir]# tar zxvf file.tar.gz file01 
    file01
    [root@localhost dir]# ls
    file01  file.tar.gz
    [root@localhost dir]# 
    

    (2)、解压整包

    [root@localhost dir]# tar -zxvf file.tar.gz 
    file01
    file02
    file03
    file04
    file05
    [root@localhost dir]# ls
    file01  file02  file03  file04  file05  file.tar.gz
    [root@localhost dir]# 
    

    tar -xf file.tar.gz -C /opt 解压到 /opt 中

    [root@localhost dir]# tar -zxvf file.tar.gz  -C /opt/
    file01
    file02
    file03
    file04
    file05
    [root@localhost dir]# ls /opt/
    file01  file02  file03  file04  file05
    [root@localhost dir]# 
    

    用tar 命令配合 /dev/urandom 取随机数

    
    #6.5  find 命令
    ##格式 : find /path option
    **查找条件**         
    option(选项、参数)|释义
    :---: |:---:
    -name | 以文件名查找
    -iname| 以文件名查找(不区分大小写)
    -type  | 以文件类型查找
    -size  |  文件大小查找 (KB、MB、G) (-1M 小于1M)(+1M 大于1M)
    -mtime -1 | 最近1天修改过
    -inum|找出与指定inode号码一样的文件
    -samefile| 找出与给定文件inode号码相同的文件
    -user   |找属主为指定用户的文件:
      -group    |找属组为指定用户的文件:
     -uid   |据文件的UID进行查找
    -gid    |据文件的gid 进行查找
    -nouser |找没有属主的文件
    -nogroup    |找没有属组的文件 
    
    **1)、根据文件名查找**
        -name “文件名称” 
        -iname “文件名” //不区分字母大小写
    **2)、根据文件类型进行查找(-type)**
    -type |代表类型
    :---: | :---:       
     f|普通文件
    d|目录文件
    l|符号链接文件
    s|套接字文件
    b|块儿设备文件
    c|字符设备文件
    p|管道文件
    
    ###示例
    **1、以文件类型和文件名查找**
    ```html
    [root@localhost dir]# find /dir/ -type f -name "file01"
    /dir/file01
    [root@localhost dir]# 
    

    2、以inode号查找

    [root@localhost dir]# find /dir/ -inum 16777900
    /dir/file01
    [root@localhost dir]# 
    

    3、查找与给定文件inode号码相同的文件

    [root@localhost dir]# find /dir/ -samefile /dir/file01 
    /dir/file01
    /dir/file.hart
    

    6.6 alias 别名命令

    1、查看别名

    [root@localhost dir]# alias 
    alias cls='clear'
    alias cp='cp -i'
    alias egrep='egrep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias grep='grep --color=auto'
    alias l.='ls -d .* --color=auto'
    alias ll='ls -l --color=auto'
    alias ls='ls --color=auto'
    alias mv='mv -i'
    alias rm='rm -i'
    alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
    

    2、设置别名
    设置别名格式
    alias mv='mv -i'
    alias 昵称='命令'

    [root@localhost dir]# alias cls='clear'
    [root@localhost dir]# alias cls
    alias cls='clear'
    [root@localhost dir]# 
    

    3、永久设置别名

    [root@localhost ~]# tail -n 1 /etc/profile
    alias cls='clear'
    [root@localhost ~]# 
    

    6.7 tr 命令 做替换使用

    常用参数 注释
    -d 删除
    -c 取反
    [root@localhost tmp]# cat 1.txt 
    a b c d e f g h i j k l m n o p q r s t u v w x y z
    [root@localhost tmp]# tr 'a-z' 'A-Z' <1.txt 
    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
    
    使用 -d参数
    [root@localhost tmp]# cat 1.txt 
    a b c d e f g h i j k l m n o p q r s t u v w x y z
    1 2 3 4 5 6 7 8 9
    [root@localhost tmp]# tr -d '[0-9]' <1.txt 
    a b c d e f g h i j k l m n o p q r s t u v w x y z      
    [root@localhost tmp]# 
    
    使用 -c 参数 ,配合-d参数使用,不然会报错
    [root@localhost tmp]# cat 1.txt 
    a b c d e f g h i j k l m n o p q r s t u v w x y z
    1 2 3 4 5 6 7 8 9
    [root@localhost tmp]# tr -cd 'a-z'\ <1.txt   #意为除了a-z以外的都删除
    a b c d e f g h i j k l m n o p q r s t u v w x y z        [root@localhost tmp]# 
    

    二、

    特殊符号与正则表达式

    特殊符号
    管道
    单引号 双引号 不加引号区别
    正则
    老三 grep

    1、特殊符号

    特殊符号 作用
    !# 调用历史中第#条命令(#表示数字)
    !ls 调用历史中最近一个以ls开头的命令
    !! 上一条命令
    \ 强制换行
    * 匹配任意数量的任意字符
    匹配单个任意字符
    [ ] 对范围做匹配
    { } 生成序列
    > 标准输出重定向
    >> 标准追加重定向
    < 标准输入重定向
    << 标准输入追加重定向
    # 注释

    2管道 |

    命令1 | 命令2
    把命令1结果 通过管道传递给 命令2使用

    [root@localhost ~]# cat /etc/passwd | head -n 5
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    

    3、单引号 双引号 不加引号区别 反引号

    ' ' 单引号所见即所得

    " " 双引号和单引号类似 里面的特殊符号会被解析(运行) $ ' '

    不加引号 和双引号类似,但是可以使用{}
    反引号 ` ` == $( 命令 ) 优先执行命令

    4、正则表达式 经常用于三剑客、Python、Go

    正则表达式元字符

    元字符 释义
    [:digit:] 匹配任意数字,相当于[0-9]
    [:lower:] 匹配任意小写字符,相当于[a-z]
    [:upper:] 匹配任意大写字符,相当于[A-Z]
    [:alpha:] 匹配任意大小写字符
    [:alnum:] 匹配任意数字或字母
    [:space:] 匹配空格
    [:punct:] 标点符号

    正则表达式次数匹配

    符号 释义
    [ ] 匹配任意指定范围内的任意单个字符
    [^] 匹配任意指定范围外的任意单个字符
    * 匹配前面任意长度的字符,这个不同于命令行中用到的字符;
    . 点,匹配任意字符
    .* 匹配任意长度的任意字符,这两个才相当于命令行中的*
    + 匹配前面的字符至少一次,至多不限
    {m} 匹配前面的字符m次。m是数字
    {m,n} 匹配前面的字符至少m次至多n次,m,n都是数字

    正则表达式位置锚定:

    符号 释义
    ^ 锚定行首,用于模式的最左侧
    $ 锚定行尾,用于模式的最右侧
    ^patter$ 用于匹配模式正行
    ^$ 空行,(表示什么都没有,有空白字符也不能算空行)
    <或\b 词首锚定,用于单词最左侧
    >或\b 词尾锚定
    <patter> 匹配整个单词

    5、 grep命令

    作用:文本搜索工具(支持正则表达式BRE)
    常用选项
    -v      不能被匹配到的(按照正行取反,中间有多余字符则不能匹配)
    -n      显示匹配到的行号
    -i      忽略字符大小写
    -o      详细显示仅匹配到的
    -q      静默模式,不输出任何信息
    
    [root@localhost ~]# grep -n '^root' /etc/passwd
    1:root:x:0:0:root:/root:/bin/bash
    [root@localhost ~]# 
    
    

    find 与 | 配合使用

    find +|xargs 管道前面的文字符号通过|xargs 处理变成参数(文件名)

    #find习题:

    方法1
    find /dir/ -type f -name "*.txt"|xargs ls -l

    [root@localhost dir]# find /dir/ -type f -name "*file01"|xargs  ls -l    
    -rw-r--r--. 2 root root 0 Apr 18  2019 /dir/file01
    

    方法2
    ls -l $(find /opt -type f -name "file01")
    ls -l `find /dir/ -type f -name "file01"`

    [root@localhost dir]#  ls -l  `find /dir/ -type f -name "file01"`
    -rw-r--r--. 2 root root 0 Apr 18  2019 /dir/file01
    [root@localhost dir]#  ls -l   $(find /opt -type f -name "file01")
    -rw-r--r--. 1 root root 0 Apr 18  2019 /opt/file01
    [root@localhost dir]# 
    

    方法3
    find /dir/ -type f -name "*" -exec ls -l {} \ ;

    [root@localhost tmp]# find /dir/ -type f -name "*"  -exec ls -l {} \;
    -rw-r--r--. 1 root root 153 Apr 18 18:51 /dir/file.tar.gz
    -rw-r--r--. 2 root root 0 Apr 18 18:51 /dir/file01
    -rw-r--r--. 1 root root 0 Apr 18 18:51 /dir/file02
    -rw-r--r--. 1 root root 0 Apr 18 18:51 /dir/file03
    -rw-r--r--. 1 root root 0 Apr 18 18:51 /dir/file04
    -rw-r--r--. 1 root root 0 Apr 18 18:51 /dir/file05
    -rw-r--r--. 2 root root 0 Apr 18 18:51 /dir/file.hart
    

    相关文章

      网友评论

          本文标题:文件属性、链接、用户及正则表达式

          本文链接:https://www.haomeiwen.com/subject/quzpwqtx.html