vimdiff para comparar saída em vez de arquivos

13

Estou tentando comparar duas saídas de comando (sem arquivos)

vimdiff "$(tail /tmp/cachain.pem)" "$(tail /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem)"

Eu tentei jogar com redirecionamento, pipe e vim - -c , mas devo estar perdendo alguma coisa. Alguém pode ajudar por favor?

    
por Florian Bidabe 25.11.2015 / 01:26

1 resposta

19

Você está confundindo $(…) com <(…) . Você usou o primeiro, que passa a saída como argumentos para vimdiff . Por exemplo, se a última linha de /path/to/foo contiver bar bar bar , o seguinte comando

echo $(tail -1 /path/to/foo)

é equivalente a

echo bar bar bar

Em vez disso, você precisa usar <(…) . Isso é chamado de substituição de processo e passa a saída como um pseudo -file para o comando vimdiff . Por isso, use o seguinte.

vimdiff <(tail /tmp/cachain.pem) <(tail /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem)

Isso funciona no bash e no zsh, mas aparentemente não existe nenhuma maneira de fazer a substituição do processo no tcsh.

    
por 25.11.2015 / 02:07