shell-文件管理命令之diffstat

554 阅读2分钟

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

通过对diff的学习,发现还有许多与之相关联的命令.下面一起看一下都有啥吧.

您能在这里看到啥

  1. 测试数据
  2. diffstat

测试数据

  • di1.txt

    截屏2022-12-23 21.20.55.png

  • di2.txt

    截屏2022-12-23 21.21.09.png

diffstat

  • 含义

    diffstat命令是用来显示diff命令输出信息的直方图,是依赖diff比较结果,然后根据比较结果,统计各文件的的差异计量.当然也可以使用|diff命令输出的结果传给diffstat来显示.

    注意

    如果比较的文件或者子目录不在当前目录下,就需要使用全路径.

  • 语法

    diffstat (选项) (参数)

  • 常用参数

    标题
    -f format指定直方图的格式:
    为了简洁,只显示值和一个直方图代码insert(+)delete(-)modify(!)
    1: 正常格式
    2: 用点填充直方图
    0: 使用直方图打印每个值
    -v显示进度,将输出重定向到文件.并把进度消息写入标准错误
    -l仅显示文件名.不生成直方图
    -c输出的每一行都以#为前缀.内容为注释行
    -C添加SGR颜色突出显示直方图
    -w设置输出时,每一列的宽度
    -t代码标识重写直方图.并以逗号分隔.
    -o将输出的内容,重定向到新的文件里.

    输出参数讲解

    • +: 插入内容
    • -: 删除内容
    • !: 修改内容
  • 事例

    • 默认参数

      diff di1.txt di2.txt | diffstat  
      # 3 代表修改总次数 
      # ++ 代表2处插入
      # - 代表1处删除
      unknown |    3 ++-
      # 1 file changed
      # 1个文件发生修改
      # 2 insertions(+) 2处插入 
      # 1 deletion(-) 1处删除
      1 file changed, 2 insertions(+), 1 deletion(-)
      
      
    • -f

      设置直方图的格式

      • -f 0
        diff di1.txt di2.txt | diffstat -f 0
         unknown |    3       2 +       1 -       0 !
         1 file changed, 2 insertions(+), 1 deletion(-)
        
        从上面的输出,我们可以更直观的知道整体改变的直方图,以及各个状态的分布.
      • -f 1
        diff di1.txt di2.txt | diffstat -f 1
        unknown |    3 ++-
        1 file changed, 2 insertions(+), 1 deletion(-)
        
      • -f 2
        iff di1.txt di2.txt | diffstat -f 2
        unknown |    3 ++-.............................................................
        1 file changed, 2 insertions(+), 1 deletion(-)
        
        
    • -c

      输出每行以#开头

      截屏2022-12-23 21.40.09.png

    • -C

      SGR颜色转义突出直方图 截屏2022-12-23 21.40.34.png

    • -l

      仅列出文件名

      diff di1.txt di2.txt | diffstat -l        
      unknown
      
    • -t

      diff di1.txt di2.txt | diffstat -t
      INSERTED,DELETED,MODIFIED,FILENAME
      2,1,0,"unknown"
      

      从上面的输出结果,可以直观的知道代码标识对应的数字.及文件名字

    • -o

      diff di1.txt di2.txt | diffstat -o cdx.txt
      

      以上的命令的功效是,把diffstat输出的内容写入到cdx.txt文件里.执行结果如下所示 截屏2022-12-23 22.01.28.png

      小提醒

      如果-o写入的文件不存在,就会自动创建你定义的文件.并写入命令执行结果.