美文网首页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文件操作

    文件操作 (Linux文件操作)) [文件|目录] Linux文件操作:为了对文件和目录进程处理,你需要用到系统...

  • linux的简单命令操作

    Linux目录介绍:文件目录 作用 Linux简单的操作命令: Linux查看文件操作:ls命令:产看文件夹...

  • Linux基础(一)

    一、Linux操作系统介绍 二、文件目录操作 1、ls list 列出当前目录下(所有的文件和目录) 2、cd ...

  • Linux 系统目录结构

    Linux 系统目录结构 参考 Linux 系统目录结构 在 Linux 或 Unix 操作系统中,所有的文件和目...

  • linux文件和目录操作

    文件目录操作 cp 复制 rm 移除文件或目录 mv 移动文件与目录,或更名

  • 系统加固之Linux安全加固

    Linux系统基本操作 文件结构图及关键文件功能介绍 Linux文件结构 Linux文件结构图 二级目录 | 目录...

  • Lesson 005 —— Linux 文件系统

    Lesson 005 —— Linux 文件系统 在 Linux 或 UNIX 操作系统中,所有的文件和目录都被组...

  • Linux 1-文件和目录

    文件和目录(理解) 目标 理解 Linux 文件目录的结构 01. 单用户操作系统和多用户操作系统(科普) 单用户...

  • Linux命令

    Linux 操作命令 文件路径操作从当前目录开始 文件路径操作从更目录上一级目录 文件权限 读,写,执行分别用r,...

  • Linux命令简记

    关于Linux命令简记 0x01 文件和目录操作 pwd 显示工作目录路径 cd 更改目录 ls 列出子目录和文件...

网友评论

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

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