vimdiff, aby porównać dane wyjściowe zamiast plików


15

Próbuję porównać dwa dane wyjściowe polecenia (bez plików)

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

Próbowałem grać z przekierowaniem, potokiem, vim - -cale coś mi brakuje. Czy ktoś może pomóc?

Odpowiedzi:


23

Mylisz się $(…)z <(…). Użyłeś tego pierwszego, który przechodzi na wyjście jako argumenty do vimdiff. Na przykład, jeśli ostatni wiersz /path/to/foozawiera bar bar bar, to następujące polecenie

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

jest równa

echo bar bar bar

Zamiast tego musisz użyć <(…). Nazywa się to substytucją procesu i przekazuje dane wyjściowe jako pseudoplik do vimdiffpolecenia. Dlatego skorzystaj z poniższych.

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

Działa to w bash i zsh, ale najwyraźniej nie ma sposobu na zastąpienie procesu w tcsh.


jest to jednak tylko bash
simona

@simona Działa również dla mnie w Zsh. Prawdopodobnie również csh i tcsh.
Sparhawk

@Sparhawk to nie działa w tcsh
simona

@simona Dzięki za te informacje; Nie znam tcsh. Możesz rozważyć odpowiedź, która działa w tsch. Twoje zdrowie.
Sparhawk

@Sparhawk najwyraźniej nie ma na to sposobu tcshbez utworzenia pliku unix.stackexchange.com/questions/5111/…
simona
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.