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, cela passe à 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 les clés ssh configurées, donc ce n'est pas pour me demander un mot de passe. Qu'est-ce qu'une solution de contournement pour cela?
command-line
pipe
diff
utilisateur394
la source
la source
-
), vous pouvez utiliser/dev/stdin
. par exemplediff file1 /dev/stdin
Réponses:
Essayez d'utiliser
-
pour représenter l'entrée standard.ssh user@remote-host "cat path/file.name" | diff path/file.name -
la source
Voici une solution de contournement:
diff
semble accepter <( expr ) comme argument:la source
/dev/fd
:diff
quelque chose comme/dev/fd/3
sur sa ligne de commande).diff -y <(xmllint --format "${1}") <(xmllint --format "${2}")
je l’utilise maintenant tout le temps.diff <(plutil -convert xml1 -o -- "${1}") <(plutil -convert xml1 -o - -- "${2}")
Piping dans diff est équivalent à courir
diff path/file.name
et ensuite, une fois qu'il est en cours d'exécution, en tapant tout le contenu du fichier.
Comme vous pouvez le constater, ce n'est pas ce à quoi vous vous attendiez.
la source
la source
StrictHostKeyChecking=no
? Sinon une bonne réponse.