Запуск 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