Linux -- 文件处理命令

命令格式与 ls 命令

格式

  • 命令 [-选项] [参数]
    • 个别命令可以不遵守此格式
      • 比如有的命令选项是必选的
    • 当有多个选项的时候可以写在一起
      • ls -la /home
    • 简化选项与完整选项
      • -a 等于 --all(简化选项用一个横杠,完整选项用两个横杠)
      • -S表示那招文件大小降序排列

命令的别名

  • 但我们使用which命令查看命令对应文件的路径时,会将命令的别名一并显示
  • 比如which rm
    • 我们发发现rm的别名是rm -i,也就是说我们执行命令行直接使用rm来删除文件时会 more 使用-i选项,这个选项的作用是在删除文件的时候询问是否确认删除。在 Linux 系统中,命令其实本身是不带有询问的,其实是 Linux 别名对应的命令中添加了 -i 选项
    • 因此,我们如果这样执行 rm 命令/bin/rm xxx表示不通过别名来调用 rm 命令,此时没有添加-i参数,所以删除文件不会被询问
[root@host ~]# which rm
alias rm='rm -i'
        /bin/rm
[root@host ~]# 

ls

  • 英文list
  • 语法
    • ls 选项[-alhdi] 路径/目录
      • -a即 "–all" 显示隐藏文件。隐藏文件是为了告诉用户这是一个系统文件,不要轻易动他,在 Linux 中,隐藏文件以点 ".1 开头"
      • -l--long以常格式显示文件及文件的详细信息,包括七个部分
        • 操作权限
        • 引用计数
        • 所有者
          • 创建文件的人默认就所有者,所有者可以改变,一个文件只有一个所有者
        • 所属组
          • 只能有一个,定义一组相同类型的用户(包括所有者),所属组中的成员可以通过指定权限对文件及逆行操作
        • 文件大小,默认单位为字节
        • 最后一次修改时间,没被修改过就是创建时间
        • 文件名
      • -h 显示文件及详细信息人性化显示文件大小,通常和-l搭配使用
      • -d表示只针对某一个目录,查看该目录的信息,而不是该目录下的文件,一般和-l一起使用
      • -i即每一个文件或文件夹的唯一标识西悉尼,Linux 操作系统就会通过这个 id 找到任何一个文件的 id 节点
  • 命令所在路径/bin/ls
  • 特点
    • 所有用户都可使用
  • 用途
    • 显示指定目录下的文件
ls 中的操作权限
  • -rw-r--r--
    • 第一个字符
      • -表示这是一个文件,
      • d表示目录
      • l表示是一个软连接
    • 后面的 9 个字符分成三个部分,分别是“所有者”,“所属组”,“其他”所拥有权限分别对应英文 "u", “g”, “o”
      • r表示可读
      • w表示可写
      • x执行权限,是文件的最高权限,即使是文件的所有者,赋予权限的时候,文件的最高权限 "x" 也应该有所保留,只有当我们要执行该文件的时候,再开启该权限

目录处理命令

  • 注意
    • 当我们在路径相关命令中不使用绝对路径的时候,比如直接指定文件名,那么操作系统会认为操作的当前目录下的该文件
      • mv m.log /hom/ziawang
    • 简单说,在 Linux 命令中,如果一个命令后的参数没有详细的指定其绝对路径,那么就默认是在当前目录下执行这个命令

创建新的目录 mkdir

  • 命令所在路径/bin/mkdir
  • 执行权限:所有用户
  • 格式
    • mkdir [-p] 目录路径
      • -p支持我们在创建一个空目录,并在这个新创建的目录下再创建一个新目录
      • 创建多个目录的时候,将多个目录之间用空格分开
        • mkdir -p /home/ziawang/python /home/ziawang/linux
  • 注意
    • 不是用 -p 选项时,如果要递归创建多级新文件夹是会报错的
    • 目录一定要做好规划,目录名要有意义

切换目录 cd

  • 命令所在路径:shell 内置命令
  • 执行权限:所有用户
  • 格式
    • cd [目录路径]

显示当前所在目录 pwd

print working directory

  • 显示的是当前目录的绝对路径

  • 所在路径/bin/pwd

  • 执行权限:所有用户

  • 格式

    • pwd
  • 注意
    • .表示当前目录
    • ..表示上级目录

复制文件或目录 cp

copy

  • 所在路径:/bin/cp
  • 执行权限:所有用户
  • 格式
    • cp [-rp] [原文件或目录] [目标目录]
      • -r 复制目录必须要添加此选项
      • -p保留文件属性
        • 属性即ls -l我们查看到的文件的各种属性,比如创建时间
  • 注意
    • 同时复制多个文件或路径时,将多个要复制的目标之间用空格隔开,目标路径只能有一个
复制的同时修改名称
  • 当我们将一个文件 / 目录复制到一个当前不存在的目标文件或目录路径上时,复制的文件名就会被修改为该不存在的目标文件 / 路径的名称

剪切文件、改名 mv

move

  • 路径:/bin/mv

  • 执行权限:所有用户

  • 语法

    • mv 原文件或目录 目标目录
  • 注意
    • 可以剪切一个或多个目录,并且剪切不需要指定-r参数
    • cp命令相同,如果移动的目标目录或文件当前不存在,那么剪切后的目录名就是该不存在的目标文件 / 路径的名称
    • 在同一个目录(原路径与目标路径相同)下对一个文件或目录进行移动可以修改其名称

删除文件、目录 (危险)

  • 路径/bin/rm
  • 执行权限:所有用户
  • 格式
    • rm [-rf] [文件或目录]
      • -r删除目录时指定
      • -f强制执行
    • rm -rf * 表示删除当前目录下的所有文件

注意

  • 删除任何文件或目录之前做好备份,日常养成备份的习惯
  • 一旦发现误删除后,不要对硬盘再做过多的读取和写入操作,这回影响回复数据的可能性

删除空目录

remove empty directories

  • 所在路径: /bin/rmdir
  • 执行权限:所有用户
  • 格式
    • rmdir 目录路径
  • 注意
    • 只能用来删除空的目录

文件处理命令

创建空文件 touch

  • 所在路径:/bin/touch
  • 执行权限:所有用户
  • 格式
    • touch [文件名/文件路径]
      • 直接写文件名是在当前目录下创建文件
      • 文件加上路径会在指定的路径下创建文件
文件后缀名
  • 在 Linux 的文件命名中,除了根/符号不能用于命名之外,其他的字符均可以用来命名,但是我们命名的文件名一定要有实际意义
    • Windows 中文件名可以用空格,但是在 Linux 中,我们如果使用空格创建空文件,那么就会创建两个文件
      • touch ziawang haha.log
显示文件内容 cat
  • 所在路径:/bin/cat
  • 执行权限:所有用户
  • 格式
    • cat [-n] 文件名/文件名路径
      • -n, number 在每一行左侧显示行号
反向显示文件内容 tac
  • 格式
    • tac 文件名/文件路径
分页显示文件内容 more
  • 苏总爱路径/bin/more

  • 执行权限:所有用户

  • 格式

    • more [文件名]
  • 操作
    • 空格 space 或 f 实现翻页
    • enter 实现换行,即一行一行往下翻
    • q 或 Q 退出
分页显示文件内容 less 可以向上翻页
  • 所在路径:/usr/bin/less
  • 格式
    • less 文件名/文件路径
  • 操作
    • page-up往上翻页
    • 上箭头可以向上翻一行
    • 输入/+关键词enter回车可以帮助我们检索出包含关键字的行,按n(next) 键可以查看下一个
    • 其他操作和more相同
显示文件前面几行 head
  • 所在路径:/usr/bin/head
  • 执行权限:所有用户
  • 格式
    • head [-n 数字] 文件名/文件路径
      • -n 数字指定行数
      • 不指定 -n 时,默认显示前 10 行
显示文件后面几行 tail
  • 所在路径:/usr/bin/head
  • 执行权限:所有用户
  • 格式
    • tail [-n 数字] 文件名/文件路径
      • -n 数字 指定行数,不指定时也是默认 10 行
      • -f 动态显示文件末尾内容
        • 如果文件发生了变化,那么 tail 显示的内容就会改变
  • 应用
    • 监控日志

链接命令 ln

生成链接文件 ln

  • 所在路径:/bin/ln
  • 执行权限:所有用户
  • 格式
    • ln -s 源文件 目标文件
      • -s生成软连接
      • 目标文件就是将要生成的链接文件的位置及文件名

软连接与硬链接

软连接
  • 软连接就类似于 Windows 的快捷方式,方便管理

  • ln -s /etc/issue /tep/issue

    • 创建/etc/issue的软连接
  • 特点
    • 使用ls对比
      1. 第一个字符l表示软连接
      2. 创建的软连接的权限对所有用户开放,即rwxrwxrwx
      3. 会有一个->指向源文件,当运行软连接时,归根结底它还是会需要找到源文件来执行
      4. 仅仅是一个链接,占用存储空间很小,约为 10 字节
  • 注意
    • 对软连接的操作权限不代表对源文件的操作权限,因此,所有的软链接权限文件的最后操作权限都是取决于其源文件的
    • 如果源文件没有了,那么就会提示错误 ,使用 ls -l 的时候,详细信息中包含箭头的指向路径就会变成红色,提醒我们无法找到源文件
    • 可以跨分区创建硬链接
硬链接
  • ln /etc/issue /tep/issue
    • 创建/etc/issue的硬链接
  • 特点
    • 同样使用ls -l进行对比
      1. 除了文件名不同之外,创建的硬链接的所有文件属性与源文件偶都是相同的,包括文件的大小
      2. 类似于拷贝。但是两个文件之间会同步更新,比如为文件 a 创建一个硬链接 a_hard 之后,我们修改 a_hard 中的内容,那么这个修改会同时作用到源文件,最终硬链接文件和源文件都会被修改
      3. 不能跨分区
        • 比如/分区中的文件不能在/boot中创建硬链接
  • cp -p的区别
    • cp -p只是单纯的复制,不会由同步更新的效果
  • 注意
    • 如果源文件被删除了,硬链接文件中的内容一样可以被访问
    • 硬链接可以当作一个实时的备份
    • 硬链接不能跨分区
    • 硬链接不能针对目录使用
判断链接类型
  • 使用ls -i来查看源文件及其链接的i节点
    • 源文件与硬链接文件的 i 节点但是相同的,即一个 i 节点映射到了两个文件,因此可实现同步更新的效果
    • 软连接的 i 节点与源文件不同
两种链接的不同
  • 分区
    • 硬链接不能跨分区操作
    • 软连接可以跨分区操作
  • 目录
    • 硬链接不能指向目录
    • 软连接可以指向目录
  • 文件属性
    • 软连接文件l
    • 硬链接文件-
  • 权限
    • 软连接文件的操作权限全部开放
    • 硬链接的文件操作权限与原链接相同
  • i 节点
    • 硬链接与源文件的 i 节点相同
    • 软连接与源文件的 i 节点不同