Vin*_*eib 7 shell pipe io-redirection
有些命令只输出到标准输出。
某些工具仅适用于文件。
有没有可以将它们粘合在一起的命令?
人为简单的例子:
diff $(echo 1 | stdout-to-temp-file) $(echo 2 | stdout-to-temp-file)
我的实际用例;当前的解决方法:
git show HEAD:$1 > /tmp/left && meld /tmp/left $1
我的实际用例;期望:
meld $(git show HEAD:$1 | stdout-to-temp-file) $1
我也会在其他一些情况下使用它(即我不是在寻找 git 或 meld only fix)。
rah*_*hmu 13
您可以使用<将输出重定向到stdin.
我不知道如何meld工作,但关于你的差异示例,它是如何工作的:
使用临时文件
$ cmd1 > file1.tmp
$ cmd2 > file2.tmp
$ diff file1.tmp file2.tmp
Run Code Online (Sandbox Code Playgroud)
没有临时文件
$ diff <(cmd1) <(cmd2)
Run Code Online (Sandbox Code Playgroud)
请注意,根据您使用的 shell(我使用的是 ksh88),语法可能会有所不同。