
Я экспериментировал с 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 и выполнить его как следующую команду.