美文网首页Linux运维学习
Linux——文件和目录操作

Linux——文件和目录操作

作者: So_ProbuING | 来源:发表于2023-12-18 14:31 被阅读0次

    pwd:显示当前所在位置

    • -L:logical首字母缩写,表示显示逻辑路径,取PWD系统环境变量的值
    • -P:physical 显示物理路径时如果当前目录路径是软链接文件,则会显示软链接文件的源文件

    cd:切换目录

      • 只使用 - 选项时,将会从当前目录切换到系统环境变量 “OLDPWD”对应值的目录路径,即当前用户上一次所在的目录路径
    • ~ 只使用~选项时,将会从当前目录切换到系统变量 “HOME”对应值的目录路径,即当前用户的家目录所在的路径
    • .. 只使用..时,将会从当前目录切换到当前目录的上一级目录所在的路径

    tree:以树形结构显示目录下的内容

    • -a 显示所有文件
    • -d 只显示目录
    • -f 显示每个文件的全路径
    • -i 不显示树枝
    • -L level 遍历目录的最大层数,level为大于0的正整数
    • -F 在执行文件、目录、Socket、符号连接、管道名称等不同类型的文件结尾,各自加上 “*”、"/"、"="、“@”、“|” 号

    mkdir 创建目录

    mkdir [选项] [目录]

    • -p 递归创建目录
    • -m 设置新建目录的默认目录对应的权限
    • -v 显示创建目录的过程
    [root@linuxprobe probuing]# mkdir -pv ./{dir1_1,dir1_2}/{dir2_1,dir2_2}
    mkdir: created directory './dir1_1'
    mkdir: created directory './dir1_1/dir2_1'
    mkdir: created directory './dir1_1/dir2_2'
    mkdir: created directory './dir1_2'
    mkdir: created directory './dir1_2/dir2_1'
    mkdir: created directory './dir1_2/dir2_2'
    [root@linuxprobe probuing]# tree -d
    .
    |-- dir1_1
    |   |-- dir2_1
    |   `-- dir2_2
    |-- dir1_2
    |   |-- dir2_1
    |   `-- dir2_2
    `-- test
    
    

    touch:创建空文件或改变文件的时间属性

    touch 选项 文件
    
    • -a 只更改指定文件的最后访问时间
    • -d STRING 使用字符串STRING代表的时间作为模板设置指定文件的时间属性
    • -m 只更改指定文件的最后修改时间
    • -r file 将指定文件的时间属性设置为与模板文件file的时间属性相同
    • -t STAMP 使用[[CC]YY]MMDDhhmm[.ss] 格式的时间设置文件的时间属性。世纪、年、月、日、时、分、秒

    ls 显示目录下的内容及相关属性信息

    ls 选项 文件或目录
    
    • -l 使用长格式列出文件及目录信息
    • -a 显示目录下的所有文件
    • -t 按修改时间排序
    • -r 依相反次序排序
    • -F 在条目后加上文件类型的指示符号
    • -d 列出目录本身
    • -h 以人类可读的信息显示文件或目录大小
    • -A 列出所有文件 包括隐藏文件
    • -i 显示文件的inode值


    • 第一列 inode索引节点编号
    • 第二列 文件类型及权限 (第一个字符为类型 后9个字符为文件权限符号)
    • 第三列 硬链接个数
    • 第四列 文件或目录所属的用户
    • 第五列 文件或目录所属的组
    • 第六列 文件或目录的大小
    • 第七、八、九列:文件或目录的修改时间

    cp:复制文件或目录

    cp 选项 源文件 目标文件
    
    • -p 复制文件时保持源文件的所有者、权限信息及时间属性
    • -d 保留复制的符号链接所指向的目标文件或目录
    • -r 递归复制目录,即复制目录下的所有层级的子目录及文件
    • -a 等同于上面的 pdr三个选项功能的总和
    • -i 覆盖已有文件前提示用户确认
    • -t 可以是 cp -t 目标文件 源文件

    mv:移动或重命名文件

    mv 选项 源文件 目标文件
    
    • -f 若目标文件已经存在,则不会询问直接覆盖 强制覆盖
    • -i 若目标文件存在,则询问是否覆盖
    • -n 不覆盖已经存在的文件
    • -t 指定mv的目标目录 适用于移动多个源文件到一个目录的情况
    • -u 在源文件比目标文件新,或目标文件不存在时才进行移动

    rm 删除文件或目录

    rm 选项 文件或目录
    
    • -f 强制删除,忽略不存在的文件
    • -i 在删除前需要确认
    • -l 在删除超过三个文件或者递归前要求确认
    • -r 递归删除目录及内容

    rmdir 删除空目录

    rmdir命令用于删除空目录,当目录不为空时,命令不起作用

    rmdir 选项 目录
    
    • -p 递归删除目录,当子目录删除后其父目录也为空时,也一并删除
    • -v 显示命令执行过程

    ln:硬链接与软链接

    ln 创建文件间的链接,包括硬链接和软链接

    ln 选项 源文件或目录 目标文件或目录
    
    • 无参数 创建硬链接
    • -s 创建软链接(符号链接)

    硬链接

    硬链接是指通过索引节点来进行链接。多个文件名指向同一个索引节点时正常且允许的,这种情况下的文件就是硬链接。硬链接文件相当于文件的另外一个入口

    • 硬链接的节点号inode相同
    • 删除硬链接文件或者删除源文件任意之一,文件实体并未被删除
    • 只有删除源文件以及源文件所有对应的硬链接文件,文件实体才会被删除
    • 当所有的硬链接文件及源文件被删除之后,再存放新的数据时会占用这个文件的空间
    • 硬链接文件就是文件的另外一个入口
    • 可以通过给文件设置硬链接文件,防止误删
    • 当静态文件对应的硬链接数为0时,文件就会被删除
    # 创建硬链接并查看硬链接文件内容
    [root@linuxprobe lntest]# ln lnfile.txt lnfile_hard_link
    [root@linuxprobe lntest]# cat lnfile_hard_link 
    123
    #删除源文件
    [root@linuxprobe lntest]# rm -rf lnfile.txt 
    # 查看硬链接文件 硬链接文件正常
    [root@linuxprobe lntest]# cat lnfile_hard_link 
    123
    # 重新链接文件
    [root@linuxprobe lntest]# ln lnfile_hard_link a.txt
    # 查看源文件
    [root@linuxprobe lntest]# cat a.txt 
    123
    
    
    

    软链接

    ln -s 源文件 目标文件
    
    • 软链接类似于一个文本文件,里面存储的是源文件的路径,指向源文件实体
    • 即使删除了源文件,软链接文件也依然存在。指向失效
    • 失效时一般是白字红底闪烁提示

    readlink 查看符号链接文件的内容

    readlink能够帮助我们查看符号链接文件的内容

    readlink [选项] [文件]
    

    find查找目录下的文件

    find [选项]  [路径] [操作语句]
    

    用-name指定关键字查找

    [root@linuxprobe lntest]# find /var/log/ -name '*.log'
    

    xargs 将标准输入转换成命令行参数

    xargs命令是向其他命令传递命令行参数的一个过滤器,能够将管道或者标准输入传递的数据转换成xargs命令后跟随的命令的命令行参数

    xargs [选项]
    
    • -n 指定每行的最大参数量n
    • -d 自定义分隔符
    • -i 以{}替代前面的结果
    • -I 指定一个符号替代前面的结果
    • -p 提示让用户确认是否执行后面的命令
    • -0 用null代替空格作为分隔符
    [root@linuxprobe lntest]# cat test.txt 
    123\n234\n345\n456
    321
    432
    543
       654    789
    [root@linuxprobe lntest]# xargs < test.txt 
    123n234n345n456 321 432 543 654 78
    
    • -n 指定每行的输出个数
    [root@linuxprobe lntest]# xargs -n 3 < test.txt 
    123n234n345n456 321 432
    543 654 789
    
    • -type
      • b 块设备文件
      • c 字符设备文件
      • d 目录
      • p 管道文件
      • l 符号链接文件
      • f 普通文件
      • s socket文件
      • D door

    结合find使用xargs的案例

    • 创建文件
    [root@linuxprobe tmp]# touch hello\ everyone.txt
    
    
    • find . -type f -name "*.txt" -print0| xargs -0 rm

    rename 重命名文件

    rename 通过字符串替换的方式批量修改文件名
    语法格式:

    rename from to file
    
    • from 代表需要替换或者需要处理的字符
    • to 把前面的from代表的内容替换为to代表的内容
    • file 待处理的文件

    basename 显示文件名或目录名

    basename命令用于显示去除路径和文件后缀部分的文件名或目录
    语法格式

    basename name suffix
    
    • suffix 可选参数 指定要去除文件后缀字符串
    [root@linuxprobe ~]# basename /data/dir/file1.txt 
    file1.tx
    

    dirname 显示文件或目录路径

    • 语法格式
      dirname [name]
      dirname 文件或目录
    [root@linuxprobe ~]# dirname /data/dir/file1.txt 
    /data/dir
    [root@linuxprobe ~]# cd /data/dir/
    [root@linuxprobe dir]# ls
    file1.txt
    [root@linuxprobe dir]# dirname file1.txt 
    .
    
    
    • dirname后面的参数是相对路径,它也会返回相对路径

    chattr 改变文件的扩展属性

    chattr用于改变文件的扩展属性,与chmod这个命令相比,chmod只是改变文件的读、写、执行,更底层的属性控制是由chattr来改变的

    chattr [选项] [模式] [<文件或目录>]
    
    [root@linuxprobe dir]# chattr +a test  添加追加属性
    [root@linuxprobe dir]# lsattr test  
    -----a-------------- test
    [root@linuxprobe dir]# rm -rf test  root用户也无法删除,只能追加
    rm: cannot remove 'test': Operation not permitted
    [root@linuxprobe dir]# echo test >> test 
    [root@linuxprobe dir]# cat test 
    test
    [root@linuxprobe dir]# echo 222 > test  无法清空文件
    -bash: test: Operation not permitted
    
    • -R 递归更改目录属性
    • -V 显示命令执行过程
      • 增加参数
      • 移除参数
    • = 更新为指定参数
    • A 告诉系统不要修改这个文件的最后访问时间
    • a 只能向文件中添加数据,不能删除
    • i 设定文件不能被删除、改名、写入或新增,只能是读取
    [root@linuxprobe dir]# chattr +i test 
    [root@linuxprobe dir]# lsattr test 
    ----i--------------- test
    [root@linuxprobe dir]# vim test
    

    lsattr 查看文件扩展属性

    lsattr 选项 文件或目录

    • -R 递归查看目录的扩展属性
    • -a 显示所有文件包括隐藏文件的扩展属性
    • -d 显示目录的扩展属性

    file显示文件的类型

    file显示文件的类型

    • -b 输出信息使用精简格式,不输出文件名
    [root@linuxprobe data]# file dir/file1.txt 
    dir/file1.txt: empty
    [root@linuxprobe data]# file dir/test 
    dir/test: ASCII text
    
    

    md5sum 计算和校验文件的MD5值

    md5sum命令用于计算和校验文件的MD5值。

    md5sum 选项 文件
    
    [root@linuxprobe data]# md5sum dir/test
    d8e8fca2dc0f896fd7cb4cb0031ba249  dir/test
    

    chown 改变文件或目录的用户和用户组

    chown [选项] [用户:用户组] [<文件或目录>]
    
    • -R 递归更改目录的用户和用户组
    [root@linuxprobe dir]# ll
    total 4
    -rw-r--r--. 1 root root 0 Dec 19 08:51 file1.txt
    -rw-r--r--. 1 root root 5 Dec 19 09:00 test
    [root@linuxprobe dir]# chown linuxcool:linuxcool file1.txt 
    [root@linuxprobe dir]# ll
    total 4
    -rw-r--r--. 1 linuxcool linuxcool 0 Dec 19 08:51 file1.txt
    -rw-r--r--. 1 root      root      5 Dec 19 09:00 tes
    

    chmod改变文件或目录权限

    chmod命令是用来改变文件或目录权限的命令,只有文件的属主和超级用户root才能够执行该命令

    chmod [选项] [模式] [<文件或目录>]
    
    • -R 递归处理指定目录以及其子目录下的所有文件


      权限对应信息
    权限位 全称 含义 对应数字
    r read 可读 4
    w write 可写 2
    x execute 可执行 1
    - 没有任何权限 0
    备注 一些特殊权限位:t、T、s、S、X、x
    用户类型 其他用户:o 所有:a,等效于u、g、o的总和
    操作字符 +:加入 -:减去 =:设置
    [root@linuxprobe dir]# ll
    total 4
    ----------. 1 linuxcool linuxcool 0 Dec 19 08:51 file1.txt
    -rw-r--r--. 1 root      root      5 Dec 19 09:00 test
    [root@linuxprobe dir]# chmod u+x file1.txt 
    [root@linuxprobe dir]# ll
    total 4
    ---x------. 1 linuxcool linuxcool 0 Dec 19 08:51 file1.txt
    -rw-r--r--. 1 root      root      5 Dec 19 09:00 test
    [root@linuxprobe dir]# chmod g+w file1.txt 
    [root@linuxprobe dir]# ll
    total 4
    ---x-w----. 1 linuxcool linuxcool 0 Dec 19 08:51 file1.txt
    -rw-r--r--. 1 root      root      5 Dec 19 09:00 test
    [root@linuxprobe dir]# chmod o+r file1.txt 
    [root@linuxprobe dir]# ll
    total 4
    ---x-w-r--. 1 linuxcool linuxcool 0 Dec 19 08:51 file1.txt
    -rw-r--r--. 1 root      root      5 Dec 19 09:00 test
    

    Linux读、写、执行权限说明

    普通文件的权限说明

    • 可读r:表示具有读取/阅读文件内容的权限
    • 可写w:表示具有新增、修改文件的权限(删除文件的权限是受父目录的权限控制,和文件本身无关)
    • 可执行:表示具有执行文件的权限
    1. 文件本身要能够执行
    2. 普通用户必须还要有r权限才能够执行,无r就不能执行
    3. root没有r权限 只要有x权限就可以执行
    4. root用户位没有执行权限,但只要其他权限位还有x权限,就能执行

    Linux目录的读、写、执行权限说明

    • 可读r:表示具有浏览目录下面文件及子目录的权限
      • 没有x不能进到目录里
      • ls列表可以看到所有的文件名,会提示无权访问目录下的文件
      • ls -l 则所有的属性会带问号。也会提示无权访问目录下的文件
    • 可写w:表示具有增加、删除或修改目录内文件名的权限
      • 增加的不是文件内容,而是创建一个新的文件
      • 修改的不是文件内容,只能修改文件名、重命名文件
      • 删除也是删除文件而不是看文件本身的权限,是看目录的权限,如果没有x则不能删除
    • 可执行x 表示具有进入目录的权限
      • 没有r则无法列表
      • 没有w则无法新建文件

    chgrp 更改文件用户组

    chgrp只能更改文件的用户组,功能已经被chown取代

    umask 显示或设置权限掩码

    umask是通过八进制的数值来定义用户创建文件或目录的默认权限

    umask [参数] [模式]
    
    • -p 输出的权限掩码可直接作为命令来执行
    • -S 以字符方式输出权限掩码

    通过umask计算文件目录权限

    • 创建文件默认最大的权限为666(-rw-rw-rw-),默认创建的文件是没有可执行x权限位
      对于文件来说,umask的设置是在假定文件拥有八进制666的权限上进行的,文件的权限就是666减umask的掩码数值,如果得到3位数字其每一位都是偶数,那么这就是最终结果。如果有若干位的数字是奇数,那么这个奇数位需要加1变成偶数,最后得到全是偶数的结果
    • 创建目录默认最大权限777(-rwx-rwx-rwx)默认创建的目录属主是有x权限的,允许用户进入

    相关文章

      网友评论

        本文标题:Linux——文件和目录操作

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