Bash 완전 CLI 대화형 메뉴

Bash 완전 CLI 대화형 메뉴

Bash에서 선택을 허용하는 TUI(예 dialog: )를 만들 수 있는 프로그램이 있다는 것을 알고 있습니다. whiptail하지만 저는 간단하고 아름답고 완전한 CLI 메뉴를 원합니다(구현하기가 쉽지는 않지만).

노트:

  • 계획은 다음과 같습니다아니요터미널 지우기(현재 터미널 내용은 그대로 유지되어야 함)
  • 프로그램은 키를 누를 때마다 줄을 뱉어내는 대신 메뉴의 내용을 변경해야 합니다.

대답은 bash/shell 스크립트여야 합니다.

문자열 배열이 주어지면(이 경우 4):

options=(opt1 "option 2" another "option here")

선택한 옵션이 강조 표시되는 메뉴를 만들고 싶습니다(누르면 해당 옵션이 선택됩니다 enter). 실시예 1

사용자가 위쪽/아래쪽 화살표를 누르면 프로그램은 이전/다음 항목을 선택하고 옵션을 "순환"해야 합니다(첫 번째 옵션에서 위쪽 화살표를 누르면 선택 항목이 마지막 옵션으로 변경됩니다). 이 예에서는 아래쪽 화살표를 누른 후의 메뉴를 보여줍니다. 실시예 2

사용자가 "opt"를 입력하면 메뉴 선택에 "opt"로 시작하는 옵션만 표시되고 현재 선택이 다시 첫 번째 항목으로 변경됩니다. 실시예 3

가능합니까? 그렇다면 어떻게 해야 하는지 알려주십시오. 또한 필요한 경우 설명을 추가할 의향이 있습니다.

답변1

라는 도구가 있는 것으로 나타났습니다.후지, 이는 퍼지 파인더입니다. 스크립트는 다음과 같아야 합니다.

options=(opt1 "option 2" another "option here")
echo "Please choose an option:"
printf "%s\n" "${options[@]}" | fzy

이것이 내가 원하는 것 같습니다.

관련 정보