web-dev-qa-db-fra.com

Vous ne pouvez pas diriger dans diff?

Je voulais être intelligent et comparer un fichier distant à un fichier local sans d'abord le télécharger manuellement. Je peux obtenir le contenu du fichier distant en

ssh user@remote-Host "cat path/file.name"

Cependant, la canalisation vers diff

ssh user@remote-Host "cat path/file.name" | diff path/file.name

me donne ceci:

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

J'ai des clés ssh configurées, donc cela ne me demande pas de mot de passe. Quelle est une solution pour cela?

81
user394

Essayez d'utiliser - pour représenter l'entrée standard.

ssh user@remote-Host "cat path/file.name" | diff path/file.name -

99
Hemant

Voici une solution: diff semble accepter <(expr) comme arguments:

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

Le piping dans diff est équivalent à l'exécution

diff path/file.name

puis, une fois qu'il est en cours d'exécution, en tapant tout le contenu du fichier.

Comme vous pouvez le voir, ce n'est pas ce que vous attendiez.

4
Macha
diff /tmp/localtempfile <(ssh -A -o StrictHostKeyChecking=no root@server "cat /tmp/remotetempfile")
1
Vlad