Jump to content

баннер (Unix)

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

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

Операция

[ редактировать ]

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

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

Выполнение

[ редактировать ]

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

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

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

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

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

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

[ редактировать ]

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

 $ banner 'Hello!'
 #     #                                   ###
 #     #  ######  #       #        ####    ###
 #     #  #       #       #       #    #   ###
 #######  #####   #       #       #    #    #
 #     #  #       #       #       #    #
 #     #  #       #       #       #    #   ###
 #     #  ######  ######  ######   ####    ###

Одна буква из баннерной программы, ориентированной на принтер, обычно встречающейся в BSD и ее производных:

 $ banner -w80 "a"
                          #####
                        #########
                     ###############        ###
                    ################      ######
                   ##################     ########
                   #####         #####    #########
                   ####           ####      ##  ###
                   ###            ####           ##
                   ###            ###            ##
                   ###            ###           ###
                    ####         ###           ####
                      #############################
                    ##############################
                   ##############################
                   ############################
                   ###########################
                   ###
                   #
                   #

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

 $ repeat 1000 sh -c '( clear ; date +" %H.%M.%S" | xargs banner ; sleep 1)'

   #     #####             #     #####          ####### #######
  ##    #     #           ##    #     #         #       #
 # #    #                # #          #         #       #
   #    ######             #     #####          ######  ######
   #    #     #   ###      #    #         ###         #       #
   #    #     #   ###      #    #         ###   #     # #     #
 #####   #####    ###    #####  #######   ###    #####   #####

См. также

[ редактировать ]
  • Figlet утилита Linux , предоставляющая ту же функциональность при выборе шрифта баннера.

Примечания

[ редактировать ]
  1. ^ Если следующий код не запускается в оболочке Zsh , необходимо определить команду повтора: [ 7 ] как в этом коде:
    function repeat(){
    for ((i=0;i<$1;i++)); do
       eval ${*:2}
    }
    

    или этого определения можно избежать, заменив команду повтора циклом while , например:

    $ i=0 ; while (($i<1000)); do sh -c '( clear ; date +" %H.%M.%S" | xargs banner ; sleep 1 ; ((i=$i+1)))' ; done
    
  2. ^ Это также можно сделать с помощью утилиты Figlet с заменой banner с figlet -f banner
  1. ^ Перейти обратно: а б Стив Морицугу; Санджив Гуха; Джеймс Эдвардс; Дэвид Питтс (2000). Практический UNIX . Издательство Que. стр. 220–221 . ISBN  0-7897-2250-Х .
  2. ^ Арнольд Роббинс (2006). Коротко о UNIX . О'Рейли. стр. 24 . ISBN  0-596-10029-9 .
  3. ^ Перейти обратно: а б с Диомидис Спинеллис (2006). Качество кода . Adobe Пресс. стр. 70–71. ISBN  0-321-16607-8 .
  4. ^ Хэтч (19 апреля 2004 г.). «Система V в AIX и Dynix/ptx» . Архивировано из оригинала 26 мая 2009 г. Проверено 23 июля 2008 г.
  5. ^ «AIX: Документ 157-28-E» (PDF) . zen77087.zen.co.uk . [ постоянная мертвая ссылка ]
  6. ^ «Пакет: sysvbanner (1.0.15 и другие)» . Дебиан . Архивировано из оригинала 20 декабря 2016 г. Проверено 6 мая 2010 г.
  7. ^ Франковский, Енджей (8 мая 2020 г.). «Команды Linux – повторите команду n раз» . Архивировано из оригинала 19 ноября 2021 года . Проверено 22 января 2022 г.

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

[ редактировать ]
  • Амир Афзал (2008). «Знамя команды». UNIX без границ . Прентис Холл. стр. 462–463. ISBN  0-13-119449-6 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 119d1fcbb276bd1e7a39439b2998ed18__1675440780
URL1:https://arc.ask3.ru/arc/aa/11/18/119d1fcbb276bd1e7a39439b2998ed18.html
Заголовок, (Title) документа по адресу, URL1:
banner (Unix) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)