shell-文件管理命令之patch

166 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第33天,点击查看活动详情

在学习了diff命令后,首先我们发现了,第一个小弟diffstat,主要功能就是让diff比较结果更直观的展示.
然后我们就发现了另外一个大哥patch.那它主要干啥呢,我们一起来学一下吧.

目录

  1. patch
  2. more

patch

  • 含义

    从我的使用情况来看,我对patch的理解是.它就是给你弥补过错的大哥.通俗点就是用于修复文件的补丁.
    突然想起武器大师的经典台词 --- 最强的武器就是补丁.
    patch命令提供给用户必用设置修补文件的方式,修改更新原始文件.

    那为什么要和diff一起使用呢.因为当我们比较两个文件有差异的时候,怎么让旧文件更新成新文件呢.先比较文件差异.并将差异制作成补丁文件,再由补丁文件更新到有差异的文件即可.

  • 语法

    patch [参数] [原文件] [补丁文件]
    
  • 常用参数

    参数含义
    -b-backup备份每一个原始文件,并在修补文件的时候,重命名或者复制原始文件,而不是删除原始文件
    -E--remove-empty-files如果修复过的文件输出内容是空白,则删除该文件
    -o<输出文件>--output=<输出文件>配置输出文件的名字,修补过的文件以该名称命名
  • 事例

    1. 生成补丁

    • 准备测试数据
      cat demo.txt
      插入测试数据
      测试
      cat ts.txt
      插入测试数据
      我是不同之处
      
    • 对比不同
      diff demo.txt ts.txt
      2c2
      < 测试
      ---
      > 我是不同之处
      \ No newline at end of file
      
    • 生成补丁包
      diff demo.txt ts.txt > demo.txt.patch
      
    1. 升级文件
      patch demo.txt < demo.txt.patch
      cat demo.txt
      插入测试数据
      我是不同之处
      

more

  • 含义

    morelesscat功能相似.都是用来显示文本内容,只是more命令以一页一页的形式显示文本内容.并可以通过按空格键(space)来显示下一页内容.按住b键可以显示上一页内容.并带有搜索字符串的功能

  • 语法

    more [参数] [文件名]
    
  • 参数

    参数含义
    -num, -n定义一屏显示n
    +num,+n从第n行开始显示内容
    +/content从文件中查找到第一个出现设置的搜索content字符串的行,并从该行前两行开始显示内容
    -c从顶部开始清屏,然后显示内容
    -l忽略 Ctrl + l 字符
    -p通过清除窗口进行换页,而不是滚屏来实现.
    -s设置连续空行转换为一行显示
    -u清除文件内容中的下划线
    -d提示Press space to continue,‘q’ to quit(按空格键翻页,按q键退出) ,当输入内容不是q错的时候,不做响铃提示
  • 常用组合键

    组合键盘含义
    Enter向下滑动n行,需要自己定义,默认1行
    Ctrl + F向下滚动一页
    空格键(space)向下滚动一页
    Ctrl + B返回上一页
    =输出当前的行号
    :f输出文件名字和当前的行号
    V调用vi编辑器
    q退出more命令
  • 事例

    • -n

      设置一屏显示20行

      more -20 test.sh
      

      执行结果 截屏2022-12-27 22.12.45.png

      由于控制台设置的比较大.一屏显示的行数已经大于了20行.但是当你执行翻页的时候.你会发现,他只是滑动了20行.所以我们知道.20设置的是每页显示的行数.当执行反页,也是根据这个处理,并非你当前的控制台的大小.

    • +n

      显示文件第5行起的内容

      more +5 test.sh
      

      执行结果 截屏2022-12-27 22.18.35.png

    • +/content

      显示内容从第一个出现if开始显示

      more +/if test.sh
      

      执行结果 截屏2022-12-27 22.20.13.png

    • -s

      1. 先正常显示文本

        more demo.txt
        

        执行结果

        截屏2022-12-27 22.26.13.png

      2. 合并多余的空行

        more -s demo.txt
        

        执行结果

        截屏2022-12-27 22.27.11.png

    • -c

      1. 设置上面有内容,如下所示

        截屏2022-12-27 22.29.02.png

      2. 执行-c

        more -c demo.txt
        

        执行结果

        截屏2022-12-27 22.30.07.png

        这样就更直观的知道了,从顶部开始具体表现了,有些时候,光看文档还是不行的,还是需要实践一下的.

学习资料