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

질문 헤더에 대한 최고의 Google 검색으로 여기에 왔습니다. "dmenu 출력을 명령으로 파이프하는 방법은 무엇입니까?" 나는 bash 쉘의 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에서 출력을 가져와 다음 명령으로 실행할 수 있습니다.

관련 정보