这又是一个文件比较命令,熟练掌握会节省你很多工作。还记得comm命令吗?diff比他更加复杂,好用,不仅能比较文件,还能比较目录。 当一个文件有多个版本时候,或者更多复杂的文件,目录比较时,你会期望有一个比comm更有用的命令,diff正是为此而生。
全称:different file
实例:
文件1: v1.txt
复制代码 代码如下:
hello
  world v1_echo 
  v1_diff
  v1_comm 
 shell is easy!
文件2: v2.txt
复制代码 代码如下:
hello world! 
v2_echo
 v1_diff
 easy shell! 
1.普通比较:
$diff v1.txt v2.txt
复制代码 代码如下:
1,2c1,2 
 < hello world 
 < v1_echo 
 --- 
 > hello world! 
 > v2_echo 
 4c4 
 < v1_comm 
 --- 
 > easy shell!
列出比较的区别,数字为行数,c是compare
2.一体化输出:
$diff -u v1.txt v2.txt > version.patch
复制代码 代码如下:
-v1_echo 
 +hello world! 
 +v2_echo 
 v1_diff 
 -v1_comm 
 +easy shell! 
 shell is easy!
"+"表示补充的行,"-"表示删去的行
3. 更新覆盖v1.txt,注意这里借用了patch
$patch –p1 v1.txt< version.patch
4. 比较v1,v2文件,仅输出v2的变化
$diff -e v1.txt v2.txt 
复制代码 代码如下:
 4c 
 easy shell! 
 . 
 1,2c 
 hello world! 
 v2_echo 
 .
5.比较目录
借用书上一段解释:
-N 将所有确实的文件视为空文件
-a 将所有文件市委文件文本
-u 生成一体化输出
-r 遍历目录下的所有文件
比较两个目录下所有文本信息
$diff –Naur directory1 directory2
除非你确定这两个目录基本相同,不然不推荐这么用。
6.工作疲劳后,尤其同时做很多事情的时候,会忘了有没有做过上传,或者修改某个目录下的文件。可以这样:
$diff v1.txt /${dir}
直接比较同名文件,高强度下的工作者相信真有体会。
解读下—help
太长,截取少部分解读一下。
复制代码 代码如下:
Mandatory arguments to long options are mandatory for short options too. 
 --normal                                        output a normal diff (the default) 
 -q, --brief                                      report only when files differ 
 -s, --report-identical-files               report when two files are the same 
 -c, -C NUM, --context[=NUM]   output NUM (default 3) lines of copied context 
 -u, -U NUM, --unified[=NUM]     output NUM (default 3) lines of unified context 
 -e, --ed                                          output an ed script 
 -n, --rcs                                         output an RCS format diff 
 -y, --side-by-side                           output in two columns 
FILES 的格式可以是‘FILE1 FILE2'、‘DIR1 DIR2'、‘DIR FILE...'或 
‘FILE... DIR'。 
解读:
1.-q –s
-q: 只有两个不同是,提示“两个文件不同”
-s: 两个文件相同时,提示“两个文件相同”
$diff -qs v1.txt v2.txt
(有点无聊的命令 )
2. –y
按照列的方式输出,增加了直观性
复制代码 代码如下:
 hello world               | hello world! 
 v1_echo                    | v2_echo 
 v1_diff                       v1_diff 
 v1_comm                   | easy shell! 
 shell is easy!               shell is easy! 
3. file 后面的格式
可以是1.文件 文件 2.目录与目录 3.文件与目录 4. 目录与文件
解释一下,文件与目录的形式,比较的是该目录下 与 比较文件同名的文件比较
如:$ diff v1.txt diff/
则实际是v1.txt 与 diff/v1.txt的比较。这是个很常用的功能。 
对比comm
就比较文件而言,comm功能比较简单,但是也很直观,方便
而diff 提供了更强大,更复杂的比较方式,还能对比目录,遍历目录。
复制代码 代码如下:
用法:diff [选项]... FILES
Compare FILES line by line.
Mandatory arguments to long options are mandatory for short options too.
      --normal                  output a normal diff (the default)
  -q, --brief                   report only when files differ
  -s, --report-identical-files  report when two files are the same
  -c, -C NUM, --context[=NUM]   output NUM (default 3) lines of copied context
  -u, -U NUM, --unified[=NUM]   output NUM (default 3) lines of unified context
  -e, --ed                      output an ed script
  -n, --rcs                     output an RCS format diff
  -y, --side-by-side            output in two columns
  -W, --width=NUM               output at most NUM (default 130) print columns
      --left-column             output only the left column of common lines
      --suppress-common-lines   do not output common lines
  -p, --show-c-function         show which C function each change is in
  -F, --show-function-line=RE   show the most recent line matching RE
      --label LABEL             use LABEL instead of file name
                                  (can be repeated)
  -t, --expand-tabs             expand tabs to spaces in output
  -T, --initial-tab             make tabs line up by prepending a tab
      --tabsize=NUM             tab stops every NUM (default 8) print columns
      --suppress-blank-empty    suppress space or tab before empty output lines
  -l, --paginate                pass output through `pr' to paginate it
  -r, --recursive                 recursively compare any subdirectories found
  -N, --new-file                  treat absent files as empty
      --unidirectional-new-file   treat absent first files as empty
      --ignore-file-name-case     ignore case when comparing file names
      --no-ignore-file-name-case  consider case when comparing file names
  -x, --exclude=PAT               exclude files that match PAT
  -X, --exclude-from=FILE         exclude files that match any pattern in FILE
  -S, --starting-file=FILE        start with FILE when comparing directories
      --from-file=FILE1           compare FILE1 to all operands;
                                    FILE1 can be a directory
      --to-file=FILE2             compare all operands to FILE2;
                                    FILE2 can be a directory
  -i, --ignore-case               ignore case differences in file contents
  -E, --ignore-tab-expansion      ignore changes due to tab expansion
  -Z, --ignore-trailing-space     ignore white space at line end
  -b, --ignore-space-change       ignore changes in the amount of white space
  -w, --ignore-all-space          ignore all white space
  -B, --ignore-blank-lines        ignore changes whose lines are all blank
  -I, --ignore-matching-lines=RE  ignore changes whose lines all match RE
  -a, --text                      treat all files as text
      --strip-trailing-cr         strip trailing carriage return on input
  -D, --ifdef=NAME                output merged file with `#ifdef NAME' diffs
      --GTYPE-group-format=GFMT   format GTYPE input groups with GFMT
      --line-format=LFMT          format all input lines with LFMT
      --LTYPE-line-format=LFMT    format LTYPE input lines with LFMT
    These format options provide fine-grained control over the output
      of diff, generalizing -D/--ifdef.
    LTYPE 可以是‘old'、‘new'或‘unchanged'。GTYPE 可以是 LTYPE 的选择
    或是‘changed'。
    GFMT (only) may contain:
      %<  lines from FILE1
      %>  lines from FILE2
      %=  lines common to FILE1 and FILE2
      %[-][WIDTH][.[PREC]]{doxX}LETTER  printf-style spec for LETTER
        LETTERs are as follows for new group, lower case for old group:
          F  first line number
          L  last line number
          N  number of lines = L-F+1
          E  F-1
          M  L+1
      %(A=B?T:E)  if A equals B then T else E
    LFMT (only) may contain:
      %L  contents of line
      %l  contents of line, excluding any trailing newline
      %[-][WIDTH][.[PREC]]{doxX}n  printf-style spec for input line number
    Both GFMT and LFMT may contain:
      %%  %
      %c'C'  the single character C
      %c'\OOO'  the character with octal code OOO
      C    the character C (other characters represent themselves)
  -d, --minimal            try hard to find a smaller set of changes
      --horizon-lines=NUM  keep NUM lines of the common prefix and suffix
      --speed-large-files  assume large files and many scattered small changes
      --help               display this help and exit
  -v, --version            output version information and exit
  FILES 的格式可以是‘FILE1 FILE2'、‘DIR1 DIR2'、‘DIR FILE...'或
      ‘FILE... DIR'。
If --from-file or --to-file is given, there are no restrictions on FILE(s).
如果 FILE 是‘-',则由标准输入读取内容。
如果输入相同,则退出状态为 0;1 表示输入不同;2 表示有错误产生。
linux,diff
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
 - 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
 - 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
 - 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
 - 群星《2024好听新歌42》AI调整音效【WAV分轨】
 - 王思雨-《思念陪着鸿雁飞》WAV
 - 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
 - 李健《无时无刻》[WAV+CUE][590M]
 - 陈奕迅《酝酿》[WAV分轨][502M]
 - 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
 - 群星《吉他王(黑胶CD)》[WAV+CUE]
 - 齐秦《穿乐(穿越)》[WAV+CUE]
 - 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
 - 邝美云《邝美云精装歌集》[DSF][1.6G]
 - 吕方《爱一回伤一回》[WAV+CUE][454M]