如何將 dmenu 輸出透過管道傳輸到命令中?

如何將 dmenu 輸出透過管道傳輸到命令中?

我正在嘗試 dmenu 並遇到了問題。

我想建立一個包含先前命令的 .bash_history 選單,選擇一個命令,然後讓它在我的終端中運行。這是我到目前為止所擁有的。

cat ~/.bash_history | dmenu -l 20

當從終端運行它時,它將回顯我的選擇。當我從腳本運行它時,它會輸出我的整個 bash 歷史記錄。

命令列輸出

腳本輸出

答案1

下面的腳本似乎會調出 dmenu 並將選擇返回到 bash 中的標準輸出。

#!/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

此處的uckless.org 上還提供了一個更複雜的通用腳本來執行此操作: https://tools.suckless.org/dmenu/scripts/dmenu_run_with_command_history/

答案2

經過一番谷歌搜尋後,我找到了一個類似麥克的答案的解決方案,但更簡單一些。您可以使用 $() 來完成您的任務

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

這基本上允許您從 dmenu 獲取輸出並將其作為下一個命令執行

相關內容