2014-04-10 2 views
0

Я пытаюсь заменить команду редактора как «vim» эквивалентной командой, которая удаляет цветовые коды из входного файла перед вызовом команды редактора. Сценарий должен быть вызван Баш и должен вписываться в формате command + ' ' + filename так задн ) дает мне неприятности:Эквивалентная оценка bash без закрывающей скобки

EDITOR <(sed -e "s/\x1B\[[0-9;]*[JKmsu]//g" < color.js) 

Можете ли вы придумать способ сделать это без задней ), все должно прийти до имя файла?

+3

Я не понимаю "почему"? Я предполагаю, что ограничение «command + filename» не подразумевает пробелов в имени файла - что вызывает это ограничение? Похоже, есть несколько важных деталей, которые вы опустили. –

+0

Ограничение исходит из того, что это прокладка, которая будет введена внутри скомпилированного кода, который я не могу изменить не из пробелов в имени файла. –

ответ

2

Если текущих командных работ, просто переписать его как функцию:

edit() { $EDITOR <(sed -e "s/\x1B\[[0-9;]*[JKmsu]//g" < "$1"); }; edit 

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

1

Другой подход:

bash -c 'EDITOR <(sed -e "s/\x1B\[[0-9;]*[JKmsu]//g" < "$0")' color.js 
\.........................................................../ \....../ 
        command         filename 
Смежные вопросы