Comment puis-je obtenir la position du curseur dans le terminal?
Je sais que je peut enregistrer la position à l'aide de tput sc
, mais comment puis-je le lire c'est la position de la variable? J'ai besoin du numéro de ligne. Je ne veux pas utiliser les malédictions/ncurses.
double possible de Comment récupérer la position du curseur dans le bash?
Je ne peux pas s'attendre à ce que l'utilisateur a bash. Il peut utiliser des csh ou etc.
Je ne peux pas s'attendre à ce que l'utilisateur a bash. Il peut utiliser des csh ou etc.
OriginalL'auteur ciembor | 2011-12-01
Vous devez vous connecter pour publier un commentaire.
À la norme ANSI terminaux compatibles, l'impression de la séquence
ESC[6n
fera rapport à la position du curseur de l'application (comme bien tapé au clavier)ESC[n;mR
, oùn
est la ligne etm
est la colonne.Exemple:
ÉDITÉ:
Vous devriez assurez-vous de lire les entrées au clavier. Le terminal sera "type" juste à la
ESC[n;mR
séquence (pas touche ENTRÉE). Dansbash
vous pouvez utiliser quelque chose comme:Explication: le
-d R
(délimiteur) argument feraread
arrêter le charR
au lieu de la valeur par défaut délimiteur d'enregistrement (ENTER
). Cette option permet de stockerESC[n;m
dans$foo
. La coupe est à l'aide de[
comme délimiteur et de la cueillette de la deuxième champ, laissantn;m
(ligne;colonne).Je ne sais pas pour les autres coques. Votre meilleur coup est certains oneliner en Perl, Python ou quelque chose. En Perl, vous pouvez commencer avec la suivante (non testé) extrait de:
Par exemple, si vous saisissez:
Appuyez sur [ENTER] une fois en couple, puis [CTRL]+[D]. Essayez:
La
n
etm
valeurs sont 47 et 1. De vérifier la article de wikipédia sur les codes d'échappement ANSI pour plus d'informations.Avant Internet, dans les beaux jours de la BBS, les vieux cons comme moi ont eu beaucoup de plaisir avec ces codes.
;1R
.c'est parce que le texte est repris à la terminale, qui à son tour pourrait interpréter la séquence d'échappement et de couper les choses.
J'ai juste édité le bash exemple un peu. Par exemple à l'aide de
-s
avecread
afin qu'il ne fait pas l'écho de la réponse à l'écran. Les deux premières lignes "en silence" stocker la position dansfoo
.OriginalL'auteur Paulo Scardine