小编Joe*_*Joe的帖子

在终端中从 fzf 获取输出而不执行它

fzf 摇滚!我想用它来搜索 bash 历史记录。找到匹配项后,我希望将它放在命令行上,但执行,以便我可以进一步编辑它。(所有这些都在源 bash 函数或脚本中,因此它可以访问我的历史记录。)

我几乎可以正常工作,但不完全。

这将选择命令,但立即运行它:

eval $(history | "$HOME/bin/fzf" +s | sed 's/ *[0-9]* *//')
Run Code Online (Sandbox Code Playgroud)

这会将它放入我的剪贴板,但是当我粘贴它时,它仍然以空白和换行符结尾,因此它会立即执行。

history | "$HOME/bin/fzf" +s | sed 's/ *[0-9]* *//' | xclip -se c
Run Code Online (Sandbox Code Playgroud)

我还尝试了几种变体,包括

history | "$HOME/bin/fzf" +s | sed -e 's/ *[0-9]* *//' -e 's/$//' | xclip -se c
Run Code Online (Sandbox Code Playgroud)

结果相同。

这确实有效,但我仍然必须将其放入剪贴板,然后手动粘贴。

history | "$HOME/bin/fzf" +s | sed -re 's/ *[0-9]* *//' | awk '{printf "%s", $0}' | xclip -se c
Run Code Online (Sandbox Code Playgroud)

如何一步完成 - 无需手动粘贴?

我以为只是离开 xclip 就可以了,但它不起作用。

bash terminal fzf

7
推荐指数
1
解决办法
2631
查看次数

标签 统计

bash ×1

fzf ×1

terminal ×1