en utilisant directement les capacités du terminal

Quelqu’un utilise-t- terminfo tputs() fonctions terminfo telles que tputs() , tparm() , tigetstr() , tigetnum() ?

Je ne trouve aucun exemple pratique en ligne avec ces fonctions de terminal de bas niveau.

Est-ce que tout le monde utilise la bibliothèque ncurses pour contrôler le terminal et ne s’embête pas avec ce code de bas niveau?

Je pense que ce code de bas niveau est très difficile à lire.

Dois-je m’embêter avec ce code de bas niveau ou simplement apprendre ncurses qui est beaucoup moins lourd avec le code de niveau supérieur fourni par ncurses?

Si vous connaissez des informations pratiques sur ces fonctions de bas niveau, partagez-les avec moi.

Est-ce que tout le monde utilise la bibliothèque ncurses pour contrôler le terminal et ne s’embête pas avec ce code de bas niveau?

C’est très facile à vérifier.

Préparez d’abord une liste de fonctions dans la bibliothèque ncurses. Sur mon système, ce serait:

 nm -D /lib64/libncurses.so.5.9 | fgrep ' T ' \ | sed 's/^[0-9A-Fa-f ]*T //' > /tmp/ncurses-functions-list 

Maintenant, voyez combien d’entre eux sont utilisés dans divers programmes.

 for f in /usr/bin/* ; do nm -D $f 2>/dev/null | fgrep ' U ' \ | sed 's/^ *U //' \ | fgrep -x -f - /tmp/ncurses-functions-list && echo ==== $f; done 

Le script est un sharepoint départ, mais doit être amélioré. Tout d’abord, pour dire ce que ça fait:

  • “nm -D” liste les symboles dynamics , c’est-à-dire ceux qui font référence à une bibliothèque externe.
  • la première étape obtient la liste des symboles de la bibliothèque ncurses, et
  • le filtre en recherchant le motif “T” qui se trouve où un nom de fonction est défini.
  • Après avoir enregistré le résultat dans un fichier / tmp / ncurses-functions-list, le second script teste chacun des programmes dans / usr / bin
  • le motif de filtrage dans le second script est pour les symboles non définis , c’est-à-dire ceux qui proviennent d’une autre bibliothèque
  • le résultat du filtrage est une liste de noms de fonctions (ou de données), qui est ensuite comparée à la liste établie lors de la première étape.

Une manière de l’améliorer serait de montrer (comme demandé à l’origine) quels programmes utilisent l’interface de bas niveau et qui utilisent l’interface ncurses de haut niveau. Comme indiqué dans la FAQ ncurses Types d’utilisateurs de bibliothèque, la manière de les distinguer consiste à voir quels programmes appellent initscr ou newterm (nécessaires pour initialiser l’interface de haut niveau) et lesquels ne le sont pas. Un simple “ldd” montrerait quels programmes sont liés avec ncurses (pour donner le total), et réduire la liste de fonctions à ces deux dirait – avec le second script – qui utilise l’interface de haut niveau.