使用 diff3 时如何将选项传递给 diff 命令
How to pass options to diff command when using diff3
diff
支持 macOS Sierra 上 diff3
不支持的选项。例如,diff
支持 -b
选项以忽略白色 space 更改,但 diff3
不支持。
但是,diff3
支持选项 --diff-program
,我想它可以用来传递一个程序,该程序将使用所需的选项调用 diff
。
因此,我创建了一个这样的程序 mydiff
:
diff -b
但是当在命令行上运行 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
.
一起使用
diff
支持 macOS Sierra 上 diff3
不支持的选项。例如,diff
支持 -b
选项以忽略白色 space 更改,但 diff3
不支持。
但是,diff3
支持选项 --diff-program
,我想它可以用来传递一个程序,该程序将使用所需的选项调用 diff
。
因此,我创建了一个这样的程序 mydiff
:
diff -b
但是当在命令行上运行 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
.