vimdiff para comparar resultados en lugar de archivos

15

Estoy tratando de comparar dos salidas de comando (sin archivos)

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

Intenté jugar con redirección, canalización, vim - -cpero debo estar perdiendo algo. ¿Alguien puede ayudar por favor?

Florian Bidabe
fuente

Respuestas:

23

Estás confundido $(…)con <(…). Usó el primero, que pasa la salida como argumentos a vimdiff. Por ejemplo, si la última línea de /path/to/foocontiene bar bar bar, entonces el siguiente comando

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

es equivalente a

echo bar bar bar

En cambio, necesitas usar <(…). Esto se denomina sustitución de proceso y pasa el resultado como un pseudoarchivo al vimdiffcomando. Por lo tanto, use lo siguiente.

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

Esto funciona en bash y zsh, pero aparentemente no hay forma de realizar la sustitución de procesos en tcsh.

Gavilán
fuente
sin embargo, esto es solo en bash
simona
@simona también funciona para mí en zsh. Probablemente csh y tcsh también.
Sparhawk
@Sparhawk no funciona en tcsh
simona
@simona Gracias por esa información; No estoy familiarizado con tcsh. Puede considerar poner una respuesta que funcione en tsch. Salud.
Sparhawk
@Sparhawk aparentemente no hay forma de hacerlo tcshsin crear un archivo unix.stackexchange.com/questions/5111/…
simona