Wie kann ich die position der cursor im terminal?
Ich weiß, ich kann die position speichern mit tput sc
, aber wie kann ich es Lesen die position der Variablen? Ich brauche die Anzahl der Zeilen. Ich will nicht von curses/ncurses.
- mögliche Duplikate von Wie man die cursor-position in der bash?
- Ich kann nicht erwarten, dass der Benutzer die bash. So kann er csh oder etc.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sich auf ANSI-kompatiblen terminals, drucken Sie die Sequenz
ESC[6n
Bericht wird die cursor-position an die Anwendung, wie (als ob Sie über die Tastatur eingeben)ESC[n;mR
, won
ist die Zeile und diem
ist die Spalte.Beispiel:
BEARBEITET:
Sollten Sie sicherstellen, dass Sie das Lesen der Tastatur-Eingabe. Das terminal wird die "Art" nur die
ESC[n;mR
Sequenz (nicht ENTER-Taste). Inbash
können Sie so etwas wie:Erklärung: die
-d R
(Trennzeichen) argument wirdread
halt am charR
anstelle der Standard-Datensatz-Trennzeichen (ENTER
). Wird dieser ladenESC[n;m
im$foo
. Der Schnitt ist mit[
als Trennzeichen und Kommissionierung der zweite Bereich, Vermietungn;m
(Zeile;Spalte).Ich weiß nicht, über andere Muscheln. Ihre besten Schuss ist einige oneliner in Perl, Python oder so etwas. In Perl können Sie beginnen, mit der folgenden (ungetesteten) snippet:
Zum Beispiel, wenn Sie eingeben:
Drücken Sie [ENTER] ein paar mal und dann [STRG]+[D]. Dann versuchen Sie:
Den
n
undm
Werte sind 47 und 1. Überprüfen Sie die wikipedia-Artikel über ANSI-escape-codes für weitere Informationen.Vor dem Internet, in den Goldenen Tagen der BBS, alte Säcke wie ich hatte eine Menge Spaß mit diesen codes.
;1R
.-s
mitread
so, dass es nicht das echo, die Antwort auf dem Bildschirm. Die ersten beiden Zeilen nun "automatisch" speichern der position imfoo
.\
undz
sind nebeneinander.