我有一个脚本,它输出一个我想要编辑的字符串,然后作为命令运行。
例如,我正在使用
cat ... | xsel -p
然后我想编辑“xsel -op”的输出并将编辑后的字符串作为新命令运行。
所以我正在尝试:
cat ... | xsel -p
$(xsel -op) TAB
但这当然失败了。
那么如何将xsel -op
(在本例中)的内容输出到命令行,编辑该新命令,然后运行该命令?
谢谢
答案1
答案2
您可以通过执行以下操作将其添加到历史记录中(至少在 bash 中,我不确定在 zsh 中)
history -s $(xsel -op)
然后检索并编辑它。
从那以后我发现
print -s $(xsel -op)
在 zsh 下同样有效
答案3
您无需手动将其添加到历史记录中,只需按 bash 的shell-expand-line
键 ( M-C-e) 即可:
shell-expand-line (M-C-e)
Expand the line as the shell does. This performs alias and his‐
tory expansion as well as all of the shell word expansions. See
HISTORY EXPANSION below for a description of history expansion.
答案4
我不完全确定你想做什么,但这样的事情应该有效:
`xsel -op | sed 'do something'`
反引号将导致 BASH 执行,在本例中,无论您刚刚使用 sed 编辑过的 X 的主选择缓冲区中保存的内容。例如:
echo "find . -name foo" | xsel -p
`xsel -op | sed 's/foo/bar/`
上述命令将导致find
运行搜索名为“bar”的文件或文件夹。