vimdiff для порівняння виводу замість файлів


15

Я намагаюся порівняти два вихідних команди (файлів немає)

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

Я спробував грати з перенаправленням, трубою, vim - -cале мені, мабуть, щось не вистачало. Хто-небудь може допомогти, будь ласка?

Відповіді:


23

Ви плутаєте $(…)з <(…). Ви використовували колишні, який проходить вихідний сигнал в якості аргументів в vimdiff. Наприклад, якщо останній рядок /path/to/fooмістить bar bar bar, то наступна команда

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

еквівалентно

echo bar bar bar

Замість цього потрібно використовувати <(…). Це називається заміна процесу , і передає вихідний сигнал у вигляді псевдо-файлу в vimdiffкоманді. Отже, використовуйте наступне.

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

Це працює в bash і zsh, але, очевидно, немає можливості зробити заміну процесу в tcsh.


це лише в баші, хоча
simona

@simona працює для мене і в zsh. Можливо, csh і tcsh також.
Спархак

@Sparhawk це не працює в tcsh
simona

@simona Дякую за цю інформацію; Я не знайомий з tcsh. Ви можете розглянути можливість відповіді, яка працює в tsch. Ура.
Sparhawk

@Sparhawk, мабуть, немає способу цього досягти tcshбез створення файлу unix.stackexchange.com/questions/5111/…
simona
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.