Вопрос или проблема
существует ли стиль для [xterm + bash сценарии, команды] внутри пользовательской рамки?
я бы хотел этот стиль, смотрите пример:
╭─────────────────────────┤текст заголовок1├────────────────────────╮
│ │
│текст, команда, сценарий, если иначе, echo, cat, sed, любая команда│
├──────────────────────────────────────────────────────────────┤
│текст, команда, сценарий, если иначе, echo, ca t, sed, любая команда│
│текст, команда, сценарий, если иначе, echo, cat , sed, любая команда│
│текст, команда, сценарий, если иначе, echo, cat, sed, любая команда│
├──────────────────────────────────────────────────────────────┤
├─────────────────────────┤текст заголовок2├────────────────────────┤
│текст, команда, сценарий, если иначе, echo, cat, sed, любая команда│
╰──────────────────────────────────────────────────────────────╯
шрифт: Моноширинный
…я в это не верю..
можете сделать это??
Шрифты в терминальных эмуляторах всегда моноширинные.
Создание этого вывода в оболочке сценария — это просто вопрос ввода его буквально, например так:
#! /bin/sh -
cat << 'EOF'
╭─────────────────────────┤текст заголовок1├────────────────────────╮
│ │
│текст, команда, сценарий, если иначе, echo, cat, sed, любая команда│
├──────────────────────────────────────────────────────────────┤
│текст, команда, сценарий, если иначе, echo, ca t, sed, любая команда│
│текст, команда, сценарий, если иначе, echo, cat , sed, любая команда│
│текст, команда, сценарий, если иначе, echo, cat, sed, любая команда│
├──────────────────────────────────────────────────────────────┤
├─────────────────────────┤текст заголовок2├────────────────────────┤
│текст, команда, сценарий, если иначе, echo, cat, sed, любая команда│
╰──────────────────────────────────────────────────────────────╯
EOF
Это предполагает, что вы находитесь в локали, чья карта символов имеет эти символы для рисования рамок, и что сценарий закодирован в этой карте символов и используется в локалях, которые используют ту же карту символов.
Имея сценарий, закодированный в UTF-8, и заменив cat
на iconv -f UTF-8
, можно гарантировать, что рамки будут правильно рисоваться в локали пользователя, если ее карта символов содержит эти символы для рисования рамок.
До того, как UTF-8 стал обычным делом, обычным методом рисования рамок было указать терминальному эмулятору переключиться на альтернативную кодировку.
После tput smacs
(s
ет m
од a
льтернативный c
арьер s
ет; tput rmacs
для переключения обратно, хотя вам может понадобиться tput enacs
для первоначального включения) в большинстве терминалов символы такие как `afgijklmnopqrstuvwxyz{|}~
становятся ◆▒°±␋┘┐┌└┼⎺⎻─⎼⎽├┤┴┬│≤≥π≠£·
, и для тех, кто этого не делает, возможность acsc
terminfo дает перевод. Смотрите раздел Графика линий в странице man terminfo(5) для подробностей. Использование этих символов сделает вывод совместимым с большим количеством терминалов, и локали, которые не используют UTF-8, но это более сложно сделать в сценарии оболочки без использования специализированных приложений, которые рисуют рамки, таких как dialog
или терминальные веб-браузеры, такие как elinks
или w3m
, которые могут выгружать отрисованную форму HTML-таблицы.
Ответ или решение
Возможность создания пользовательского окна с xterm и bash сценариями
Вопрос о том, возможно ли создать стильный интерфейс, в котором используется xterm
с bash
скриптами внутри пользовательского окна (frame window), заслуживает детального рассмотрения. Данная задача предполагает использование команд и текстов в терминале с привлекательным оформлением.
Содержание вашего запроса
Вы представили пример вывода, который включает текстовые рамки и различные команды, отображаемые в режиме псевдографики. Это может быть достигнуто в среде терминала, и важно понимать, как можно реализовать этот интерфейс.
Шаги реализации
-
Создание текстовых рамок: Основным инструментом для отображения сложных текстовых форматов в терминале является использование определенных символов, известных как символы построения рамок (box drawing characters). Для успешного отображения таких символов очень важно, чтобы кодировка вашего терминала поддерживала эти символы. Наиболее распространенной и рекомендуемой кодировкой является UTF-8.
-
Пример скрипта: Вы можете создать
bash
скрипт, чтобы вывести ваш желаемый текст. Например:#! /bin/bash cat << 'EOF' ╭─────────────────────────┤text title1├────────────────────────╮ │ │ │text, command, script, if else, echo, cat, sed, any command │ ├──────────────────────────────────────────────────────────────┤ │text, command, script, if else, echo, cat, sed, any command │ │text, command, script, if else, echo, cat, sed, any command │ │text, command, script, if else, echo, cat, sed, any command │ ├──────────────────────────────────────────────────────────────┤ ├─────────────────────────┤text title2├────────────────────────┤ │text, command, script, if else, echo, cat, sed, any command │ ╰──────────────────────────────────────────────────────────────╯ EOF
-
Использование
iconv
: Вы можете использоватьiconv
, чтобы убедиться, что текст корректно отображается в зависимости от локали пользователя. Это особенно важно, если скрипт будет выполняться в разных системах, где могут использоваться различные кодировки символов. Например:iconv -f UTF-8 -t UTF-8
-
Поддержка альтернативного символа набора: В ситуации, когда терминал не поддерживает UTF-8, вы можете использовать команду
tput
для переключения на альтернативный набор символов. Это позволяет улучшить совместимость отображения:tput smacs # Включает альтернативный набор символов # Ваш вывод tput rmacs # Отключает альтернативный набор символов
-
Использование специализированных утилит: Для создания более сложных интерфейсов можно использовать элементы интерфейса в утилитах вроде
dialog
, которые позволяют делать более интерактивные и визуально привлекательные интерфейсы в терминале.
Заключение
Создание системы, в которой используется xterm
с bash
внутри специального интерфейса, вполне реально. С помощью правильно составленного скрипта можно добиться желаемого внешнего вида текста с использованием псевдографики. Важно помнить об особенностях кодирования и поддержке различных символов, что позволит обеспечить корректное отображение на разных системах.
Таким образом, ваш запрос может быть реализован, и вы можете смело вводить свои команды и сценарии, создавая тем самым стильный интерфейс в терминале.