Eu queria ser inteligente e comparar um arquivo remoto com um arquivo local sem primeiro fazer o download manualmente. Eu posso obter o conteúdo do arquivo remoto
ssh user@remote-host "cat path/file.name"
No entanto, encanar isso para diff
ssh user@remote-host "cat path/file.name" | diff path/file.name
me dá o seguinte:
diff: missing operand after `path/file.nae'
diff: Try `diff --help' for more information.
Eu tenho chaves ssh configuradas, por isso não está me solicitando uma senha. O que é uma solução alternativa para isso?
command-line
pipe
diff
user394
fonte
fonte
-
), você poderá usar/dev/stdin
. por exemplo,diff file1 /dev/stdin
Respostas:
Tente usar
-
para representar a entrada padrão.ssh user@remote-host "cat path/file.name" | diff path/file.name -
fonte
Aqui está uma solução alternativa:
diff
parece aceitar <( expr ) como argumentemnts:fonte
/dev/fd
:diff
vê algo como/dev/fd/3
na linha de comando).diff -y <(xmllint --format "${1}") <(xmllint --format "${2}")
que agora uso o tempo todo.diff <(plutil -convert xml1 -o -- "${1}") <(plutil -convert xml1 -o - -- "${2}")
Canalizar para diff é equivalente a executar
diff path/file.name
e, em seguida, quando estiver em execução, digite todo o conteúdo do arquivo.
Como você pode ver, não é o que você esperava.
fonte
fonte
StrictHostKeyChecking=no
? Caso contrário, uma boa resposta.