Quería ser inteligente y comparar un archivo remoto con un archivo local sin descargarlo primero manualmente. Puedo obtener el contenido del archivo remoto por
ssh user@remote-host "cat path/file.name"
Sin embargo, canalizando eso a diff
ssh user@remote-host "cat path/file.name" | diff path/file.name
me da esto:
diff: missing operand after `path/file.nae'
diff: Try `diff --help' for more information.
Tengo configuradas las claves ssh, por lo que no me solicita una contraseña. ¿Qué es una solución para esto?
command-line
pipe
diff
usuario394
fuente
fuente
-
), puede usarlo/dev/stdin
. por ejemplodiff file1 /dev/stdin
Respuestas:
Intente usar
-
para representar la entrada estándar.ssh user@remote-host "cat path/file.name" | diff path/file.name -
fuente
Aquí hay una solución alternativa:
diff
parece aceptar <( expr ) como argumentos:fuente
/dev/fd
:diff
ve algo así como/dev/fd/3
en su línea de comando).diff -y <(xmllint --format "${1}") <(xmllint --format "${2}")
que ahora uso todo el tiempo.diff <(plutil -convert xml1 -o -- "${1}") <(plutil -convert xml1 -o - -- "${2}")
Tubería en diff es equivalente a correr
diff path/file.name
y luego, una vez que se está ejecutando, escribe todo el contenido del archivo.
Como puede ver, eso no es lo que esperaba.
fuente
fuente
StrictHostKeyChecking=no
? De lo contrario, una buena respuesta.