Запуск vimdiff с выхода diff

Я пытаюсь разграничить две папки, используя diff и запустить vimdiff для каждого отличия от сценария оболочки

Вот как я извлек имена файлов и сделал полную команду, используя awk, который мне нравится выполнять

 $ diff -Bbqr oldfolder newfolder | grep differ | awk '{print "vimdiff " $2,$4}'
 vimdiff oldfolder/a.c newfolder/a.c 
 vimdiff oldfolder/b.c newfolder/b.c 

Сейчас попробовал

diff -Bbqr oldfolder newfolder | grep differ | awk '{print "vimdiff " $2,$4}' | bash 

это не работает, предупреждает, что Vim: Warning: Input is not from a terminal

также пытался bash -c как ниже

diff -Bbqr oldfolder newfolder | grep differ | awk '{print "vimdiff " $2,$4}' | bash -c 

но это дает ошибку bash: -c: option requires an argument

Я тоже пробовал

$(diff -Bbqr oldfolder newfolder | grep differ | awk '{print "vimdiff " $2,$4}')

это не выводит вообще.

Это очень полезно для любого разработчика, поэтому я надеюсь найти ответ

1 ответ

Просто из любопытства попробовал.

Как насчет этого:

vimdiff $(diff -Bbqr oldfolder newfolder | grep differ | awk '{print $2,$4}')

Однако это сработало для меня:

$(echo vimdiff file1 file2)

Вы также можете попробовать это:

</dev/tty $(diff -Bbqr oldfolder newfolder | grep differ | awk '{print "vimdiff " $2,$4}')

Ах да, и это:

bash <(diff -Bbqr oldfolder newfolder | grep differ | awk '{print "vimdiff " $2,$4}')

Ваш вопрос может быть сформулирован так:


Как заставить это работать?:

echo vimdiff oldfolder/a.c newfolder/a.c|bash 
echo vimdiff oldfolder/a.c newfolder/a.c|bash -c

Другие вопросы по тегам