Não é possível canalizar no diff?

63

Eu queria ser esperto e comparar um arquivo remoto com um arquivo local sem antes baixá-lo manualmente. Posso obter o conteúdo do arquivo remoto por

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

No entanto, canalizar isso para diff

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

me dá isso:

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

Eu tenho as chaves ssh configuradas, por isso não está me solicitando uma senha. O que é uma solução para isso?

    
por user394 20.08.2010 / 20:38

4 respostas

77

Tente usar - para representar a entrada padrão.

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

    
por 20.08.2010 / 20:56
56

Aqui está uma solução alternativa: diff parece aceitar ( expr ) como arguemnts:

diff <(ssh \"cat path/file.name/") <(cat path/file.name)
    
por 20.08.2010 / 21:10
3

Pipar no diff é equivalente a correr

diff path/file.name

e, depois de executar, digitar todo o conteúdo do arquivo.

Como você pode ver, não é o que você esperava.

    
por 20.08.2010 / 20:55
1
diff /tmp/localtempfile <(ssh -A -o StrictHostKeyChecking=no root@server "cat /tmp/remotetempfile")
    
por 23.09.2010 / 15:11