Как передать вывод dmenu в команду?

Как передать вывод dmenu в команду?

Я экспериментировал с dmenu и столкнулся с проблемой.

Я хочу создать меню .bash_history предыдущих команд, выбрать одну и затем запустить ее в моем терминале. Вот что у меня есть на данный момент.

cat ~/.bash_history | dmenu -l 20

Когда это запускается из терминала, оно выводит мой выбор. Когда я запускаю это из скрипта, оно выводит всю мою историю bash.

Вывод командной строки

Вывод скрипта

решение1

Приведенный ниже скрипт, по-видимому, вызывает dmenu и возвращает выбор в stdout в bash.

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

Я попал сюда как топовый поиск Google по заголовку вопроса: "Как мне перенаправить вывод dmenu в команду?". Я искал простой скрипт для выполнения выбора из dmenu в оболочке bash. Похоже, следующее работает в 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

Немного погуглив, я нашел решение, похожее на ответ Майка, но немного проще. Вы можете использовать $() для достижения своей задачи

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

По сути, это позволяет вам получить вывод из dmenu и выполнить его как следующую команду.

Связанный контент