Linux基礎命令—diffstat

一生有你llx發表於2018-11-22
diffstat
      這個程式讀取diff的輸出,並顯示每個檔案的插入、刪除和修改的直方圖。Diffstat是一個用於檢查大型複雜修補程式檔案的程式。它從包含diff輸出的一個或多個輸入檔案中讀取,生成針對引用的每個檔案更改的總行的直方圖。如果輸入檔名以.bz 2、.gz、.lzma、.z或.z結尾,Diffstat將通過管道從相應的程式讀取未壓縮資料。它還可以根據標準輸入的管道檔案推斷壓縮型別。
      Diffstat識別來自diff的最流行的輸出型別:
      unified,修補程式首選。
      context,最好的可讀性,但不太緊湊。
      default,不是很好,但很容易產生。

      Diffstat檢測由diff輸出的行,以判斷比較了哪些檔案,然後在第一列中計數表示更改型別(插入、刪除或修改)的標記。這些在直方圖中顯示為“、”-“和”!“字元。如果命令列上沒有指定檔名,Diffstat將讀取標準輸入中的差異。
此命令的適用範圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語法
      diffstat  [options]  [file-specifications]

2、選項列表
      -b
            忽略diff中的“二進位制檔案XXX和YYY不同”匹配的行
      -c
            在每一行輸出前加上“#”,使其成為shell指令碼的註釋行。
      -D destination
            指定一個目錄,其中包含可作為應用差異的結果而引用的檔案。Diffstat將計算相應檔案中的行數(在通過-p選項調整名稱之後),以獲得每個檔案中的總行數。
      -e file
            將標準錯誤重定向到檔案
      -f format
            指定直方圖的格式:
            0,為了簡潔,它只顯示值和一個直方圖程式碼insert (+),delete (-)或modify (!)。
            1,正常格式。
            2,用點填充直方圖。
            4,使用直方圖列印每個值。
            任何非零值都會給出直方圖。點和個別值可以結合在一起,例如-f6給出兩者。
      -h
            顯示幫助資訊並且退出
      -k
            禁止合併報表中的檔名
      -l
            只列出檔名。不生成直方圖。
      -m
            從修補程式檔案的每個“塊”中合併插入/刪除計數,以接近修改行的計數
      -n number
            指定用於檔名的最小寬度。如果不指定這一點,Diffstat在去掉常見字首後使用最長檔名的長度。
      -N number
            指定用於檔名的最大寬度。超過此限制的名稱在左側被截斷。如果您沒有指定此選項,下面將檢查-n選項。
      -o file
            將標準輸出重定向到檔案
      -p number
            重寫刪除公共路徑名的邏輯,模擬修補程式“-p”選項。
      -q
            抑制空差異的“0檔案更改”訊息
      -r code
            提供直方圖中顯示的資料的可選舍入,而不是通過錯誤調整截斷資料:
            0,是預設的。不執行舍入操作,但累積錯誤將新增到下列中。
            1,舍入資料。
            2,對資料進行舍入並調整直方圖,以確保在有任何差異的情況下顯示某些內容,即使這些差異通常被四捨五入為零。
      -S source
            這類似於-D選項,但指定了一個可以找到原始檔案(在應用差異之前)的位置。
      -t
            重寫直方圖,生成逗號分隔值的輸出。
      -u
            禁止對報表中的檔名進行排序。
      -v
            顯示進度,例如,如果輸出重定向到檔案,則將進度訊息寫入標準錯誤
      -V
            顯示版本號,並且退出
      -w number
            指定直方圖的最大寬度。直方圖將永遠不會小於10列,以防檔名過大。

3、環境變數
      Diffstat執行在可移植的UNIX環境中。您可以通過設定與輸入檔名稱相對應的環境變數來覆蓋用於解壓縮輸入檔案的程式的編譯路徑。然而,Diffstat假設生成的程式使用相同的命令列選項,例如“-c”來解壓縮到標準輸出。
      DIFFSTAT_BZCAT_PATH
      DIFFSTAT_BZIP2_PATH
      DIFFSTAT_COMPRESS_PATH
      DIFFSTAT_GZIP_PATH
      DIFFSTAT_LZCAT_PATH
      DIFFSTAT_PCAT_PATH
      DIFFSTAT_UNCOMPRESS_PATH
      DIFFSTAT_ZCAT_PATH


4、例項
統計差異資訊 
      [root@localhost wj]# diff 1.c 2.c
      1c1
      < asd
      —
      > add
      3,4c3,4
      < dfg
      < ass
      —
      > dsgf
      > sss
      [root@localhost wj]# diff 1.c 2.c |diffstat -f 2
       unknown |    6 +++—………………………………………………….
       1 file changed, 3 insertions(+), 3 deletions(-)
      [root@localhost wj]# diff 1.c 2.c |diffstat -f 1
       unknown |    6 +++—
       1 file changed, 3 insertions(+), 3 deletions(-)
      You have new mail in /var/spool/mail/root
      [root@localhost wj]# diff 1.c 2.c |diffstat -f 0
       unknown |    6  3 + 3 – 0 !
       1 file changed, 3 insertions(+), 3 deletions(-)
      [root@localhost wj]# 

相關文章