diff
支持macOS Sierra上diff3
不支持的选项。例如,diff
支持-b
忽略空格更改的选项,但diff3
不支持。
但是,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=...
直接在命令行中传递选项?
谢谢
问题是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
一起使用。