vimdiff сравнивать вывод вместо файлов


15

Я пытаюсь сравнить две команды вывода (без файлов)

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

Я пытался играть с перенаправлением, pipe, 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 нет способа выполнить подстановку процессов.


это только в bash, хотя
симона

@simona У меня тоже работает в zsh. Вероятно, csh и tcsh также.
Sparhawk

@ Sparhawk это не работает в tcsh
Симона

@simona Спасибо за эту информацию; Я не знаком с tcsh. Вы могли бы рассмотреть возможность размещения ответа, который работает в tsch. Приветствия.
Sparhawk

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