Архив метки: bash

Открыл для себя bzexe

Сабж. Чисто случайно заметил в консоли такую команду (есть в штатной поставке bzip2), открыл ман, и…

rain@walkbook:/tmp$ cp /bin/bash .
rain@walkbook:/tmp$ bzexe bash
bash: 2.179:1, 3.671 bits/byte, 54.11% saved, 1099016 in, 504377 out.
rain@walkbook:/tmp$ ls -la /bin/bash bash
bash bash~
rain@walkbook:/tmp$ ls -la /bin/bash bash
-rwxr-x— 1 rain rain 505031 ноя 29 21:58 bash
-rwxr-xr-x 1 root root 1099016 май 15 2017 /bin/bash
rain@walkbook:/tmp$ ./bash
rain@walkbook:/tmp$ file bash
bash: POSIX shell script executable (binary data)

Вполовину меньшего размера бинарник, который можно выполнять ценой потери скорости запуска :). Обычный шелл-скрипт+архив в стиле, например, установщиков дров для Nvidia/AMD.

Взял на заметку.

Команда 404

По мотивам треда на ЛОРе. Оказывается, есть встроенная функция, вызываемая, если шелл не находит команду – которую, в принципе, можно переопределить:

rain@walkbook:~$ cmd
bash: cmd: команда не найдена
rain@walkbook:~$ command_not_found_handle() { echo 404; }
rain@walkbook:~$ cmd
404

Не знал. Не забываем, кстати, про коды выхода. Если штатно в такой ситуации код выхода != 0, то в примере выше функция завершится со вполне корректным статусом. Т.е., надо что-то вроде command_not_found_handle() { echo 404; exit 1; }