Сегодня 1 апреля и ежегодно в этот день разные Интернет-ресурсы публикуют вымышленные курьёзные "новости" а также просто всякие несерьёзные статьи. Вот и я решил в сей пятничный день немного приобщиться к этому весёлому многообразию. Сегодня мы обратимся к разным забавным, хотя и бесполезным программам, работающим в консоли эмулятора терминала. Видимо — ввиду несколько неформального начала UNIX (как известно, Кен Томпсон написал игру Space Travel для компьютера PDP-7) — различные "бестолковые" программки писались буквально с первых дней существования операционных систем. Что ж, давайте последуем за героем замечательных комиксов Дэниеля Стори и разнообразим жизнь в "скучной" консоли.


fortune


fortune была написана Кеном Арнольдом аж в 1979 году. При запуске программка выводит случайный афоризм, цитату или шутку.


Страница проекта


~ $ fortune
Patch griefs with proverbs.
                -- William Shakespeare, "Much Ado About Nothing"

cowsay


Следующая программка, написанная Тони Монро, вполне может быть объединена с предыдущей в общем конвейере. И всё потому, что задача cowsay — вывести в терминале корову (или другое существо — если указать соответствующий аргумент), произносящую переданную на stdin фразу.


Страница проекта


~ $ fortune | cowsay
 _________________________________________
/ I reverently believe that the maker who \
| made us all makes everything in New     |
| England, but the weather. I don't know  |
| who makes that, but I think it must be  |
| raw apprentices in the weather-clerks   |
| factory who experiment and learn how,   |
| in New England, for board and clothes,  |
| and then are promoted to make weather   |
| for countries that require a good       |
| article, and will take their custom     |
| elsewhere if they don't get it.         |
|                                         |
\ -- Mark Twain                           /
 -----------------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

lolcat


Кто сказал, что текст в эмуляторе терминала должен быть одноцветным? Пусть будет хоть всех цветов радуги сразу!


Страница проекта


FIGlet


Хотите получить слово или фразу с ASCII art оформлением? Нет ничего проще — достаточно воспользоваться утилитой figlet.


~ $ figlet <<< 'Habrahabr'
 _   _       _               _           _
| | | | __ _| |__  _ __ __ _| |__   __ _| |__  _ __
| |_| |/ _` | '_ \| '__/ _` | '_ \ / _` | '_ \| '__|
|  _  | (_| | |_) | | | (_| | | | | (_| | |_) | |
|_| |_|\__,_|_.__/|_|  \__,_|_| |_|\__,_|_.__/|_|

TOIlet


Ещё один вариант программы, рисующей строку в виде баннера.


~ $ toilet <<< 'Habr'

 m    m        #
 #    #  mmm   #mmm    m mm
 #mmmm# "   #  #" "#   #"  "
 #    # m"""#  #   #   #
 #    # "mm"#  ##m#"   #

CMatrix


Воспользовавшись программкой cmatrix поклонники мира "Матрицы" могут почувствовать себя героями любимой вселенной.


Страница проекта


SL


SL — он же steam locomotive. Один мой коллега ставил sl на все серверы, с которыми мы работали. Объяснял он это так: "Если ты опечатался даже в команде ls, значит тебе точно пора немного отдохнуть".
По умолчанию sl просто приведёт в движение анимированный псевдографический локомотив, пересекающий экран. Однако у программы есть ключи запуска, позволяющие изменить это поведение. Например, паровоз может отправиться прямо на небо, а пассажиры будут кричать о помощи!


Страница проекта


calendar


Хотите узнать, какие примечательные события в прошлом были в этот день месяца? Ответ даст calendar. Заодно всегда можно найти подходящий повод выпить :)


~ $ calendar
Apr 01  Yourdon, Inc. founded, 1974 (It figures.)
Apr 01  People of superb intelligence, savoir-faire, etc. born this day.
Apr 01  Youth Day in Benin
Apr 01* Hol hamoed Pesach
Apr 01  Sergei Rachmaninoff is born in Oneg, Russia, 1873
Apr 01  Scott Joplin dies in New York City, 1917
Apr 01  Ben Collins became Debian Project Leader, 2001
Apr 01  Primera misa en territorio argentino, 1520
Apr 01  World fair in Bruxelles : 45,000,000 of visitors, 1958
Apr 01  1 april
Apr 01  Matthew Jacob <mjacob@FreeBSD.org> born in San Francisco, California, United States, 1958
Apr 01  Alexander V. Chernikov <melifaro@FreeBSD.org> born in Moscow, Russian Federation, 1984
Apr 01  Bill Fenner <fenner@FreeBSD.org> born in Bellefonte, Pennsylvania, United States, 1971
Apr 01  Peter Edwards <peadar@FreeBSD.org> born in Dublin, Ireland, 1973
Apr 01  Votre fichier calendar est corrompu.
Apr 01  N'oubliez pas les Hugues !
Apr 01  Avril entrant,
        Coucou chantant,
        Sonnailles tintant.
Apr 01  Organisierter Boykott jüdischer Geschäfte, 1933
Apr 01  Sergej Rachmaninow in Oneg geboren, 1873
Apr 01  Hugó
Apr 01  Civil Service Day (วันข้าราชการพลเรือน) in Thailand
Apr 01  April Fool's Day
Apr 01  April Fool's Day
Apr 02  Hans Christian Andersen born, 1805, fairy tale author
Apr 02  Pope John Paul II (Karol Wojtyla) died in Vatican, 2005
Apr 02  Haile Selassie is proclaimed emperor of Ethiopia, 1930
Apr 02  Malvinas Day in Argentina
Apr 02  Pascua Florida Day in Florida
Apr 02* Hol hamoed Pesach
Apr 02  Marvin Gaye is born in Washington, D.C., 1939
Apr 02  Fuerzas militares argentinas intentan recuperar las Islas Malvinas, 1982
Apr 02  Bonne fête aux Sandrine !
Apr 02  Áron
Apr 02  Thai Heritage Conservation Day (วันอนุรักษ์มรดกไทย) in Thailand
Apr 03  Washington Irving born, 1783
Apr 03  IBM 701 introduced, 1953
Apr 03  First publication of the newspaper La Gazzetta dello Sport, 1896
Apr 03* Pesach VII
Apr 03  Johannes Brahms dies in Vienna, Austria, 1897
Apr 03  Ferde Grofe dies in Santa Monica, California, 1972
Apr 03* Daylight Savings Time ends in ACT, NSW, SA, TAS and VIC.
Apr 03  Hellmuth Michaelis <hm@FreeBSD.org> born in Kiel, Schleswig-Holstein, Germany, 1958
Apr 03  Tong Liu <nemoliu@FreeBSD.org> born in Beijing, People's Republic of China, 1981
Apr 03  Gabor Pali <pgj@FreeBSD.org> born in Kunhegyes, Hungary, 1982
Apr 03  Aujourd'hui, c'est la St(e) Richard.
Apr 03  Johannes Brahms in Wien gestorben, 1897
Apr 03  Buda, Richárd
Apr 04  Tandy Corp. acquires Radio Shack, 1963 (9 stores)
Apr 04  Martin Luther King assassinated in Memphis, Tennessee, 1968
Apr 04  NATO established, 1949
Apr 04  Gandalf visits Bilbo
Apr 04  Ching Ming Festival in Hong Kong
Apr 04  Liberation Day in Hungary
Apr 04  National Day in Senegal
Apr 04  Muddy Waters (McKinley Morganfield) is born in Rolling Fork,
        Mississippi, 1915
Apr 04  Jason Unovitch <junovitch@FreeBSD.org> born in Scranton, Pennsylvania, United States, 1986
Apr 04  N'oubliez pas les Isidore !
Apr 04  Bonne fête aux Benoît !
Apr 04  Izidor

funny-manpage


Порой имеющейся в системе документации может оказаться недостаточно. Скажем, вы когда-нибудь слышали про uubp — Unix-to-Unix beer protocol? Пакет funny-manpage даст исчерпывающее описание! Кроме того, он дополнит ваш man и по другим важнейшим темам: попробуйте выполнить man sex, man condom или man baby.



Пасхальные яйца


Пожалуй, наиболее известный в мире GNU/Linux пример "пасхального яйца" содержит в себе старый добрый apt-get.


~ $ apt-get moo
                 (__)
                 (oo)
           /------\/
          / |    ||
         *  /\---/\
            ~~   ~~
..."Have you mooed today?"...

А вот aptitude мычать категорически не желает. Но если проявить настойчивость, строптивая утилита готова предложить альтернативу — только бы отстали!


~ $ aptitude moo
There are no Easter Eggs in this program.
~ $ aptitude -v moo
There really are no Easter Eggs in this program.
~ $ aptitude -vv moo
Didn't I already tell you that there are no Easter Eggs in this program?
~ $ aptitude -vvv moo
Stop it!
~ $ aptitude -vvvv moo
Okay, okay, if I give you an Easter Egg, will you go away?
~ $ aptitude -vvvvv moo
All right, you win.

                               /----\
                       -------/      \
                      /               \
                     /                |
   -----------------/                  --------\
   ----------------------------------------------
~ $ aptitude -vvvvvv moo
What is it?  It's an elephant being eaten by a snake, of course.

sudo


Вряд ли это можно считать "пасхальным яйцом", но вместо скучного сообщения о неудачной аутентификации sudo может оставлять едкие комментарии. Чтобы в случае ошибок при вводе пароля получать саркастические замечания, достаточно добавить строку Defaults insults в конфигурационный файл sudoers.


 ~ $ sudo -i
[sudo] password for a1ef:
I'm very sorry, but I'm not allowed to argue unless you've paid.
[sudo] password for a1ef:

Игры


И напоследок посмотрим во что можно поиграть в эмуляторе терминала. Конечно, их гораздо больше, чем я привёл ниже. Это лишь малая часть того, что можно найти на ресурсах вроде https://ttygames.wordpress.com/


pacman4console


Старый добрый Pac-Man, куда ж без него!


Страница проекта


nInvaders


Ещё одна легенда аркадных автоматов — Space Invaders.


Страница проекта


VITETRIS


Кто ж не знает Тетрис? Vitetris или Virtual terminal *tris clone — одна из его многочисленных "консольных" реинкарнаций с говорящим названием.


Страница проекта


nSnake


Snake, легендарная "змейка", безмерно популярная обитательница старых мобильных телефонов Nokia.


Страница проекта


А какие забавные программки знаете вы? Делитесь в комментариях!

Комментарии (10)


  1. railsfun
    01.04.2022 02:40
    +8

    Спасибо, хорошо подобраны команды. Не безучастная копипаста а живой рассказ.

    p.s. Телнетовский Star Wars все еще работает, хотя пишут что это не так ))


    1. UnknownErrror
      01.04.2022 10:14

      Работает только IPv6 версия

      telnet -4 towel.blinkenlights.nl выдаёт ошибку

      Соотвтетственно, те у кого нет IPv6 адреса, не могут посмотреть звёздные войны в теминале


      1. vesper-bot
        01.04.2022 17:00

        У меня ругается именно на -4 (Windows 8.1) и на подключении IPv6 отсутствует. Всё прекрасно подключается, выдает "переходите на IPv6, там больше картинок" :) Возможно, у вас какие-то проблемы с DNSv4.


  1. GooG2e
    01.04.2022 10:02
    +1

    Практический вопрос - как-то можно сделать запуск команды, если пользователь неактивен какое-то время в консоли? Запуск матрицы был бы офигенным хД


    1. aik
      01.04.2022 14:02
      +2

      Как вариант — screen умеет скринсейверы запускать. Но вам придётся тогда всегда в нём работать.
      kmandla.wordpress.com/2009/05/05/at-long-last-a-console-screensaver


      1. GooG2e
        01.04.2022 14:54

        О, полезная штука

        Спасибо)


  1. aik
    01.04.2022 13:37

    Матрица — это хорошо, буду в неактивных сеансах запускать.
    А то пока что использую там бесполезный htop или bashtop


  1. Cheater
    01.04.2022 13:49
    +19

    Cowsay оказывается принимает stdin, в тч можно сделать piping на себя.

    "Мы добавили корову в твою корову, чтобы она вызывала корову когда ты вызываешь корову."


    1. solarcore
      01.04.2022 22:32
      +2

      Круто, даже не догадался так корову использовать)


  1. JerleShannara
    01.04.2022 14:52

    Давным давно был жив telnet gw.boston.ru (18+ при поиске в картинках). Ещё есть классный консольный шутер 0verkill.