<Попередній | зміст | Наступна>
Переміщення курсору
Для розташування курсору можна використовувати escape-коди. Це зазвичай використовується для надання годинника або іншої інформації в іншому місці на екрані, наприклад у верхній куті кожного разу, коли намальовується підказка. Ось список escape-кодів, які встановлюють курсор:
Таблиця 13-4: Вихідні послідовності руху курсора
Escape Code Action
\033[l;cH Перемістіть курсор на рядок l і колонка c
\033[nA Перемістіть курсор вгору n ліній
\033[nB Перемістіть курсор вниз n ліній
\033[nC Перемістіть курсор вперед n символи
\033[nD Перемістіть курсор назад n символи
\033[2J Очистіть екран і перемістіть курсор у верхній лівий кут (рядок 0, стовпець 0)
\033[K Очистити від позиції курсору до кінця поточного рядка
\033[s Збереження поточної позиції курсору
\033[u Викликати збережену позицію курсору
Використовуючи наведені вище коди, ми створимо підказку, яка малює червону смугу у верхній частині екрана, що містить годинник (відображається жовтим текстом) щоразу, коли підказка відображається. Код підказки - це ось такий приголомшливий на вигляд рядок:
PS1="\[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u\]
<\u@\h \W>\$ "
PS1="\[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u\]
<\u@\h \W>\$ "
Давайте подивимося на кожну частину рядка, щоб побачити, що вона робить:
Переміщення курсору
Таблиця 13-5: Розбивка складного рядка підказки
Послідовність дії
Послідовність дії
\[ Починає недруковану послідовність символів. Мета цього – дозволити bash правильно розрахувати розмір видимого підказки. Без точного розрахунку функції редагування командного рядка не можуть правильно розташувати курсор.
\033[s Збережіть позицію курсору. Це потрібно, щоб повернутися до оперативного розташування після того, як у верхній частині екрана буде намальована панель і годинник. Майте на увазі, що деякі емулятори терміналів не розпізнають цей код.
\033[0;0H Перемістіть курсор у верхній лівий кут, який є рядком 0, стовпцем 0.
\033[0;41m Встановіть червоний колір фону.
\033[К Очистити від поточного розташування курсору (верхній лівий кут) до кінця рядка. Оскільки колір фону тепер червоний, лінія очищається до цього кольору, створюючи нашу панель. Зверніть увагу, що очищення до кінця рядка не змінює положення курсору, який залишається у верхньому лівому куті.
\033[1;33m Встановити жовтий колір тексту.
\t Відображення поточного часу. Хоча це «друкований» елемент, ми все одно включаємо його в недруковану частину підказки, оскільки ми не хочемо, щоб bash включав годинник під час обчислення справжнього розміру відображуваного підказки.
\033[0m Вимкнути колір. Це впливає як на текст, так і на фон.
\033[u Відновити позицію курсору, збережену раніше.
\] Завершення послідовності недрукованих символів.
<\u@\h \W>\$ Рядок підказки.