vimdiff per confrontare l'output anziché i file


15

Sto cercando di confrontare due output di comando (nessun file)

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

Ho provato a giocare con il reindirizzamento, la pipe, vim - -cma devo mancare qualcosa. Qualcuno può aiutare, per favore ?

Risposte:


23

Si confonde $(…)con <(…). Hai usato il primo, che passa l'output come argomento a vimdiff. Ad esempio, se l'ultima riga /path/to/foocontiene bar bar bar, quindi il seguente comando

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

è equivalente a

echo bar bar bar

Invece, devi usare <(…). Questo si chiama sostituzione del processo e passa l'output come pseudo-file al vimdiffcomando. Quindi, utilizzare quanto segue.

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

Questo funziona in bash e zsh, ma apparentemente non c'è modo di fare la sostituzione del processo in tcsh.


questo è solo in bash, però
simona

@simona Funziona anche per me in zsh. Probabilmente anche csh e tcsh.
Sparhawk,

@Sparhawk non funziona in tcsh
simona

@simona Grazie per queste informazioni; Non ho familiarità con TCS. Potresti considerare di dare una risposta che funzioni in tsch. Saluti.
Sparhawk,

@Sparhawk apparentemente non c'è modo di farlo tcshsenza creare un file unix.stackexchange.com/questions/5111/…
simona
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.