TGViewer
Bash Days | Linux | DevOps Bash Days | Linux | DevOps @bashdays · 23.6K subscribers
Post #452 10.5K
И снова понедельник и снова на работу. Сегодня про оптимизацию и управляющие последовательности. Бест-практики, трувей ёпта!

Если в своих скриптах или программах ты часто используешь одинаковые управляющие последовательности, имеет смысл сохранить результаты работы утилиты tput в переменную.

Скучная теория

tput используется для управления терминалом и выполнения различных задач, связанных с его настройкой и управлением.

Управляющие последовательности — это специальные последовательности символов, используемые для управления поведением терминала. Они позволяют изменять цвета текста, перемещать курсор, очищать экран и выполнять другие действия, не изменяя сам текст.


✔️ Практика

Чтобы не усложнять, рассмотрим пример на основе clear. Эта команда очищает экран.

clear=$(tput clear)


Помещаем в переменную очистку экрана. Теперь проверяем:

printf '%s' $clear  
echo -n $clear


После выполнения одной из этих команд, экран терминала будет очищен.

А почему просто не выполнить команду clear без этих вонючих tput? Потому, что это самый простой пример, чтобы ты въехал в суть.

Получается мы не плодим в своих скриптах кучу tput clear а используем оптимизированный вариант с переменной.

Чем больше параметров в tput, тем больше треша в скриптах. Проще же один раз закинуть в переменную эту кишку и не маяться хуйнёй.

Посмотреть управляющую последовательно ты можешь так:

echo ${clear@Q}


На экран выведется:

$'\E[H\E[2J\E[3J'


Конструкция: ${clear@Q} это использование параметра расширения в Bash, который отображает значение переменной clear в форме, пригодной для использования в качестве строки в программном коде. Это означает, что специальные символы будут экранированы.

Начиная с версии 4.4 в Bash, значение parameter заключаются в одинарные кавычки.

${parameter@Q}


Экранирование помогает избежать интерпретации специальных символов терминалом и позволяет безопасно выводить последовательности на экран.


Пример одной строкой:

tput cup 20 60 | { read -r BASHDAYS; echo ${BASHDAYS@Q}; }


1. Генерируем управляющую последовательность для перемещения курсора терминала на 20 строку и колонку 60.
2. Передаем полученную строку по пайпу.
3. Читаем строку и присваиваем ее переменной BASHDAYS.
4. Выводим значение переменной BASHDAYS.

По итогу получаем такое:

$'\E[21;61H'


Еще вариант:

tput cup 1 10 | cat -v ; echo


Результат сам посмотришь если интересно.

Для многих это тема не новая, но я частенько наблюдаю в скриптах избыточное применение этих управляющих последовательностей.

Короче пихай это говнище в переменную и будет заебись!

На закуску держи интересный пример определения и сохранения последовательностей.

Давай краба, увидимся!

tags: #bash #linux
—
🔔 @bashdays
More from @bashdays
  1. Sep 30, 2026↗️ Для всех, кто строит 15 октября Cloud․ru соберет инженеров, которые строят и эксплуатир…
  2. Sep 29, 2026Самый жаркий холивар в команде — это не systemd, а какие заказать роллы на всю команду. Од…
  3. Sep 24, 2026Post #1565
  4. Sep 23, 2026Здрасти приехали, решил я в кой-то веке воспользоваться услугами Codex, создал аккаунт, по…
  5. Sep 22, 2026Всем привет, с вами TagdTagd. Сегодня опять поднимем тему архивов, но немного с другой сто…
  6. Sep 15, 2026Всем привет, с вами TagdTagd. И это вторая часть. Практическая. С первой частью можешь озн…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →