Применить команду к каждой строке в терминале bash

Применить команду к каждой строке в терминале bash

Сегодня я случайно обнаружил пакет lolcat.

введите описание изображения здесь

Первое, о чем я подумал: было бы здорово, если бы я мог перенаправлять все, что приходит из stdout в терминал через lolcat, чтобы получить эти радужные эффекты. Просто представьте себе возможности для розыгрышей.

По сути, я прошу о способе применения команды к каждой строке, которая выводится из командной строки bash в stdout.

решение1

Просто запустите bash следующим образом:баш | лолкот

решение2

В сеансе bash вы хотите сделать

exec > >(lolcat)

У меня это не установлено, но похожая идея:

$ date
Sun Mar 22 20:01:23 EDT 2015
$ exec > >(rev)
$ date
5102 TDE 23:10:02 22 raM nuS

решение3

Я создал расширение оболочки для самого быстрого в мире генератора веб-сайтов, который я называюНифт. В нем есть пасхальное яйцо, с помощью которого можно включить вывод lolcat для большинства вещей lolcat.on(после запуска оболочки с помощью, например. nift sh). Вы даже получите радужный вывод при нажатии клавиши Tab для получения возможных вариантов завершения, я сомневаюсь, что вы получите это с любыми другими предложенными решениями.

Расширение оболочки предназначено дляе++который является встроенным языком сценариев, который имеетэтифункции иэтидоступные типы. Но все, что он не распознает, запускается как системный вызов с использованием (вероятно, основной/стандартной) оболочки на вашей машине (поэтому его называют расширением оболочки в режиме оболочки REPL).

Nift будет искать версию lolcat, установленную на вашем компьютере, а в противном случае будет использовать встроенную версию, которая должна быть самой быстрой в мире (она почти идентична моей реализации на C++lolcat-cc(что является самым быстрым в мире). Я настоятельно рекомендую установить lolcat-cc (или другую версию lolcat) поверх Nift, так как в противном случае вы часто будете запускать двоичный файл Nift размером ~5 МБ практически для всех системных вызовов вместо двоичного файла размером <1 МБ для lolcat.

f++ также является довольно интересным языком сценариев. ВозьмитеэтотНапример, скрипт, который создает и удаляет 100 тыс. пустых текстовых файлов. На моей машине это выполняется примерно за 3,5 секунды, тогда какэтотСкрипт Bash, выполняющий по сути то же самое, занимает около 3 минут!! Некоторые из крутых вещей, которые вы, возможно, уже заметили в этом скрипте f++, это то, что вы можете разворачивать переменные внутри строк, вы можете определять переменные с типами, вы можете разворачивать переменные в несколько параметров с помощью вызовов функций, вы можете иметь НАМНОГО больше 10 тыс. входных параметров для вызовов функций (должно быть возможность иметь миллионы!).

Более подробную информацию о Nift REPL (включая сочетания клавиш для разных платформ) можно найти здесь.здесь.

Если вам нужно определить переменные оболочки (не через f++, а через базовую оболочку), то вам нужно будет сделать блоки кода с использованием функции sys/system. Вы также можете сделать блоки кода для Lua(JIT) и ExprTk аналогичным образом, поскольку они оба встроены в Nift. Вы также можете использовать как Lua, так и ExprTk с доступом к переменным f++/изменением их.

Итак, чтобы получить эту оболочку (расширение). Установите Nift через менеджер пакетов или клон, создайте и установите с GitHub. Введите nift shв свой терминал, чтобы запустить расширение оболочки Nift f++, затем введите lolcat.on, чтобы включить вывод rainbow.

Связанный контент