vimdiff, um die Ausgabe anstelle von Dateien zu vergleichen


15

Ich versuche zwei Befehlsausgaben zu vergleichen (keine Dateien)

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

Ich habe versucht, mit Umleitung und Pipe zu spielen, vim - -caber mir muss etwas fehlen. Kann jemand bitte helfen?

Antworten:


22

Sie verwechseln $(…)mit <(…). Sie haben den ersteren verwendet, der die Ausgabe als Argumente an übergibt vimdiff. Wenn zum Beispiel die letzte Zeile von /path/to/fooenthält bar bar bar, dann den folgenden Befehl

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

ist äquivalent zu

echo bar bar bar

Stattdessen müssen Sie verwenden <(…). Dies wird als Prozessersetzung bezeichnet und übergibt die Ausgabe als Pseudodatei an den vimdiffBefehl. Verwenden Sie daher Folgendes.

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

Dies funktioniert in bash und zsh, aber anscheinend gibt es keine Möglichkeit , eine Prozessersetzung in tcsh durchzuführen.


Dies ist jedoch nur in Bash
simona

@simona Funktioniert auch für mich in zsh. Wahrscheinlich auch csh und tcsh.
Sparhawk

@ Sparhawk es funktioniert nicht in tcsh
simona

@simona Danke für diese Information; Ich kenne mich nicht mit tcsh aus. Sie könnten überlegen, eine Antwort zu verfassen, die in tsch funktioniert. Prost.
Sparhawk

@ Sparhawk anscheinend gibt es keine Möglichkeit, dies tcshohne die Erstellung einer Datei unix.stackexchange.com/questions/5111/…
simona
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.