vimdiff para comparar a saída em vez de arquivos

15

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)"

Tentei brincar com redirecionamento, pipe e vim - -cmas devo estar faltando alguma coisa. Alguém pode ajudar por favor ?

Florian Bidabe
fonte

Respostas:

23

Você está confuso $(…)com <(…). Você usou o primeiro, que passa a saída como argumentos para vimdiff. Por exemplo, se a última linha de /path/to/foocontiver 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 substituição de processo e passa a saída como um pseudo-arquivo para o vimdiffcomando. Portanto, 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 há como fazer a substituição do processo no tcsh.

Sparhawk
fonte
isso é apenas no bash
simona 31/05
@simona Também funciona para mim no zsh. Provavelmente csh e tcsh também.
Sparhawk
@Sparhawk ele não funciona em tcsh
Simona
@ Simona Obrigado por essa informação; Eu não estou familiarizado com o tcsh. Você pode considerar colocar uma resposta que funcione no tsch. Felicidades.
Sparhawk
@Sparhawk aparentemente não há nenhuma maneira para isso no tcshsem criar um arquivo unix.stackexchange.com/questions/5111/...
Simona