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?

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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.