diff


diff

文章插图
diff【diff】diff 命令比较文本档案 。它能比较单个档案或者目录内容 。
diff 命令只有当输入为文本档案时才有效 。
如果指定了 Directory1 和 Directory2 参数,diff 命令比较两个目录下名字相同的文本档案 。列出不同的二进制档案、公共子目录和只在一个目录出现的档案 。
diff命令用于比较两个档案的差异,它可以被製作成补丁档案,使用patch命令对相应的档案打补丁 。
基本介绍外文名:diff
用途语法:比较两个档案的内容
描述:diff 命令比较文本档案
标誌:将每行末尾当作单个新行标记处理
diff 命令:只有当输入为文本档案时才有效
Linux用途语法比较文本档案 。语法比较两个档案的内容diff [ -c | -C Lines | -D [ String ] | -e | -f | -n ] [ -b ] [ -i] [ -t ] File 1 File2diff [ -h ] [ -b ] File 1 File2排序字典的内容并比较不同的档案diff [ -c | -C Lines | -e | -f | -n ] [ -b ] [ -i ] [ -l ] [ -r ] [ -s ] [ -S File ] [ -t ] [ -w ] Directory1 Directory2diff [ -h ] [ -b ] Directory1 Directory2描述diff 命令比较文本档案 。它能比较单个档案或者目录内容 。注:diff 命令只有当输入为文本档案时才有效 。如果指定了 Directory1 和 Directory2 参数,diff 命令比较两个目录下名字相同的文本档案 。列出不同的二进制档案、公共子目录和只在一个目录出现的档案 。当 diff 命令运行于常规档案时,且当目录比较期间比较不同的文本档案时,diff 命令显示档案中哪些行必须更改以保持它们一致 。如果 File1 和 File2 参数都不是目录,其中之一可能给定负号“-”,以採用标準输入 。如果 File1 参数是目录,则使用目录中与 File2 参数指定的档案名称一致的那个档案 。典型输出Lines Affected in File1 Action Lines Affected in File2Number1 a Number2[,Number3]Number1[,Number2] d Number3Number1[,Number2] c Number3[,Number4]这些行类似于 ed 子命令将 File1 档案转换成 File2 档案 。Action 字母之前的数字指 File1;后面的数字则指 File2 。因此,通过将 a 替换成 d,从右往左读,您就能知道如何将 File2 转换成 File1 。在 ed 命令下,相同的对(即 Number1 = Number2)会简略为单个数字 。下列每一行,diff 命令显示以 <:(小于符号,冒号)开始的第一个档案中的所有受影响行,然后显示以 >(大于符号)开始的第二个档案中的所有受影响行 。退出值 0 表示没有不同,1 表示找到不同处,2 表示出错 。注:如果指定了多于一个的 -c、-C、-D、-e、-f 或者 -n 标誌,命令行上的最后一个具有优先权 。系统不发出错误讯息 。标誌-b 将每行末尾当作单个新行标记处理(忽略新行字元前的空格字元)的任意数量空格字元与其他空格字元串(除了新行标记)同样地比较 。-C Lines 启动 diff 命令,但只比较 Lines 变数指定的行数 。-C 标誌稍微修改输出 。输出以档案的相同部分和创建日期开始 。每个更改以 12 个 *(星号)组成的行分隔 。从 File1 中要删的行以 -(减号)标记,File2 中要添加的行以 +(加号)标记 。从一个档案更改到另一个档案的行在两个档案中都以 !(惊叹号)标记 。在每一个档案的指定上下文行中的更改会被整组一起输出 。-c 启动 diff 命令,比较三行上下文 。-c 标誌稍微修改输出 。输出以涉及档案的标识和它们的创建日期开始 。每个更改以 12 个 *(星号)组成的行分隔 。File1 中要删的行以 -(减号)标记,要被添加到 File2 的行以 + (加号)标记 。从一个档案更改到另一个档案的行在两个档案中都以 !(惊叹号)标记 。在每一个档案的指定上下文行中的更改会被整组一起输出 。-D [ String ] 使得 diff 命令在标準输出上建立一个 File1 和 File2 的合併版本 。包含了 C 预处理器控制项以便没有定义 String 的结果编译等同于编译 File1,同时定义 String 产生 File2 。-e 以适合 ed 编辑器的格式进行输出,将 File1 转换成 File2 。当使用这个标誌时,以下 shell 程式可以帮助维护一个档案的多个版本 。手头仅需要由 diff 命令生成的一个祖先档案($1)和一系列版本的 ed 脚本($2、$3、...) 。标準输出上的最近版本如下:(shift; cat $*; echo '1,$p') | ed - $1当使用 -e 标誌比较目录时,输出上添加了额外的命令,因此,结果是一个 shell 脚本,将两个目录上的共有文本档案从 Directory1 上的状态转换到 Directory2 上的状态 。注:由 -e 或 -f 标誌产生的编辑脚本无法创建由单个组成的行 。(周期) 。-f 以不适合 ed 编辑器的格式创建输出,按照在 -e 标誌下产生的逆向顺序显示从 File1 到 File2 的转换的必要修改 。-h 如果要更改的部分比较短而且分隔清晰,则执行备用的比较可能会更快 。-h 标誌可用于任意长度的档案 。-c、-C、-D、-e、-f 和 -n 标誌无法与 -h 标誌一起使用 。当使用 -h 标誌时,除了 -b 标誌,其他标誌一律忽略 。-i 忽略字母大小写 。例如,小写 a 被认为同大写 A 一样 。-l 长输出格式 。每个由文本档案比较 diff 命令获得的结果通过命令 pr 输送分页 。在报告所有文本档案不同之处后,其他不同之处将被记忆和总结 。-n 产生类似于 -e 标誌创建的输出,但是顺序相反,而且在每一插入或删除命令上进行更改计数 。这是修订控制项系统(RCS)所用的格式 。-r 使 diff 命令的应用程式递归到遇到的公共子目录 。-s 报告相同的档案,否则不提 。-S [ File ] 当比较目录时,忽略在 File 变数指定的档案之前整理名称的档案 。-S 标誌只用于 Directory1 和 Directory2 参数指定的目录 。如果您将 -r 标誌与 -S 标誌一起使用, -S 标誌在 Directory1 和 Directory2 子目录中不进行递归 。-t 在输出行扩展制表符 。典型输出或者 -c 标誌输出会添加字元到每一行首,这会影响初始行的缩进,使得输出列表难以解释 。该标誌则保留原始源的缩进 。-w 忽略所有空格和制表符,将所有其他空白字元串视为一致 。例如,if ( a == b ) 与 if(a==b) 相等 。退出状态此命令返回下列退出值:0 未找到不同处 。1 找到不同处 。>1 发生错误 。示例1. 要比较两个档案,请输入:diff chap1.back chap1只显示档案 chap1.bak 和 chap1 的不同之处 。2. 要比较两个档案,但是忽略空格字元个数的区别,请输入:diff -w prog.c.bak prog.c如果两行仅仅空格和制表符数目不同,则 diff -w 目录认为它们相等 。3. 要创建一个包含 ed 命令可以用于从另一个档案重构档案的命令的档案,请输入:diff -e chap2 chap2.old >new.to.old.ed这将创建一个名为 new.to.old.ed 的档案,它包含 ed 子命令,把 chap2 转换回在 chap2.old 中找到的文本版本 。在大多数情况下,new.to.old.ed 比 chap2.old 要小很多 。您可以通过删除 chap2.old 以节省磁碟空间,您也可以在任何时候重建它,通过输入:(cat new.to.old.ed ; echo '1,$p') | ed - chap2 >chap2.old括弧中的命令把 1,$p 添加到编辑命令的末尾,传送给 ed 编辑器 。1,$p 使得 ed 命令在编辑完成后将档案写到标準输出 。这一修改的命令序列然后从管道传给 ed 命令(| ed),编辑器读取它作为标準输入 。- 标誌使 ed 命令不显示档案大小以及其他附加信息因为它们易与 chap2.old 的文本混餚 。档案/usr/bin/diff 包含 diff 命令 。使用1) diff/patch这对工具在数学上来说,diff是对2个集合求差,patch是求和diff A B > C 生成A和B的diff档案Cpatch A C 给A打上diff档案得到Bpatch -R B C B还原为A2) 核心补丁生成 diff -uNr linux-2.6.xxx linux-2.6.xxx.1 > diff.patch升级cp diff.patch linux-2.6.xxx/.cd linux-2.6.xxxpatch -p1 < diff.patchDIFF线DIFF线 收盘价短期、长期指数平滑移动平均线间的差DEA线DIFF线的M日指数平滑移动平均线MACD线 DIFF线与DEA线的差,彩色柱状线参数:SHORT(短期)、LONG(长期)、M 天数,一般为12、26、9用法:1.DIFF向上突破DEA,买入信号 。2.DIFF向下跌破DEA,卖出信号 。3.DEA线与K线发生背离,行情反转信号 。4.分析MACD柱状线,由红变绿(正变负),卖出信号;由绿变红,买入信号以上只是基本知识,具体内容很複杂,该指标要与K线系统,成交量系统配合看.它即使独立看,也是很有讲究的,金叉,死叉有零上与零下之分,前后有背离之分,红柱桩与黄白线的关係,绿柱桩与黄白线的关係,黄白线在柱桩里运行和柱桩外运行,也是有学问的.山包与山包的关係,大山包与小山包的关係,月线,周线,日线,分时线的看盘方法也是不同的.另外我要强调的是MACD在各种指标中,是最好的指标,非常複杂,非常丰富,但又非常管用.也就是说在钱龙一出现就排在第一的道理.移动平均线PMA是量的一种表现形式.比如指数的三日移动平均线,首先取得连续三日的三个指数,计算其平均值A,然后后移.去掉最先一个指数,增加新一日一个指数,再计算三个指数的平均值B.如此移动计算,得到一条三日移动平均线 。同理,可得五日,六日,十日,十三日,三十日,七十日,二百日等移动平均线 。移动平均线由样本数的多少决定了移动变化的急缓 。样本数少,变化较急,称为快速线,因此多作为短线指标 。样本数多,变化较缓,称为慢速线,在样本数适当多的时候,多作为中线或长线指标,重要的是, 因为移动平均线是由一定样本的集合的连续移动计算产生,所以它的移动方向和速度代表了该集合的整体态势 。这一点,正是人们所要利用的 。1、移动平均线向上或向下,都表示了趋势的方向,所以一般而言,PMA由下转上为买入信号,PMA由上转下为卖出信号 。但PMA日数N的选择往往决定了你的买卖是否成功及成效的大小 。这是因为,对单条PMA而言,快速线反映敏感却显浮躁, 慢速线反映沉实却显呆滞 。然而N的选择终归是没有定论的,不过却有一条原则,即:选择N使得PMA逼近所分析品种的短期,中期和长期的循环周期.这是要具体分析才能确定的 。如果从某一数学模型来考虑,则是套用费波南茨级数3,5,8,13,21,34, 55, 来确定PMA的N值 。2、当PMA在指数上方时,PMA是指数的压力线;当PMA 在指数的下方时,PMA是指数的支持线 。一般而言,指数向下跌破PMA为卖出信号,指数向上升穿PMA为买入信号 。3、美国的专家葛蓝碧为此提出八大买卖法则(PMA=200日PMA,)如下:(1) 买入信号1:PMA下降后出现平盘或回升移动,当价格突破PMA压力上升为重要的买入信号 。(2) 买入信号2:PMA仍然上升,但价格却跌穿PMA的支持线,当价格又向上时为买入信号 。(3) 买入信号3:价格下跌,但获PMA良好支持后回升时为买入信号 。(4) 买入信号4:价格在高位跌破了PMA支持线,引发了急速下跌,短期内价格仍有向PMA回归的要求,当价格开始向 PMA 回归反弹时为买入信号 。(5) 卖出信号1:市势逆转,价格跌破PMA支持线时为重要的卖出信号 。(6) 卖出信号2:PMA已处在下降过程中,价格向PMA的回归反弹上穿PMA压力线,当价格复向下时为卖出信号 。(7) 卖出信号3:价格再次向PMA回归反弹,但被PMA有效压制后下跌为卖出信号 。(8) 卖出信号4:价格在低位升穿了PMA压力线,引发了急速上升,短期内价格仍有向PMA回归的要求,当价格开始向PMA回归整理时为卖出信号 。MATLAB函式简介在matlab中,diff函式用于求导数或者向量和矩阵的比较(详细说明参见: 调用格式及说明) 。在matlab的命令视窗中输入doc diff或者help diff即可获得该函式的帮助信息 。调用格式及说明Y = diff(X)这里求函式X的一阶导数Y = diff(X,n)求函式X的n阶导数Y = diff(X,dim)求函式X关于变数dim的偏导数Y = diff(X,n,dim)求函式X关于dim的n阶偏导数若X为向量,Y = diff(X)= [X(2)-X(1),X(3)-X(2),...,X(n)-X(n-1)]求前后两项之差若X为矩阵,Y = diff(X)= [X(2:n,:) - X(1:n-1,:)]求每列前后两项之差相关函式gradient, prod, sum程式示例>> syms x y z;>> y=x^2+z^2;>> diff(y)ans =2*x>> diff(y,z)ans =2*z在这个示例中,定义了三个符号变数x y z,然后令y等于x和z的平方和,然后diff(y)求关于x的偏导数,而diff(y,z) 则是对y求关于z的偏导数 。>> x=[2 3 5 7 12 23]>> d=diff(x)d =1 2 2 5 11当然X可以是一个矩阵 。更多示例请参阅matlab的帮助文档 。1)diff基本用法:#diff foo.txt foo1.txt9c9< everything---> everybodya表示第一个档案进行了新增d表示第一个档案进行了删除c表示第一个档案进行了修改<表示第一个档案的差异>表示第二个档案的差异2)diff生成补丁档案假设当前路径为demo#mkdir old/a/b/foo.txt#vi old/a/b/foo.txt输入以下信息:old_line_1old_line_2我们準备要对old目录下的foo.txt进行修改,先複製一份,修改后再製作补丁 。#cp -R old newvi new/a/b/foo.txt将原信息修改为:new_line_1new_line_2diff -urN old new > foo.patch参数详解-u 採用统一格式输出-r 对目录进行比较-N 新档案作为空档案进行比较,即新档案会打入补丁包中3)patch进行补丁patch -p0 < foo.patch参数详解-p 表示跳过几级目录,0表示无需跳过这样就可以对old/a/b/foo.txt打补丁 。