LINUX.ORG.RU

Границы функциональности bash.


0

1

Как языка программирования. Встал выбор между питоном и башем. В конце концов, питон тоже скриптовый язык. И кто сказал, что он быстрее шелла? В баше идет работа непосредственно с командами Линукс - это просто и удобно. Можно даже написать простой http-сервер. Безусловно, питон мощнее в плане функциональности. Но на что способен баш?



Последнее исправление: PymOxim (всего исправлений: 1)

Баш стартует быстрее и удобнее сделан вызов внешних команд и перенаправление потоков.

Если бы не эти два факта, то писал абсолютно всё на питоне.

baverman ★★★
()

>Встал выбор между топором и ножом. В конце концов, нож тоже железный и острый. И кто сказал, что он удобней топора? Нож можно засунуть в ножны и прицепить на пояс - это просто и удобно. Можно даже рубить им небольшие ветки. Безусловно, топор больше и мощнее. Но на что способен нож?

Аналогия ясна? Это разные инструменты, с разной областью применения.

strangeman ★★★★
()
Ответ на: комментарий от strangeman

Это разные инструменты, с разной областью применения.

Интересно услышать про недоступные питону области применения баша.

baverman ★★★
()
Ответ на: комментарий от baverman

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

strangeman ★★★★
()

Мне нужно непосредственное взаимодействие с системой. Выполнение уже известных команд. Больше для чего-то автоматизированного, чем для полноценных программ. Которые на питоне все равно не получаться, в силу его некомпилируемости. А написание http, ftp серверов, так их, вон, куча. Зачем изобретать велосипед. Лучше сконцентрироваться на чем-то более необходимом.

PymOxim
() автор топика
Ответ на: комментарий от baverman

> Интересно услышать про недоступные питону области применения баша.

init-скрипты в initramfs/initrd/embedded ;)

arsi ★★★★★
()
Ответ на: комментарий от arsi

init-скрипты

Ну принципиальных же трудностей нет, кроме ограниченных ресурсов?

Более того, модные парни из редхата говорят, что bash это тоже слишком жирно — давай C!

baverman ★★★
()
Ответ на: комментарий от ananas

> glue language
Я так понял. Основные элементы управления данными, как циклы, условия... и команды Линукс.

PymOxim
() автор топика

баш написан для админов для меня баш идеален.

alikhantara
()

Чем сложнее программа, тем меньше причин писать её на баше. «Нормальный язык» это, в принципе, любой, который знаешь, из тех, что имеют нормальную систему типов, нормальные языковые конструкции без вызова внешних костылей и т.д. Питон, руби, и др. Хоть C, но это уже если очень хочется.

Баш это на каждый чих внешняя утилита, даже на управляющие конструкции, сложности с типами данных, читабельностью и т.д. Т.е. если прога простая запустить пару команд через пайп и т.д., то да, удобно, а если тяжёлое —не особенно.

Mystra_x64

mono ★★★★★
()
Ответ на: комментарий от mono

Ну да, баш - это автоматизированное управление командами Линукс, не более.

PymOxim
() автор топика

В среде Линукс, баш+питон в помощь админам. В основном на баше, то, что нельзя сделать - на питоне.

PymOxim
() автор топика

bash (и любой шелл) не умеет работать с более-менее сложными структурами данных, но в нем гораздо удобнее организовывать несложные конвейеры.

tailgunner ★★★★★
()

Если возникает такой вопрос, самое время смотреть на тикль.

Miguel ★★★★★
()
Ответ на: комментарий от baverman

>Интересно услышать про недоступные питону области применения баша. python не входит в busybox, а ещё у него стандартная библиотека слишком большая.

anonymous
()
Ответ на: комментарий от PymOxim

>> не умеет работать с более-менее сложными структурами данных

А питон?


К питону есть куча ORM.

Donnie_Darko
()
Ответ на: комментарий от PymOxim

А питон?


а питон умеет, а ещё есть lua.

anonymous
()

Bash вроде как обладает тьюринговской полнотой, поэтому чисто теоретически на нем можно написать что угодно. Другой вопрос — насколько это удобно на нем написать. «Правило левой руки» в данном случае примитивно простое: если о задаче удобнее думать как о конвейре вызовов стандартных утилит, то bash однозначно подходит лучше. Если же иначе как сложными объектами, ветвящимися связями и нестандартной логикой (в смысле — не являющейся линейной комбинацией логик стандартных утилит) не получается, то bash подходит плохо.

С практической стороны... качалку файлов с рапидшара на баше набросать было заметно проще, чем на чем-либо еще (sed и wget на самом деле, но это и так понятно). А вот менеджер файлов для плеера (чтобы копировалось на него в алфавитном порядке и только так) уже на баше было писать весьма неудобно (особенно подобие пользовательского интерфейса и взаимодействие с hal).

Резюмируя, универсального решения не существует, так что, как заметил strangeman, лучше пользоваться и топором и ножом в располагающих к этому ситуациях, а не пилить деревья ножом и не рубить колбасу топором.

livid
()

Пытался написать обёртки к питону чтобы было легко строить конвееры как в баш. Гемор ещё тот, всех фич не перенесёшь, в итоге я забил. Есть несколько мёртвых проектов на эту же тему :).

В общем, для скриптинга чистый питон не подходит.

true_admin ★★★★★
()

Я следую правилу, если скрипт на баше получается длиннее одной строки, то пишу его на питоне. А в одну строку баша впихнуть конвеером можно много. Питон начинает рулить там, где конвеер не катит, например надо обработать два и более входящих потока одновременно и по некоторым признакам сопоставить данные из них.

Yur4eg ★★
()

Вопрос сформулирован слишком абстрактно. Постарайтесь его переформулировать так, чтобы я смог ответить «нафик bash, тут без вариантов подойдёт только zsh»

zolden ★★★★★
()

Баш - это жалкий обрубок, а не язык. Ему место только в интерактивной консоли. Смотри в сторону Tcl, как тут уже советовали.

anonymous
()

Из баша всегда можно вызвать питон)

Yareg ★★★
()
Ответ на: комментарий от PymOxim

>> не умеет работать с более-менее сложными структурами данных

А питон?

Прекрасно умеет.

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.