

smenu — это фильтр выбора, точно так же, как sed — это фильтр редактирования.
Этот инструмент считывает слова из стандартного ввода или из файла и представляет их на экране терминала в различных макетах в окне прокрутки. Курсор, легко перемещаемый с помощью клавиатуры и/или мыши , позволяет выбрать одно или несколько слов.
Обратите внимание, что экран не очищается в начале и в конце выполнения меню . Окно выбора отображается в позиции курсора, а предыдущее содержимое терминала не изменяется и не теряется.
Я постарался сделать его максимально простым в использовании. Он должен работать на всех терминалах, управляемых в базе данных terminfo .
Поддерживается кодировка UTF-8 . Эта поддержка включает символы двойной ширины и расширенные кластеры графем. Однако последний все еще является экспериментальным и работает намного лучше, если используются соответствующие терминалы, такие как WezTerm или iTerm.
Кодировка глифов UTF-8 также должна быть в канонической форме, поскольку не будет предпринято никаких попыток привести их в эту форму.
Пожалуйста, обратитесь к прилагаемой странице руководства, чтобы узнать больше об этой небольшой программе.
Вики содержит скриншоты и анимации, подробно описывающие некоторые концепции и особенности меню .
Некоторые дистрибутивы Linux уже предоставляют smenu в виде пакета, в противном случае smenu можно построить в любой системе, в которой доступна функциональная платформа разработки terminfo . Сюда входят все известные мне Unix и Unix-подобные системы.
Используйте предоставленный скрипт build.sh для сборки исполняемого файла. Этот сценарий использует и принимает те же аргументы, что и сценарий configure GNU. Чтобы просмотреть их, введите build.sh --help .
Как только процесс сборки завершится, его выполнит простая команда make install с соответствующими привилегиями.
Я включил обсуждения в этом репозитории.
Я знаю, что может возникнуть некоторая путаница при принятии решения о том, куда вам следует обращаться, сообщая о проблемах, задавая вопросы или отправляя запросы на добавление функций, поэтому цель этого раздела – помочь нам согласовать этот вопрос.
Пожалуйста, поднимите вопрос, если:
Пожалуйста, откройте обсуждение, если:
Эта программа должна работать на большинстве Unix, но если вы используете Linux, попробуйте ввести следующую строку в командной строке (здесь: "$ " ):
$ R=$(grep Vm /proc/$$/status
| smenu -n20 -W $':tn' -q -c -b -g -s /VmH)
$ эхо $R
При ожидании команд программой теперь должно отображаться что-то вроде этого: (цифры мои, у вас будут другие)
VmPeak¦ 23840 КБ VmSize¦ 23836 КБ VmLck ¦ 0 КБ VmHWM ¦ 2936 КБ VmRSS ¦ 2936 КБ VmData¦ 1316 КБ ВмСтк ¦ 136 КБ VmExe ¦ 28 КБ VmLib ¦ 3956 КБ ВмПТЕ ¦ 64 КБ VmSwap¦ 0 КБ
Курсор должен находиться под "VmHWM " .
После перемещения курсора на " 136 kB" и завершения программы с помощью <Enter> переменная оболочки R должна содержать: " 136 kB" .
Следующая команда, не зависящая от бренда Unix, должна открыть окно прокрутки, если у вас в Unix более 10 учетных записей с UID ниже 100:
$ R=$(awk -F: '$3 < 100 {print $1,$3,$4,$NF}' /etc/passwd
| смена -n10 -c)
$ эхо $R
В моем случае ( LANG и LC_ALL установлены в POSIX ) отображается:
в 25 25 /bin/bash sys 0 3 /usr/bin/ksh + бункер 1 1 /bin/bash | демон 2 2 /bin/bash | ftp 40 49 /bin/bash | игры 12 100 /bin/bash | lp 4 7 /bin/bash | почта 8 12 /bin/false | по имени 44 44 /bin/false | ntp 74 108 /bin/false v
Обратите внимание на наличие полосы прокрутки.
Просто добавьте следующее в свой .bashrc
EOL=$'n'
привязать -x '"Cr": READLINE_LINE=$(fc -lr 1
| sed "s/[1-9][0-9]*..//"
| сменю -Q -l -ac:7/4,b -W"$EOL")
READLINE_POINT=${#READLINE_LINE}'
Запустите или перезапустите bash и нажмите CTRL-R ( CTRL-C или q для выхода), наслаждайтесь!
Вы также можете добавить параметр -d , чтобы указать меню очистить окно выбора после выбора записи.
В этих версиях используется новая система параметров под названием ctxopt , которая может содержать ошибки. Сообщите о них, чтобы их можно было исправить в следующем выпуске smenu или ctxopt (https://github.com/p-gen/ctxopt).
Аргументы командной строки в некоторых случаях также могут потребоваться переставить из-за этой новой системы управления параметрами. Извините за дополнительную работу, которую это может повлечь за собой.
Выравнивание по правому краю строк, написанных на языках с письмом справа налево, таких как фарси или иврит, не соблюдается.
Включенная система тестирования относительно молода, будьте снисходительны.
ВАЖНО: система тестирования имеет некоторые зависимости. Прежде чем двигаться дальше, прочтите test/README.rst .
ПРИМЕЧАНИЕ. Запуск всех тестов с помощью ./tests.sh в каталоге tests займет некоторое время (на данный момент около 21 минуты).
ПРИМЕЧАНИЕ. В некоторых системах, например *BSD, некоторые тесты могут завершиться неудачно. Это можно объяснить различиями в реализациях posix/libc/.... Это может произойти, в частности, при использовании некоторых определенных регулярных выражений или необычных последовательностей байтов UTF-8 .
Если тест не пройден по неизвестной причине, пришлите мне имя его каталога и соответствующий файл .bad .
Если у вас возникла ошибка, которую не охватывает ни один тест, вы можете создать новый тест в каталоге tests в существующем или новом каталоге: прочитайте tests/README.rst , используйте существующий тест в качестве модели, создайте файл .in файл и файл .tst и пришлите мне их вместе с созданными файлами.
Вклады приветствуются, но сначала обсудите свое предложение в выпуске или с сопровождающим.
Я хочу поблагодарить тех, кто нашел время, чтобы упаковать меню для предпочитаемой ими операционной системы или дистрибутива. Их имена вы найдете здесь: https://repology.org/project/smenu/information.