it-swarm-eu.dev

Nemůžete potrubí do rozdílu?

Chtěl jsem být chytrý a porovnat vzdálený soubor s místním souborem, aniž bych ho nejprve stáhl ručně. Obsah vzdáleného souboru mohu získat pomocí

ssh [email protected] "cat path/file.name"

Potrubím to však do diff

ssh [email protected] "cat path/file.name" | diff path/file.name

dává mi toto:

diff: missing operand after `path/file.nae'
diff: Try `diff --help' for more information.

Mám nastaveny ssh klíče, takže mě to nevyzve k zadání hesla. Jaké je řešení tohoto problému?

81
user394

Zkuste použít - představuje standardní vstup.

ssh [email protected] "cat path/file.name" | diff path/file.name -

99
Hemant

Zde je jedno řešení: Zdá se, že diff přijímá <(expr) jako argumenty:

diff <(ssh \"cat path/file.name/") <(cat path/file.name)
68
user394

Potrubí do dif je ekvivalentní běhu

diff path/file.name

a poté, jakmile je spuštěn, zadejte celý obsah souboru.

Jak vidíte, není to to, co jste očekávali.

4
Macha
diff /tmp/localtempfile <(ssh -A -o StrictHostKeyChecking=no [email protected] "cat /tmp/remotetempfile")
1
Vlad