Баннер (Unix) - Википедия - banner (Unix)

знамя
Операционная системаUnix и Unix-подобный
ТипКоманда

В знамя программа на Unix и Unix-подобный операционные системы выводит большой ASCII искусство версия текста, который предоставляется в качестве его программные аргументы. Одно из применений этой команды - создание хорошо заметных разделительных страниц для задания на печать.[1]

Операция

Каждый аргумент обрезается до 10 символов и печатается в отдельной «строке». Чтобы напечатать несколько слов в одной строке, они должны быть переданы как один аргумент, что выполняется из ракушка путем экранирования или цитирования слов в зависимости от ситуации.[1]

Связанная и более гибкая программа Фиглет, который может отображать текст с разными шрифтами и ориентациями.[2]

Выполнение

Способ внутренней реализации программы устарел. Используемые символьные шрифты встроены в сам программный код как статически инициализированные структуры данных. Используются две структуры данных. Первый - это таблица данных, содержащая последовательность инструкций печати, которые кодируют битовую карту для каждого символа (в кодировке, специфичной для знамя программа). Второй - это индекс в этой таблице, который указывает для каждого кода символа, где инструкции печати для этого символа начинаются и заканчиваются.[3]

Обе структуры данных были написаны вручную. Спинеллис отмечает, что «трудно придумать более подверженный ошибкам и неподдерживаемый формат данных». Он отмечает резкий контраст между исходным кодом знамя программа и автоматически сгенерированный исходный код для кодирования компьютерных шрифтов в программные данные (с использованием данных шрифта 6 на 10 в исходном коде порта mac68k из NetBSD для сравнения). Автоматически сгенерированные данные комментируются, документируя с помощью ASCII, как были получены битовые шаблоны. Автоматически сгенерированные данные были созданы из файла растрового изображения, который сам был сгенерирован с помощью программы создания / редактирования растровых изображений с графическим пользовательским интерфейсом. А автоматически сгенерированные данные организованы простым и очевидным образом - последовательность незакодированных байтов фиксированной длины для каждого глиф.[3]

Спинеллис также отмечает, что в современных компьютерных системах редко имеет смысл встраивать такие данные в сам исполняемый образ программы, так как прирост производительности от этого незначителен. Это затрудняет адаптацию программы к различным языковым условиям или сопровождение программы. Более предпочтительный подход в современных системах - хранить такие данные в отдельном файле данных, отличном от исполняемого файла изображения программы, или в вилка ресурса программы, которую программа читает во время выполнения.[3]

Версии

Неполный список версий:

  • К AT&T, в Система UNIX V.[4][5][6]
  • Автор: Cedar Solutions. Работает на современных Linux системы по состоянию на 2008 г. Печатает только по горизонтали с фиксированным размером.
  • К Мэри Энн Хортон в Калифорнийском университете в Беркли, распространяется как часть bsdmainutils пакет, под названием принтербаннер. Работает на современном Linux, GNU Hurd, и Mac OS X системы по состоянию на 2008 год. Вертикальная печать с использованием шрифта переменного размера.

Пример вывода

Из баннерной программы, ориентированной на терминал:

 $ banner 'Привет!' #     #                                   ### #     #  ######  #       #        ####    ### #     #  #       #       #       #    #   ### #######  #####   #       #       #    #    # #     #  #       #       #       #    # #     #  #       #       #       #    #   ### #     #  ######  ######  ######   ####    ###

Одно письмо из ориентированной на принтер баннерной программы, как обычно BSD и производные:

 $ banner -w80 "а"                          #####                        #########                     ###############        ###                    ################      ######                   ##################     ########                   #####         #####    #########                   ####           ####      ##  ###                   ###            ####           ##                   ###            ###            ##                   ###            ###           ###                    ####         ###           ####                      #############################                    ##############################                   ##############################                   ############################                   ###########################                   ###                   #                   #

Отображение непрерывных часов в течение 1000 секунд:

 $ повторять 1000 sh -c '(clear; date + "% H.% M.% S" | xargs banner; sleep 1)'   #     #####             #     #####          ####### #######  ##    #     #           ##    #     #         #       # # #    #                # #          #         #       #   #    ######             #     #####          ######  ######   #    #     #   ###      #    #         ###         #       #   #    #     #   ###      #    #         ###   #     # #     # #####   #####    ###    #####  #######   ###    #####   #####

Смотрите также

  • Фиглет - а Linux утилита, обеспечивающая ту же функциональность при выборе шрифта баннера

Рекомендации

  1. ^ а б Стив Морицугу; Санджив Гуха; Джеймс Эдвардс; Дэвид Питтс (2000). Практическая UNIX. Que Publishing. стр.220–221. ISBN  0-7897-2250-X.
  2. ^ Арнольд Роббинс (2006). UNIX в двух словах. О'Рейли. стр.24. ISBN  0-596-10029-9.
  3. ^ а б c Диомидис Спинеллис (2006). Качество кода. Adobe Press. С. 70–71. ISBN  0-321-16607-8.
  4. ^ Хэтч (19 апреля 2004 г.). «Система V в AIX и Dynix / ptx». Архивировано из оригинал на 2009-05-26. Получено 2008-07-23.
  5. ^ «AIX: документ 157-28-E» (PDF). zen77087.zen.co.uk.[постоянная мертвая ссылка ]
  6. ^ «Пакет: sysvbanner (1.0.15 и другие)». Debian. В архиве из оригинала на 20.12.2016. Получено 2010-05-06.

дальнейшее чтение

  • Амир Афзал (2008). «Баннерная команда». UNIX без ограничений. Прентис Холл. С. 462–463. ISBN  0-13-119449-6.

внешняя ссылка