smenu ist ein Auswahlfilter, genau wie sed
ein Bearbeitungsfilter ist.
Dieses Tool liest Wörter aus der Standardeingabe oder aus einer Datei und präsentiert sie in verschiedenen Layouts in einem Scrollfenster auf dem Terminalbildschirm. Ein Cursor, der einfach mit der Tastatur und/oder der Maus bewegt werden kann, ermöglicht die Auswahl eines oder mehrerer Wörter.
Beachten Sie, dass der Bildschirm zu Beginn und am Ende der Menüausführung nicht gelöscht wird. Das Auswahlfenster wird an der Cursorposition angezeigt und der bisherige Inhalt des Terminals wird weder verändert noch geht er verloren.
Ich habe versucht, die Bedienung so einfach wie möglich zu gestalten. Es sollte auf allen in der terminfo
-Datenbank verwalteten Terminals funktionieren.
UTF-8
-Kodierung wird unterstützt. Diese Unterstützung umfasst Zeichen doppelter Breite und erweiterte Graphemcluster. Letzteres ist jedoch noch experimentell und funktioniert deutlich besser, wenn entsprechende Terminals wie WezTerm oder iTerm verwendet werden.
Die Kodierung von UTF-8
Glyphen muss ebenfalls in kanonischer Form erfolgen, da keine Anstrengungen unternommen werden, sie in diese Form zu bringen.
Weitere Informationen zu diesem kleinen Programm finden Sie in der beigefügten Manpage.
Das Wiki enthält Screenshots und Animationen, die einige Konzepte und Funktionen von Smenu detailliert beschreiben.
Einige Linux-Distributionen stellen smenu bereits als Paket bereit. Wenn nicht, kann smenu auf jedem System erstellt werden, auf dem eine funktionsfähige terminfo
Entwicklungsplattform verfügbar ist. Dazu gehören alle mir bekannten Unix- und Unix-ähnlichen Systeme.
Bitte verwenden Sie das bereitgestellte build.sh
-Skript, um die ausführbare Datei zu erstellen. Dieses Skript verwendet und akzeptiert dieselben Argumente wie das GNU- configure
. Geben Sie build.sh --help
ein, um sie anzuzeigen.
Sobald der Build-Prozess abgeschlossen ist, reicht ein einfaches make install
mit den entsprechenden Rechten aus.
Ich habe Diskussionen zu diesem Repository aktiviert.
Ich bin mir bewusst, dass es bei der Entscheidung, wo Sie kommunizieren sollen, wenn Sie Probleme melden, Fragen stellen oder Funktionswünsche äußern, zu Verwirrung kommen kann. Dieser Abschnitt soll uns dabei helfen, uns darauf zu einigen.
Bitte melden Sie ein Problem, wenn:
Bitte eröffnen Sie eine Diskussion, wenn:
Dieses Programm sollte auf den meisten Unix-Geräten funktionieren. Wenn Sie jedoch Linux verwenden, versuchen Sie, die folgende Zeile an einer Shell-Eingabeaufforderung einzugeben (hier: "$ "
):
$ R=$(grep Vm /proc/$$/status | smenu -n20 -W $':tn' -q -c -b -g -s /VmH) $ echo $R
Nun sollte etwa Folgendes angezeigt werden, während das Programm auf Befehle wartet: (Nummern gehören mir, deine werden anders sein)
VmPeak¦ 23840 kB VmSize¦ 23836 kB VmLck ¦ 0 kB VmHWM ¦ 2936 kB VmRSS ¦ 2936 kB VmData¦ 1316 kB VmStk ¦ 136 kB VmExe ¦ 28 kB VmLib ¦ 3956 kB VmPTE ¦ 64 kB VmSwap¦ 0 kB
Unter "VmHWM "
sollte sich ein Cursor befinden.
Nachdem Sie den Cursor auf " 136 kB"
bewegt und das Programm mit
beendet haben, sollte die Shell-Variable R Folgendes enthalten: " 136 kB"
.
Der folgende Befehl, der unabhängig von der Marke Unix ist, sollte Ihnen ein Scrollfenster anzeigen, wenn Sie mehr als 10 Konten auf Ihrem Unix mit einer UID unter 100 haben:
$ R=$(awk -F: '$3 < 100 {print $1,$3,$4,$NF}' /etc/passwd | smenu -n10 -c) $ echo $R
Bei mir ( LANG
und LC_ALL
auf POSIX
gesetzt) wird Folgendes angezeigt:
bei 25 25 /bin/bash sys 0 3 /usr/bin/ksh + bin 1 1 /bin/bash | Daemon 2 2 /bin/bash | ftp 40 49 /bin/bash | Spiele 12 100 /bin/bash | lp 4 7 /bin/bash | mail 8 12 /bin/false | benannt 44 44 /bin/false | ntp 74 108 /bin/false v
Beachten Sie das Vorhandensein einer Bildlaufleiste.
Fügen Sie einfach Folgendes in Ihre .bashrc
ein
EOL=$'n' bind -x '"Cr": READLINE_LINE=$(fc -lr 1 | sed "s/[1-9][0-9]*..//" | smenu -Q -l -ac:7/4,b -W"$EOL") READLINE_POINT=${#READLINE_LINE}'
Starten Sie Bash oder starten Sie es neu und drücken Sie CTRL-R
( CTRL-C
oder q
zum Beenden). Viel Spaß!
Sie können auch den Parameter -d hinzufügen, um smenu anzuweisen, das Auswahlfenster nach der Auswahl eines Eintrags zu bereinigen.
Diese Versionen verwenden ein neues Optionensystem namens ctxopt , das möglicherweise Fehler enthält. Bitte melden Sie sie, damit sie in der nächsten Version von smenu oder ctxopt behoben werden können (https://github.com/p-gen/ctxopt).
Aufgrund dieses neuen Optionsverwaltungssystems müssen in manchen Fällen auch Befehlszeilenargumente neu angeordnet werden. Bitte entschuldigen Sie die zusätzliche Arbeit, die dadurch entstehen könnte.
Die Rechtsausrichtung von Zeilen, die in von rechts nach links geschriebenen Sprachen wie Farsi oder Hebräisch geschrieben sind, wird nicht berücksichtigt.
Das mitgelieferte Testsystem ist relativ jung, bitte haben Sie Nachsicht.
WICHTIG: Das Testsystem weist einige Abhängigkeiten auf. Bitte lesen Sie test/README.rst
bevor Sie fortfahren.
HINWEIS: Das Ausführen aller Tests durch Ausführen ./tests.sh
im tests
wird einige Zeit dauern (vorerst etwa 21 Minuten).
HINWEIS: Auf einigen Systemen wie *BSD können einige Tests fehlschlagen. Dies kann durch Unterschiede in den posix/libc/...-Implementierungen erklärt werden. Dies kann insbesondere dann auftreten, wenn bestimmte reguläre Ausdrücke oder ungewöhnliche UTF-8
-Bytesequenzen verwendet werden.
Wenn ein Test aus unbekanntem Grund fehlschlägt, senden Sie mir bitte den Namen seines Verzeichnisses und die entsprechende .bad
Datei.
Wenn Sie von einem Fehler betroffen sind, den kein Test abdeckt, können Sie einen neuen Test im tests
-Verzeichnis in einem vorhandenen oder neuen Verzeichnis erstellen: Lesen Sie die Datei tests/README.rst
, verwenden Sie einen vorhandenen Test als Modell, erstellen Sie eine .in
Datei und eine .tst
Datei und sende sie mir zusammen mit den erstellten Dateien.
Beiträge sind willkommen, aber besprechen Sie Ihren Vorschlag zuerst in einer Ausgabe oder mit dem Betreuer.
Ich möchte denjenigen danken, die sich die Zeit genommen haben, smenu für ihr bevorzugtes Betriebssystem oder ihre bevorzugte Distribution zu packen. Ihre Namen finden Sie hier: https://repology.org/project/smenu/information