Могут пустые пробелы/фон в терминале быть замененными случайным (но симпатичные) шаблон символов ASCII?

Портативный способ сделать это мог быть:

perl -MPOSIX -le 'print strftime "%Y%m%d", localtime((lstat)[9]) for @ARGV' /etc/hosts
23
13.04.2017, 15:36
2 ответа

0.5a - голубые плоскости перекати-поля

Более ранние реализации, которым предоставляют вопрос, полагаются на последовательность команд, которая использует tr и ряд однобайтовых символов. Как был объяснен в этом Вопросы и ответы, утилита не может обработать многобайтовые символы, такие как Unicode. Но усиление тех символов было довольно важно в достижении желаемого эффекта. "Решение" было предоставлено, который позволяет смешивать единственный байт и много символы байта в едином потоке для рендеринга. Решение, разработанное там, представлено и настроено здесь:

Z1=$(echo -en '\xe2\x97\x98') #◘ 1
Z2=$(echo -en '\xe2\x95\x9a') #╚ 2
Z3=$(echo -en '\xe2\x95\x9c') #╜ 3
Z4=$(echo -en '\xe2\x95\x9d') #╝ 4
Z5=$(echo -en '\xe2\x95\x9e') #╞ 5
Z6=$(echo -en '\xe2\x95\x9f') #╟ 6
Z7=$(echo -en '\xe2\x96\x91') #░ 7
Z8=$(echo -en '\xe2\x96\x92') #▒ 8
Z9=$(echo -en '\xe2\x96\x93') #▓ 9
N1=$(echo -en '\xe2\x94\x80') #─ a
N2=$(echo -en '\xe2\x95\x92') #╒ b
N3=$(echo -en '\xe2\x95\x97') #╗ c
N4=$(echo -en '\xe2\x96\xb6') #▶d
N5=$(echo -en '\xe2\x94\xbc') #┼ e
N6=$(echo -en '\xe2\x94\xa4') #┤ f
N7=$(echo -en '\xe2\x95\xa1') #╡ g
Z11="$(tr -dc '123456789a' < /dev/urandom | head -c 1)" //Z11 to Z13 not
Z12="$(tr -dc '123456789a' < /dev/urandom | head -c 1)" // used here (see
Z13="$(tr -dc '123456789a' < /dev/urandom | head -c 1)" //link)

echo -en $(tr -dcs ' ;",15bdef' ' ' < /dev/urandom | head -c $(echo -en "$[$(tput cols) * $(tput lines)]") | sed -e "s/1/$(echo -en "\033[0;36m$Z1\033[0m")/g" -e "s/5/$(echo -en "\033[0;32m$Z5\033[0m")/g" -e "s/b/$(echo -en "\033[1;36m$N2\033[0m")/g" -e "s/d/$(echo -en "\033[1;36m$N4\033[0m")/g" -e "s/e/$(echo -en "\033[0;32m$N5\033[1;32m")/g" -e "s/f/$(echo -en "\033[0;36m$N7\033[1;32m")/g"); tput cup 1
                 ^set^+^chars^ to implement from pool - here 1,5,b,d,e,f... so_________________________^add the appropriate sed subprocessing units for implemented chars i.e. first one we replace "1" with the value of $Z1 and apply color at the same time, then all the chars move down the pipe to all required blocks - we selected to implement 6 chars here so we have 6 sed blocks. 

[N.B. To remove the blank space from the pattern, remove it from both sets: tr -dcs ';",15bdef' '']

PS1="\[\033[1;36m\] $(echo -en '\xe2\x96\x91')$(echo -en '\xe2\x96\x92')$(echo -en '\xe2\x96\x93')[\t]$(echo -en '\xe2\x96\x93')$(echo -en '\xe2\x96\x92')$(echo -en '\xe2\x96\x91') \[\033[7;36m\]$(echo -en '\xe2\x97\x98')$(echo -en '\xe2\x94\xbc')$(echo -en '\xe2\x94\x80')\W$(echo -en '\xe2\x94\x80')\[\033[0;36m\]$(echo -en '\xe2\x94\x80')$(echo -en '\xe2\x94\x80')$(echo -en '\xe2\x94\x80')@$(echo -en '\xe2\x96\xb6')\[\033[0;36m\]"

PROMPT_COMMAND="echo -en '\033[0;36m$(tr -dc '=' < /dev/urandom | head -c $(tput cols))\n\033[01;46m$(tr -dc '~' < /dev/urandom | head -c $(tput cols))\033[0;36m$(tr -dc '=' < /dev/urandom | head -c $(tput cols))'$(tput cuu 2)"

Эта реализация больше не представляет на строку, а скорее печатает целую последовательность в одном выстреле в конце sed обработка. Это появляется только при входе в систему однажды или обычно когда bash запускается. Вот один такой случайный шаблон в запуске (мы видим два оттенка зеленого цвета и два оттенка голубого цвета):

enter image description here

Экраны показывают результат в стандартном терминале Linux, и он работает в xterm также. Я использовал некоторые из тех новых символов шаблона в подсказке PS1, тогда как PROMPT_COMMAND просто заботится об активной строке и ее 2 дополнениях строки, которые используют 1-байтовые символы.

Шаблон также соответствует хорошо моему текущему распределению, которое звонит archbey в .bashrc.:

enter image description here

Это находится в для Рождества! Люди аплодисментов :)

6
27.01.2020, 19:42
  • 1
    Это не категорический ответ или реализация, но это - этап! ;-) –   25.12.2013, 03:38
  • 2
    устройств, может также быть возможно усилить питание библиотеки как aalib - посмотрите aafire, например, aafire -driver curses -extended -gamma 1 -floyd_steinberg -random 5 для теплого введения. –   10.01.2014, 22:40
  • 3
    Не пропускайте этот ответ, который занимается закодированным unicode ограничением utf8, обсужденным здесь!! –   11.09.2014, 12:36

Дисплеем управляет терминал программное обеспечение, которое работает то же веб-браузером: это интерпретирует последовательности символов для установки дисплея (см. человека terminfo). Оболочка удара не будет говорить терминал, как заполнить пустой регион экрана.

Некоторые терминалы могут иметь изображения как фон как gterm, но это не сделано оболочкой.

4
27.01.2020, 19:42
  • 1
    я отредактировал Q для объяснения быстро, что Вы отсылаете к, а также другая соответствующая информация из комментариев, которые скрыты. –   19.12.2013, 07:57

Теги

Похожие вопросы