Карл Олбинг, Джей Пи Фоссен. Идиомы bash. (Мощные, гибкие и понятные сценарии командной оболочки)

Обсуждение различной литературы о Linux

Модератор: Модераторы разделов

Аватара пользователя
Zer0
Сообщения: 479
ОС: Void, Slackware

Карл Олбинг, Джей Пи Фоссен. Идиомы bash.

Сообщение Zer0 »

Вышла книга Карла Олбинга и Джея Пи Фоссена, Идиомы bash. ISBN 978-5-4461-2307-0.

В ней рассмотрены все основные конструкции языка, такие как написание циклов, разработка функций, отладка скриптов и даже создание простого интерактивного меню.
Приведены рекомендации по созданию хорошего стиля написания кода и множество других полезных фишек, вроде примеров "как не надо делать" и ссылок на интересные ресурсы, например на такой инструмент, как https://www.shellcheck.net.

Помогает в разборе чужих скриптов и написании своих так, чтобы потом не икалось, когда их будет пытаться понять кто-то, кроме Вас :D
Memento mori ... сделай бэкап.
Спасибо сказали:
Аватара пользователя
chitatel
Сообщения: 2063

Re: Карл Олбинг, Джей Пи Фоссен. Идиомы bash.

Сообщение chitatel »

Прочитал 95 стр., и тут до меня дошло, что эту книгу можно назвать просто "Bash-измы".
Спасибо сказали:
Аватара пользователя
algri14
Сообщения: 1369
ОС: Mageia 5.1 & 8 x86_64, KDE

Re: Карл Олбинг, Джей Пи Фоссен. Идиомы bash.

Сообщение algri14 »

Zer0 писал:
07.04.2023 20:43
Вышла книга Карла Олбинга и Джея Пи Фоссена, Идиомы bash. ISBN 978-5-4461-2307-0.
Издательский дом «Питер» продаёт бумажную книгу и (+ pdf, epub) по цене 999р, электронную (+ pdf, epub) за 599р.
Скачал бесплатно с сайта Техническая литература (htbook.ru) , формат pdf или djvu

надо бы почитать, но возьмусь ли? в смысле найду время и главное настроение :(

Дополнено:
походил по инету и узнал, что подобные книги можно купить на некоторых сайтах в складчину
Спасибо сказали:
Аватара пользователя
UnixNoob
Сообщения: 1380
ОС: Slackware

Re: Карл Олбинг, Джей Пи Фоссен. Идиомы bash.

Сообщение UnixNoob »

Zer0 писал:
07.04.2023 20:43
Приведены рекомендации по созданию хорошего стиля написания кода и множество других полезных фишек, вроде примеров "как не надо делать" и ссылок на интересные ресурсы, например на такой инструмент, как https://www.shellcheck.net.
Меня смущает что, в описываемом виде, скрипты становятся слабо переносимыми. Используется bash v.4+, хоть сейчас уже 5й актуален. Я думал есть какой транспилятор скриптов, для работы в старых версиях или Posix, но не нашел такого.
Добавлено (19:55):
algri14
С хабра по промокоду bash скидка 25%
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
Спасибо сказали:
Аватара пользователя
chitatel
Сообщения: 2063

Re: Карл Олбинг, Джей Пи Фоссен. Идиомы bash.

Сообщение chitatel »

algri14 писал:
25.05.2023 18:26
Скачал бесплатно с сайта Техническая литература (htbook.ru) , формат pdf или djvu
Эта книга доступна везде, скоро из умных вещей полезет такими темпами.

Для меня, как человека с знаниями баша, стремящимися к 0, книга полезная.
Спасибо сказали:
Аватара пользователя
Red Gremlin
Сообщения: 506
Статус: самоучка
ОС: Rosa 2016 Fresh

Re: Карл Олбинг, Джей Пи Фоссен. Идиомы bash.

Сообщение Red Gremlin »

UnixNoob писал:
25.05.2023 19:53
Меня смущает что, в описываемом виде, скрипты становятся слабо переносимыми.
Почти любой скрипт сложнее хелловорлда не будет переносим. Потому что будет вызывать внешние утилиты. Которые в разных системах либо просто разные, либо имеют разные наборы опций. Оглядываться на переносимость имеет смысл ровно в одном случае — если этот скрипт делается в рамках трудовых обязанностей и его переносимость прописана в ТЗ.
"В мире есть случайность, есть предопределенность и есть то, что ты планируешь совершить."
Спасибо сказали:
Аватара пользователя
chitatel
Сообщения: 2063

Re: Карл Олбинг, Джей Пи Фоссен. Идиомы bash.

Сообщение chitatel »

Дык собственно сами авторы пишут, что такие-то "идиомы" не работают в других оболочках или даже других версиях баша. Напр., стр. 97:
# Не работает в Zsh 5.4.2!
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Карл Олбинг, Джей Пи Фоссен. Идиомы bash.

Сообщение Bizdelnick »

Red Gremlin писал:
26.05.2023 12:11
Почти любой скрипт сложнее хелловорлда не будет переносим. Потому что будет вызывать внешние утилиты. Которые в разных системах либо просто разные, либо имеют разные наборы опций.
Ну всё же есть стандарт, и если использовать только описанные в нём утилиты и опции, переносимость будет довольно высокой (если нет необходимости поддерживать допотопные ОС).
Red Gremlin писал:
26.05.2023 12:11
Оглядываться на переносимость имеет смысл ровно в одном случае — если этот скрипт делается в рамках трудовых обязанностей и его переносимость прописана в ТЗ.
А если в рамках хобби-проекта, который хочется сделать максимально переносимым? Или просто в учебных целях, чтобы понять, как это можно сделать?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Red Gremlin
Сообщения: 506
Статус: самоучка
ОС: Rosa 2016 Fresh

Re: Карл Олбинг, Джей Пи Фоссен. Идиомы bash.

Сообщение Red Gremlin »

Bizdelnick писал:
26.05.2023 15:51
Ну всё же есть стандарт
Это "стандарт" де-факто мёртв, и довольно давно. Несмотря на наличие версии от целого 2017 года, на деле это всё тот же POSIX 2008, только с исправлением ашибок, опечаотк, улучшением описаний и добавлением пояснений. Который, в свою очередь, недалеко ушёл от версии 2004го года. Ну, то есть, для соответствия этому "стандарту" надо отказаться от всего хорошего, что появилось за последние 20 лет. Ну и главное — одно из основных применений shell-скриптов — автоматизация административных задач, которые в значительной части не переносимы по причине системо-зависимости. В линуксе нет jail, в FreeBSD нет SMF, в солярисе нет LVM. Но в большинстве линуксов в дефолтной установке есть баш, в MacOS в дефолтной установке есть баш, в Солярисе в дефолтной установке есть баш. Во многих других системах он доступен для установки, даже если не входит в дефолтную установку. Хочется переносимости — пиши на баше. Это даёт уровень переносимости не сильно хуже POSIX shell, но намного проще и приятнее.
"В мире есть случайность, есть предопределенность и есть то, что ты планируешь совершить."
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Карл Олбинг, Джей Пи Фоссен. Идиомы bash.

Сообщение Bizdelnick »

Red Gremlin писал:
31.05.2023 11:37
Это "стандарт" де-факто мёртв, и довольно давно.
Этому стандарту соответствует большинство реализаций. Для обеспечения переносимости большего не нужно.
Red Gremlin писал:
31.05.2023 11:37
для соответствия этому "стандарту" надо отказаться от всего хорошего, что появилось за последние 20 лет.
А 20 лет назад что, ничего «сложнее хелловорлда» не писали?
Red Gremlin писал:
31.05.2023 11:37
Ну и главное — одно из основных применений shell-скриптов — автоматизация административных задач, которые в значительной части не переносимы по причине системо-зависимости.
Одно, но не единственное. Есть среди них как минимум одно, где шеллу нет альтернативы: написание максимально переносимого как между ОС, так и между аппаратными платформами кода.
Red Gremlin писал:
31.05.2023 11:37
Но в большинстве линуксов в дефолтной установке есть баш, в MacOS в дефолтной установке есть баш, в Солярисе в дефолтной установке есть баш.
А в FreeBSD — нет. И насчёт «большинства линуксов» — спорно, в минимальной базовой системе его зачастую нет (точно есть в редхатообразных, но не в дебианообразных и не в alpine). В макоси дефолтный баш древней версии, насколько я помню. Насчёт соляриса не уверен: к счастью, давно с ним не имел дела. Помню, что дефолтный шелл в нём сменили на ksh93 только в 11 версии, и вообще писать под него скрипты — исключительная боль. Тот случай, когда на стандарт нельзя полагаться, ни актуальный, ни какой-то старой версии. Там даже sed убогий.
Red Gremlin писал:
31.05.2023 11:37
Во многих других системах он доступен для установки, даже если не входит в дефолтную установку. Хочется переносимости — пиши на баше.
Не всегда есть возможность что-то установить. Иногда надо дать юзеру скрипт, который гарантированно будет у него работать без дополнительных телодвижений. А когда такая возможность есть — на фига вообще shell/bash? Существует куча куда более приятных языков.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали: