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

分享于 

3分钟阅读

电脑

  繁體 雙語

问题:

在不使用X,然后使用Ctrl+u的Linux bash终端键入内容时,无论键入什么,都存储在 bash"剪贴板"中( 因为缺少更好的术语),我可以再次将它输入到 Ctrl+y。

如何将grep命令的结果从文本文件复制到该bash剪贴板? 例如如果我有这样的安装文件:






./installprocedure --do-some-long-and-complicated-operation-on-dir dir1




如何复制grep命令的内容,以便它可以进行Ctrl+y操作? 例如:






copy content to bash clipboard"grep installprocedure INSTALL" 


Ctrl+y 


./installprocedure --do-some-long-and-complicated-operation-on-dir dir1 #cursor available here





回答 1:

对于i 缓冲区,我们还没有直接的方法,但是如果目标是让字符串上的字符串能够编辑,那么可以利用两个 bash 特性来完成该操作:

  • 参数替换( 如 RedGrittyBrick 所述) 和

  • readline 函数 shell-expand-line:

    shell-expand-line ( M-C-e )

    将该行扩展为 shell。 这将执行别名和历史扩展以及所有 shell 单词扩展。

  • 例如:

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

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

    在这里基础上,可以创建 readline 宏以自动在任意命令上执行这里操作,无需引发引号或者 $():

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

    按下Ctrl+X之后再将光标移动到行( C-a )的开头,实际上插入 $(,移动到行( C-e )的末尾,字面上是插入 ),最后调用 shell-expand-line ( eC-e = Meta+Ctrl+e )。

    换句话说,它将把 命令行 替换为它的输出。


回答 2:

你确定不希望命令历史记录编辑失败? 或者可能是命令替换。

命令历史

在bash中,按向上键可以回忆上一个命令。 你可以按常规方式编辑行。

或者,可以引用以前的命令,也可以使用感叹号符号来引用以前命令的部分。

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


./bar barparam `grep foo foofile`



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


 grep foo foofile |./bar barparam



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


 clipboard = `grep foo foofile`


. /bar barparam $clipboard





COM  COMM  Comma  cop  BASH  拷贝  
相关文章