TGViewer
Bash Days | Linux | DevOps Bash Days | Linux | DevOps @bashdays · 23.6K subscribers
Post #743 9.91K
Про эстетику и терминал

Записывал я тут какое-то видео и заметил, что меня пиздец бесит такое поведение:

1. Открываю терминал
2. Запускаю к примеру sleep 10
3. Курсор перескакивает на новую строку


Но команда sleep еще не завершилась, а курсор уже выпрыгнул из штанов.
ㅤ
Хочу, чтобы курсор после запуска команды не перескакивал на новую строку, а ждал завершения команды.

Люблю я себе головняк создать на ровном месте. Поехали решать чо!

cursor_killer() {

echo -ne '\e[?25h'
trap 'echo -ne "\e[?25l"; trap DEBUG' DEBUG
}

PROMPT_COMMAND='cursor_killer'


Получилась такая упоротая и непонятная функция.

Что происходит?

Инициализируем переменную PROMPT_COMMAND. Это команда выполняется перед выводом строки приглашения (prompt).

Дальше делаем курсор видимым с помощью echo. А следом скрываем курсор перед выполнением каждой команды с помощью trap.

В trap мы установили обработчик для псевдо-сигнала DEBUG.

➡️ help trap

If a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command.


\e[?25h = включает отображение курсора (h = "show")

\e[?25l = отключает отображение курсора (l = "low visibility" или "hide")

Получилось так:

1. Первая команда делает курсор видимым.
2. Вторая команда установит обработчик на сигнал DEBUG.
3. Обработчик скрывает курсор и сбрасывается обработчик для сигнала DEBUG в дефолт.

Сохраняем эту поделку в cur_killer.sh и запускаем когда нам это нужно. Либо делаем source cur_killer.sh.

Ну а чтобы эта штука оказалась тебе полезной, можешь написать свой отладчик bash скриптов.

К примеру будем выводить команду, перед её выполнением:

trap 'echo "RUN: $BASH_COMMAND"' DEBUG


Теперь позапускай sleep, ls или что-то еще, перед выполнением команды, на экран будет выводиться команда. К примеру так:

trap 'echo "RUN: $BASH_COMMAND"' DEBUG

ls

RUN: ls --color=auto -la


Вот такой фигнёй я порой занимаюсь, а не сериальчики смотрю.

Покеда! Вечером еще увидимся, декабрь прям шепчет на контент и интеграции. В январе уж отдохнем.

tags: #bash
—
🔔 @bashdays➡️ @gitgate
More from @bashdays
  1. Sep 24, 2026Post #1565
  2. Sep 23, 2026Здрасти приехали, решил я в кой-то веке воспользоваться услугами Codex, создал аккаунт, по…
  3. Sep 22, 2026Всем привет, с вами TagdTagd. Сегодня опять поднимем тему архивов, но немного с другой сто…
  4. Sep 15, 2026Всем привет, с вами TagdTagd. И это вторая часть. Практическая. С первой частью можешь озн…
  5. Sep 11, 2026🤖 DevOps в эпоху AI трансформации: что работает уже сейчас! 17 сентября Сбер собирает Dev…
  6. Sep 9, 2026Всем привет, с вами TagdTagd! Я тут вынужденно перешёл на MAX. Просто Telegram перестал ра…
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 →