diff
支持macOS Sierra上diff3
不支持的选项。例如,diff
支持-b
选项以忽略空格更改,但diff3
不支持。{/ p>
但是,diff3
支持选项--diff-program
,我认为可以使用该选项来传递将使用所需选项调用diff
的程序。
因此,我创建了一个类似mydiff
的程序:
diff -b $1 $2
但是在命令行上运行diff3 --diff-program=./mydiff left.txt base.txt right.txt
时,我收到以下错误:
diff: missing operand after `--'
diff: Try `diff --help' for more information.
diff3: subsidiary program `./mydiff' failed
如何解决这个问题?
有没有办法避免创建mydiff
并通过以某种方式设置--diff-program=...
直接在命令行中传递选项?
由于
答案 0 :(得分:1)
问题是diff3
将使用以下参数调用指定的diff
命令:--horizon-lines=100 -- F1 F2
其中F1
和F2
是文件参数。您编写mydiff
的方式,当您运行diff3 --diff-program=./mydiff left.txt base.txt right.txt
时,将执行此操作:
diff -b --horizon-lines=100 --
如果你运行它,你会得到同样的错误。
写mydiff
的正确方法:
#!/bin/sh
diff -b "$@"
不,不幸的是,没有办法在某种程度上写diff -b
内联,
您需要创建一个专用脚本才能使其与diff3
一起使用。