목록에서 항목을 선택하기 위한 저주 기반 프로그램

목록에서 항목을 선택하기 위한 저주 기반 프로그램

ls, cat, grep, ps 등과 같은 명령의 결과를 저주(예: 목록 상자)를 통해 (파이프 또는 유사한 것을 통해) 표현할 수 있는 프로그램이 Linux에 있습니까? 그렇다면 이와 같은 프로그램을 사용하여 복사하여 붙여넣는 대신 목록에서 특정 항목을 선택(화살표 키 또는 hjkl을 통해)하고 싶습니까?

비슷한 것이 필요해요 dialog. 사용자 정의 위젯으로 사용자 정의 창을 생성할 수 있지만 모든 위젯에 목록 상자가 필요하고 이를 사용자 정의할 수 있기를 원합니다. 예를 들어, (구성 파일이나 매개변수 내에서) Enter 키를 눌렀을 때 동작을 변경할 수 있기를 원합니다. 예를 들어 이러한 목록에는 Enter 키를 눌러 재생할 수 있는 미디어 파일 목록이 포함될 수 있습니다. 또한, 다른 열을 포함할 수 있도록 목록 상자의 모양을 변경할 수 있고 목록 상자를 검색하고 색상을 지정할 수도 있기를 원합니다.

답변1

dialog여기서부터 시작해야 한다는 의견에 동의합니다. 사용 방법을 보여주기 위해 여기에 샘플 스크립트가 있습니다.

#!/bin/bash

#make some temporary files
command_output=$(mktemp)
menu_config=$(mktemp)
menu_output=$(mktemp)

#make sure the temporary files are removed even in case of interruption
trap "rm $command_output;
      rm $menu_output;
      rm $menu_config;" SIGHUP SIGINT SIGTERM

#replace ls with what you want
ls >$command_output

#build a dialog configuration file
cat $command_output |
  awk '{print NR " \"" $0 "\""}' |
  tr "\n" " " >$menu_config

#launch the dialog, get the output in the menu_output file
dialog --no-cancel --title "Put you title here" \
       --menu "Choose the correct entry" 0 0 0 \
       --file $menu_config 2>$menu_output

#revcover the output value
menu_item=$(<$menu_output)

#recover the associated line in the output of the command
entry=$(cat $command_output | sed -n "${menu_item}p" $config_file)

#replace echo with whatever you want to process the chosen entry
echo $entry

#clean the temporary files
[ -f $command_output ] && rm $command_output
[ -f $menu_output ] && rm $menu_output
[ -f $menu_config ] && rm $menu_config

또한 귀하의 질문에 따르면 콘솔 파일 관리자를 선호하는 것 같습니다. 그 중 많은 것들이 있습니다.숲지기또는자정 사령관. 이러한 구성이 귀하의 요구 사항에 충분하지 않은 경우 해당 소스 코드가 귀하의 도구 설계에 유용할 수 있습니다.

관련 정보