如果我在没有 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
功能来实现:
参数替换(如红色坚韧不拔砖) 和
功能:
readline
shell-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)。
换句话说,它将用其输出替换命令行。