如何将 dmenu 输出传送到命令中?

如何将 dmenu 输出传送到命令中?

我正在试验 dmenu 但遇到了一个问题。

我想创建一个包含以前命令的 .bash_history 菜单,选择一个命令,然后让它在我的终端中运行。以下是我目前所做的。

cat ~/.bash_history | dmenu -l 20

从终端运行此命令时,它会回显我的选择。从脚本运行此命令时,它会输出我的整个 bash 历史记录。

命令行输出

脚本输出

答案1

下面的脚本似乎调出 dmenu 并将选择返回到 bash 中的 stdout。

#!/bin/bash
cat ~/.bash_history | dmenu -l 20
exit

我被带到了这里,因为问题标题是“如何将 dmenu 输出导入命令?”。我正在寻找一个简单的脚本来在 bash shell 中执行来自 dmenu 的选择。以下内容似乎在 bash 中有效:

#!/bin/bash 
read thing2execute <<< $(cat ~/.bash_history | dmenu -l 20)
$thing2execute
exit

在 suckless.org 网站上还有一个更复杂的通用脚本可以执行此操作: https://tools.suckless.org/dmenu/scripts/dmenu_run_with_command_history/

答案2

经过一番谷歌搜索,我找到了一个与 Mike 的答案类似的解决方案,但更简单一些。您可以使用 $() 来实现您的任务

 $(cat ~/.bash_history | dmenu -l 20)

这基本上允许你从 dmenu 获取输出并将其作为下一个命令执行

相关内容