如何将 grep 命令的结果复制到 bash 剪贴板?

如何将 grep 命令的结果复制到 bash 剪贴板?

如果我在没有 X 的 Linux bash 终端中输入某些内容,然后使用 Ctrl+u,那么我输入的任何内容都会存储在 bash“剪贴板”中(因为没有更好的术语),我可以使用 Ctrl+y 再次输入它。

如何将文本文件中 grep 命令的结果复制到这样的 bash 剪贴板?例如,如果我有一个这样的 INSTALL 文件:

./installprocedure --对目录 dir1 进行一些长而复杂的操作

如何复制 grep 命令的内容以便可以通过 Ctrl+y 来使用?例如:

将内容复制到 bash 剪贴板“grep installprocedure INSTALL”  
Ctrl+y  
./installprocedure --do-some-long-and-complicated-operation-on-dir dir1 #cursor 在此处可用

答案1

据我所知,没有直接的的方式来提供内部bash缓冲区,但如果您的目的是让命令行上的字符串能够编辑它,那么可以利用两个bash功能来实现:

  1. 参数替换(如红色坚韧不拔砖) 和

  2. 功能:readlineshell-expand-line

    shell-expand-line(主修科目)

    像 shell 一样扩展行。这将执行别名和历史扩展以及所有 shell 单词扩展。

例子:

$ $(grep installprocedure INSTALL)Meta+Ctrl+e

这将用命令替换的结果替换命令行。

在此基础上进行扩展,您可以创建一个readline宏来对任意命令自动执行该操作,而无需用反引号或$():括起来

$ bind '"\C-xs": "\C-a$(\C-e)\e\C-e"'

按下Ctrl+X,然后按s将光标移动到行首(\C-a),逐字插入$(,移动到行尾(\C-e),逐字插入),最后调用shell-expand-line\e\C-e= Meta+Ctrl+e)。

换句话说,它将用其输出替换命令行。

答案2

你确定你不想命令历史编辑? 或者可能命令替换

命令历史

在 bash 中,按向上箭头键可撤消上一个命令。您可以按常规方式编辑该行。

或者,您可以使用感叹号符号来引用前面的命令以及前面命令的部分内容。

使用一个命令的输出作为另一个命令的参数

 ./bar barparam `grep foo foofile`

使用一个命令的输出作为另一个命令的输入

  grep foo foofile | ./bar barparam

使用 shell 变量作为命名剪贴板

  clipboard = `grep foo foofile`
  ./bar barparam $clipboard

相关内容