И снова понедельник и снова на работу. Сегодня про оптимизацию и управляющие последовательности. Бест-практики, трувей ёпта!
Источник: оригинал в Telegram
Скучная теория
Практика
Чтобы не усложнять, рассмотрим пример на основе 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
Результат сам посмотришь, если интересно.
Для многих это тема не новая, но я частенько наблюдаю в скриптах избыточное применение этих управляющих последовательностей.
Короче пихай это говнище в переменную и будет заебись!
На закуску держи интересный пример определения и сохранения последовательностей.

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








Комментарии