Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² LinuxΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 89

Автор ΠœΡΡ‚ΡŒΡŽ НСйл

$ <b>./menu4</b>

Choice: Please select an action

a β€” add new record

d β€” delete record

q β€” quit

You have chosen: a

Choice: Please select an action

a β€” add new record

d β€” delete record

q β€” quit

You have chosen: q $

Если Π²Ρ‹ Π½Π°ΠΆΠΌΠ΅Ρ‚Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ клавиш <Ctrl>+<C>, символ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ прямо Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ истолкован, ΠΊΠ°ΠΊ Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€.

Π’Ρ‹Π²ΠΎΠ΄ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ структуры Ρ‚ΠΈΠΏΠ°

termios
Π²Ρ‹ управляли Π²Π²ΠΎΠ΄ΠΎΠΌ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, Π½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ управлСния Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΌΠΈ Π½Π° экранС Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°. Π’ Π½Π°Ρ‡Π°Π»Π΅ Π³Π»Π°Π²Ρ‹ Π²Ρ‹ примСняли Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ
printf
для Π²Ρ‹Π²ΠΎΠ΄Π° символов Π½Π° экран, Π½Π΅ имСя ΠΏΡ€ΠΈ этом возмоТности ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΈΡ… Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ мСсто экрана.

Π’ΠΈΠΏ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°

Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… систСмах UNIX ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Ρ‹, нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ сСгодня Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях "Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»" ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π° самом Π΄Π΅Π»Π΅ Π±Ρ‹Ρ‚ΡŒ ПК, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ эмуляции Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° ΠΈΠ»ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π² ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ срСдС, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ xterm Π² графичСской ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ X11.

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈ сущСствовало ΠΎΡ‡Π΅Π½ΡŒ большоС число Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠ² Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ всС ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (строки символов, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с escape-символа) для управлСния ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ курсора ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ΠΆΠΈΡ€Π½ΠΎΠ΅ Π½Π°Ρ‡Π΅Ρ€Ρ‚Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ€Ρ†Π°Π½ΠΈΠ΅, способы Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ управлСния ΠΏΡ€ΠΈ этом слабо стандартизованы. Π£ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… старых ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠ² Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π½Ρ‹Π΅ характСристики ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ экрана, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒΡΡ ΠΈΠ»ΠΈ Π½Π΅ ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒΡΡ, ΠΊΠΎΠ³Π΄Π° посылаСтся символ

Backspace
, ΠΈ Ρ‚.Π΄.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

БущСствуСт стандарт ANSI для Π½Π°Π±ΠΎΡ€Π° escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ (Π² основном Π±Π°Π·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ…ΡΡ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡΡ…, примСняСмых Π² сСрии VT-Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠ² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Digital Equipment Corporation, Π½ΠΎ Π½Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹Ρ… ΠΈΠΌ). МногиС Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΡΠΌΡƒΠ»ΡΡ†ΠΈΡŽ стандартного Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°, часто VT100, VT220 ΠΈΠ»ΠΈ ANSI, Π° ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ².

Π’Π°ΠΊΠΎΠ΅ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠ² Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ для программистов, ΠΏΡ‹Ρ‚Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ управлСния экраном, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅ΡΡ Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°Ρ… Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². НапримСр, Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ANSI примСняСт ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ символов

Escape, [, A
для пСрСмСщСния курсора Π²Π²Π΅Ρ€Ρ… Π½Π° ΠΎΠ΄Π½Ρƒ строку. Π’Π΅Ρ€ΠΌΠΈΠ½Π°Π» ADM-Π—Π° (ΠΎΡ‡Π΅Π½ΡŒ распространСнный нСсколько Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ символ ΠΎΡ‚ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ клавиш <Ctrl>+<K>.

НаписаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΉ Π΄Π΅Π»ΠΎ с Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°ΠΌΠΈ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² систСмС UNIX, каТСтся ΠΊΡ€Π°ΠΉΠ½Π΅ ΡƒΡΡ‚Ρ€Π°ΡˆΠ°ΡŽΡ‰Π΅ΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ. Π’Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ понадобится Ρ€Π°Π·Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ для Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.

Как Π½ΠΈ странно, Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ сущСствуСт Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅, извСстном ΠΊΠ°ΠΊ terminfo. ВмСсто нСобходимости обслуТивания любого Ρ‚ΠΈΠΏΠ° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π΅ΠΉ достаточно ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠ² для получСния ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ соврСмСнных систСм UNIX, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Linux, эта Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… объСдинСна с Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ, Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΌ curses, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅.

Для примСнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ terminfo Π²Ρ‹, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» curses.h ΠΏΠ°ΠΊΠ΅Ρ‚Π° curses ΠΈ собствСнный Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» term.h ΠΏΠ°ΠΊΠ΅Ρ‚Π° terminfo. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… систСмах Linux Π²Π°ΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, придСтся ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ curses, ΠΈΠ·Π²Π΅ΡΡ‚Π½ΡƒΡŽ ΠΊΠ°ΠΊ ncurses, ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» ncurses.h для прСдоставлСния ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ² вашим функциям terminfo.

УстановитС Ρ‚ΠΈΠΏ вашСго Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°

ΠžΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ОБ Linux содСрТит ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ

TERM
, которая Ρ…Ρ€Π°Π½ΠΈΡ‚ Ρ‚ΠΈΠΏ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½Π° устанавливаСтся систСмой автоматичСски Π²ΠΎ врСмя рСгистрации Π² систСмС. БистСмный администратор ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π΄Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ нСпосрСдствСнно ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ подсказку с Ρ‚ΠΈΠΏΠΎΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° для ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… сСтСвых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
TERM
ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ
rlogin
Ρ‡Π΅Ρ€Π΅Π· telnet.

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ ΠΎ сообраТСниях систСмы ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΈΠΌ ΠΈΠ»ΠΈ Сю Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°:

$ <b>echo $TERM</b>

xterm

$

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° выполняСтся ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ xterm β€” эмулятора Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° для графичСской ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ X Window System, ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ "Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности, ΠΊΠ°ΠΊ KDE's Konsole ΠΈΠ»ΠΈ GNOME's gnome-terminal.

ΠŸΠ°ΠΊΠ΅Ρ‚ terminfo содСрТит Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… характСристик ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ для большого числа Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠ² ΠΈ прСдоставляСт Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс для ΠΈΡ… использования. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, смоТСт ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ Π²Ρ‹Π³ΠΎΠ΄Ρƒ ΠΎΡ‚ примСнСния Π½ΠΎΠ²Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠ² ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π½Π΅ Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ мноТСства Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠ².

Π₯арактСристики Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠ² Π² terminfo ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ². Они хранятся Π² Π½Π°Π±ΠΎΡ€Π΅ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² terminfo, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ находятся Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… /usr/lib/terminfo ΠΈΠ»ΠΈ /usr/share/terminfo. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° (ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½Ρ‹ Π² terminfo) Π΅ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ характСристики Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° ΠΈ способ доступа ΠΊ Π΅Π³ΠΎ функциям. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ слишком большого ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ хранятся Π² ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ…, ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ Ρ‚ΠΈΠΏΠ° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°. Π’Π°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° VT100 ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Ρ„Π°ΠΉΠ»Π΅ …terminfo/v/vt100.

Π€Π°ΠΉΠ»Ρ‹ terminfo ΠΏΠΈΡˆΡƒΡ‚ΡΡ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚ΠΈΠΏ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° Π² исходном Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎΠΌ (ΠΈΠ»ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎΠΌ!) для чтСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ компилируСтся ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ

tic
Π² Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ ΠΈ эффСктивный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ. Π‘Ρ‚Ρ€Π°Π½Π½ΠΎ, стандарт X/Open ссылаСтся Π½Π° описания исходного ΠΈ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, Π½ΠΎ Π½Π΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ
tic
, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ для Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ прСобразования исходного Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π² ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ. Для Π²Ρ‹Π²ΠΎΠ΄Π° ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎΠΉ для чтСния вСрсии ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ элСмСнта Π½Π°Π±ΠΎΡ€Π° terminfo ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ infocmp.

Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π° terminfo для Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° VT100:

$ infocmp vt100

vt100|vt100-am|dec vt100 (w/advanced video),

Β am, mir, msgr, xenl, xon, cols#80, it#8, lines#24, vt#3,

Β acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,

Β bel=^G, blink=\E[5m$&lt;2&gt;, bold=\E[1m$&lt;2&gt;,

Β clear=\E[H\E[J$&lt;50&gt;, cr=\r, csr=\E[%i%p1%d;%p2%dr,

Β cub=\E[%p1%dD, cub1=\b, cud=\E[%p1%dB, cud1=\n,

Β cuf=\E[%p1%dC, cuf1=\E[C$&lt;2&gt;,

Β cup=\E[%i%p1%d; %p2%dH$&lt;5&gt;, cuu=\E[%p1%dA,

Β cuu1=\E[A$&lt;2&gt;, ed=\E[J$&lt;50&gt;, el=\E[K$&lt;3&gt;,