没有右括号的等效bash语句

时间:2014-04-10 17:09:40

标签: bash shell vim sh

我正在尝试使用等效命令替换像“vim”这样的编辑器命令,该命令在调用编辑器命令之前从输入文件中删除颜色代码。该脚本将由bash调用,并且必须符合command + ' ' + filename格式,因此尾随)会给我带来麻烦:

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

如果没有尾随),你能想到一种方法吗?一切都必须在文件名之前?

2 个答案:

答案 0 :(得分:2)

如果当前命令有效,只需将其重写为函数:

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

但是,更好的方法是创建一个执行您想要执行的操作的脚本并调用它。这允许其他程序调用编辑器而不通过shell传递它,而不是所有程序都这样做。

答案 1 :(得分:1)

另一种方法:

bash -c 'EDITOR <(sed -e "s/\x1B\[[0-9;]*[JKmsu]//g" < "$0")' color.js
\.........................................................../ \....../
                   command                                    filename