Bash 将变量中捕获的多个文件名传递给命令(vim)

Bash 将变量中捕获的多个文件名传递给命令(vim),bash,vim,grep,Bash,Vim,Grep,我试图创建一个脚本,自动打开任何包含特定模式的文件 这就是我迄今为止所取得的成就: xargs -d " " vim < "$(grep --color -r test * | cut -d ':' -f 1 | uniq | sed ':a;N;$!ba;s/\n/ /g')" 有没有一个简单的方法来实现它?我错过了什么 调用xargs的常用方法是通过管道传递带有换行符的参数: grep -Rl test * | xargs vim 请注意,我还将-l参数传递给grep,以列出包含

我试图创建一个脚本,自动打开任何包含特定模式的文件

这就是我迄今为止所取得的成就:

xargs -d " " vim < "$(grep --color -r test * | cut -d ':' -f 1 | uniq | sed ':a;N;$!ba;s/\n/ /g')" 

有没有一个简单的方法来实现它?我错过了什么

调用xargs的常用方法是通过管道传递带有换行符的参数:

grep -Rl test * | xargs vim

请注意,我还将
-l
参数传递给
grep
,以列出包含我的模式的文件。

调用xargs的常用方法只是通过管道传递带有换行符的参数:

grep -Rl test * | xargs vim

请注意,我还将
-l
参数传递给
grep
,以列出包含我的模式的文件。

调用xargs的常用方法只是通过管道传递带有换行符的参数:

grep -Rl test * | xargs vim

请注意,我还将
-l
参数传递给
grep
,以列出包含我的模式的文件。

调用xargs的常用方法只是通过管道传递带有换行符的参数:

grep -Rl test * | xargs vim
请注意,我还将
-l
参数传递给
grep
,以列出包含我的模式的文件。

使用以下方法:

vim -- `grep -rIl test *`
  • -I
    跳过二进制文件中的匹配
  • -l
    在第一次匹配时打印文件名
尝试省略
xargs
,因为这会导致
vim
的错误行为:

Vim: Warning: Input is not from a terminal
使用以下命令:

vim -- `grep -rIl test *`
  • -I
    跳过二进制文件中的匹配
  • -l
    在第一次匹配时打印文件名
尝试省略
xargs
,因为这会导致
vim
的错误行为:

Vim: Warning: Input is not from a terminal
使用以下命令:

vim -- `grep -rIl test *`
  • -I
    跳过二进制文件中的匹配
  • -l
    在第一次匹配时打印文件名
尝试省略
xargs
,因为这会导致
vim
的错误行为:

Vim: Warning: Input is not from a terminal
使用以下命令:

vim -- `grep -rIl test *`
  • -I
    跳过二进制文件中的匹配
  • -l
    在第一次匹配时打印文件名
尝试省略
xargs
,因为这会导致
vim
的错误行为:

Vim: Warning: Input is not from a terminal

我通常会在文件列表中添加以下行:

~/.files.txt&&vim$(cat~/.files.txt|tr“\n”“”)

例如:

grep--color-r test*>~/.files.txt&&vim$(cat~/.files.txt|tr“\n”“”)

我的.bashrc中有以下内容,可以绑定
VV
(两次
V
,大写)以自动插入:

insertinreadline() {
READLINE_LINE=${READLINE_LINE:0:$READLINE_POINT}$1${READLINE_LINE:$READLINE_POINT}
    READLINE_POINT=`expr $READLINE_POINT + ${#1}`
}
bind -x '"VV": insertinreadline " > ~/.files.txt &&  vim \$(cat ~/.files.txt | tr \"\\n\" \" \")"'

我通常会在文件列表中添加以下行:

~/.files.txt&&vim$(cat~/.files.txt|tr“\n”“”)

例如:

grep--color-r test*>~/.files.txt&&vim$(cat~/.files.txt|tr“\n”“”)

我的.bashrc中有以下内容,可以绑定
VV
(两次
V
,大写)以自动插入:

insertinreadline() {
READLINE_LINE=${READLINE_LINE:0:$READLINE_POINT}$1${READLINE_LINE:$READLINE_POINT}
    READLINE_POINT=`expr $READLINE_POINT + ${#1}`
}
bind -x '"VV": insertinreadline " > ~/.files.txt &&  vim \$(cat ~/.files.txt | tr \"\\n\" \" \")"'

我通常会在文件列表中添加以下行:

~/.files.txt&&vim$(cat~/.files.txt|tr“\n”“”)

例如:

grep--color-r test*>~/.files.txt&&vim$(cat~/.files.txt|tr“\n”“”)

我的.bashrc中有以下内容,可以绑定
VV
(两次
V
,大写)以自动插入:

insertinreadline() {
READLINE_LINE=${READLINE_LINE:0:$READLINE_POINT}$1${READLINE_LINE:$READLINE_POINT}
    READLINE_POINT=`expr $READLINE_POINT + ${#1}`
}
bind -x '"VV": insertinreadline " > ~/.files.txt &&  vim \$(cat ~/.files.txt | tr \"\\n\" \" \")"'

我通常会在文件列表中添加以下行:

~/.files.txt&&vim$(cat~/.files.txt|tr“\n”“”)

例如:

grep--color-r test*>~/.files.txt&&vim$(cat~/.files.txt|tr“\n”“”)

我的.bashrc中有以下内容,可以绑定
VV
(两次
V
,大写)以自动插入:

insertinreadline() {
READLINE_LINE=${READLINE_LINE:0:$READLINE_POINT}$1${READLINE_LINE:$READLINE_POINT}
    READLINE_POINT=`expr $READLINE_POINT + ${#1}`
}
bind -x '"VV": insertinreadline " > ~/.files.txt &&  vim \$(cat ~/.files.txt | tr \"\\n\" \" \")"'