Как стать автором
Обновить
4.61

Оболочки *

Шелл и компания

Сначала показывать
Порог рейтинга

Хэндлим обработку некорректного ввода в ZSH для поднятия настроения

Сегодня хочу рассказать о том, как немного разнообразить времяпрепровождение в консоли, добавив немного юмора, если ваша командная оболочка zsh.

Все, кто работает в терминале (эмуляторе терминала, чтобы меня тут не покусали в комментариях :)), думаю, периодически сталкиваются с тем, что вводят команду неправильно. Например, есть шуточная команда sl, которая рисует движущийся поезд, если вы случайно опечатались, когда хотели набрать команду ls.
Это служит некой разрядкой и поводом лишний раз улыбнуться. Вот репозиторий этой утилитки на GitHub для любознательных.

А что, если мы хотим, чтобы на ввод любой несуществующей команды, мы получали что-то аналогичное выводу команды sl? По умолчанию в ZSH в этом случае выводится сообщение “command not found”. Давайте это исправим.

Для этого нам понадобится:

  • непосредственно zsh в качестве командной оболочки;

  • cowsay - утилита командной строки, которая рисует разные фигурки, которые как бы говорят, наподобие героям комиксов.

  • lolcat - утилита для разукрашивания текста градиентом, добавления анимации и т.д.

В ZSH предусмотрена возможность переопределять поведение при возникновении каких-то ситуаций, в том числе, переопределение поведения при возникновении ошибок. В нашем случае нам нужно переопределить вывод, когда команда, вводимая пользователем не найдена. Для этого будем использовать метод command_not_found_handler. Добавим в .zshrc файл следующий код:

command_not_found_handler() {    
  cowsay -f tux "LOL! Command not found: $1" | lolcat -a -s 150
  return 127
}

Немного пояснений: первая строка будет рисовать там пингвина, говорящего, что введенная нами команда не найдена, пингвин будет появляться построчно (150 - скорость появления). Более подробно с доступными параметрами lolcat можно ознакомиться, набрав man lolcat. 127 - это код, который zsh отправляет по умолчанию, сохраним это поведение.

Вот так примерно это выглядит:

Ну вот, собственно говоря, и все. Мелкие моменты, которые нас окружают в повседневности, делают нас (по крайней мере меня) чуточку счастливее :)

Теги:
+2
Комментарии2

Что такое Windows Deployment Image Customization Kit? Помимо забавного сокращения windick.cmd, это пакетный (batch) скрипт на примерно 200 КиБ для автоматизированного развёртывания образов Windows. Размер сразу намекает, что собственно файлы Windows в инструмент не входят.

Иногда называемый WDI Customization Kit, это скрипт в первую очередь для системных администраторов и профессиональной техподдержки. Графического интерфейса нет, но пугать целевую аудиторию это не должно, поскольку всё и так интуитивно понятно.

Windick работает как с VHDX (virdual disk image), так и образами Windows в виде файла WIM. Вообще, в скрипт встроены разнообразные инструменты для управления образами Windows. Существующие образы могут быть конвертированы в VHDX.

Package Creator этого скрипта помогает кастомизировать образ, включив нужные изменения в устанавливаемые приложения, компоненты, фукнции и службы. Также возможна автоматическая (unattended) установка Windows.

Инструментов создания ISO в скрипте нет. Исправить сделать это можно добавлением файла install.WIM по окончании процесса кастомизации.

На собственном канале YouTube автор проекта выложил несколько видеоруководств по использованию скрипта.

github.com/joshuacline/windick

Теги:
Рейтинг0
Комментарии0

Вычисление контрольных сумм файлов в Windows

При выполнении резервного копирования файлов желательно сопровождать их сведениями о контрольных суммах. Это позволит впоследствии быстро проверить целостность резервных копий. В отличие от других операционных систем, в Windows почему-то нет удобного встроенного инструмента для вычисления и проверки контрольных сумм. Раньше более-менее официально предлагалось использовать стороннюю утилиту fciv.exe, но в настоящее время эта рекомендация убрана с официального сайта Microsoft. Сейчас наиболее популярным советом является воспользоваться предустановленной утилитой CertUtil, которая умеет вычислять контрольные суммы MD2, MD4, MD5, SHA1, SHA256, SHA384 и SHA512.

Но на практике удобнее использовать утилиту SFK (Swiss File Knife, швейцарский нож для файлов), которая, позволяя кратко записывать и выполнять из командной строки множество других операций, поддерживает работу с контрольными суммами CRC32 и MD5. Например, обработку файлов в папке folder можно произвести так:

> sfk.exe crcgento folder.crc folder
> sfk.exe crccheck folder.crc
> sfk.exe md5gento folder.md5 folder
> sfk.exe md5check folder.md5

Для получения справки можно вызвать программу sfk с указанием команды, но без параметров.

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Заметка про посылку данных по TCP и UDP используя только bash.

Например, вот так можно послать минимальный валидный HTTP GET запрос:

echo -e 'GET /maintenance/start HTTP/1.0\r\n\r\n' > /dev/tcp/127.0.0.1/80

А вот так можно отправить Standart query на Google Public DNS:

echo -e '\x00\x01\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x03www\x06google\x03com\x00\x00\x01\x00\x01' > /dev/udp/8.8.8.8/53

При этом если IP-адрес не существует или не отвечает, то в случае с TCP, bash будет где-то минуту пытаться подключиться (слать SYN-пакеты) прежде чем вернёт ошибку. А в случае с UDP, bash просто пошлёт данные в никуда и не вернёт никакой ошибки.

К сожалению, получить ответ на посланные данные нельзя :(. Но можно прочитать из сокета данные. Например, вот так можно узнать, что нам скажет GitHub.com с SSH порта:

cat < /dev/tcp/github.com/22

Через некоторое время в терминале выведется "SSH-2.0-babeld-077acb5b" и bash продолжит ждать следующие данные, пока сокет не будет закрыт с той стороны.

А вот слушать сокет bash уже не умеет. И вот это жаль, конечно.

Всего голосов 9: ↑9 и ↓0+9
Комментарии0