LINUX.ORG.RU

Если в баше все так плохо, не пора ли перестать им пользоваться для скриптов?

 ,


5

7

Прочитал на днях вот эту статейку: http://www.dwheeler.com/essays/filenames-in-shell.html. Это просто жесть. Я наверное не видел ни одного баш скрипта, который бы делал все правильно, как там описано. Не легче ли использовать какой-нибудь там питон для этого, а не терпеть внезапные унижения собственным шеллом, когда ты впервые запустишь скрипт на файлах с русскими символами / пробелами / переносами строк / еще какими-нибудь внезапными названиями?

Ответ на: комментарий от iVS

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

пофиг на «Обект класса процесс», но структуру -то классического сишного стиля получать можно по вызову функции? или надо обязательно писать эти кучи грепов и авков чтобы добратьяс до третьей колонки после запятой там где три точки слева?

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

с каких пор баш переполз в «другие системы» из родного linux/unix ?

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

novoxudonoser
()
Ответ на: комментарий от Legioner

ой засрут тебя
а так перл лучше всего в качестве замены bash, т.к. синтаксис похожий, regexp и много всяких модулей

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

Повершелл хорош тем, что он оперирует не текстом, а объектом. По этому, через трубу ты получаешь объект и ними оперируешь.

nikolnik ★★★
()

я и не начинал. хотя знаний хватает чтобы писать что угодно на нём

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

в фрибсд есть прок и эмуляция линукс версии
а так для работы с процессами есть пистон и прочие
а скрипт вида: «проверь, есть ли файл, и если есть скинь мне на почту его содержимое, проговори в слух и станцуй мазурку» проще всего писать на bash

mystery ★★
()

Не легче ли использовать какой-нибудь там питон для этого

У них разная сфера применения.

yvv ★★☆
()

Прочитал на днях вот эту статейку

почитай ещё гет зе фактс какой-нибудь, тебе понравится

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

Больше таких проблем не было: файлы со странными именами, на которых гоняются такие скрипты просто так не появляются.

― Как лечить человека, у которого сломана нога?
― У нас в больнице таких нет, их охрана на входе отстреливает и направляет в морг.

proud_anon ★★★★★
()
Последнее исправление: proud_anon (всего исправлений: 1)
Ответ на: комментарий от mystery

а скрипт вида: «проверь, есть ли файл, и если есть скинь мне на почту его содержимое, проговори в слух и станцуй мазурку» проще всего писать на bash

Так вот, проблема в том, что их крайне неудобно писать на баше. Только на всём остальном их ещё неудобнее писать.

proud_anon ★★★★★
()

Если в баше все так плохо, не пора ли перестать им пользоваться для скриптов?

да

# P.S.: и я очень рад что в Линуксах всё меньше и меньше становится этого баша

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 2)

Поколение пепси, чо... Perl им умер, к башу уже липкие ручонки свои тянут. Чего вам на виндовсе не сидится ? Туда ваш питон тоже ставится.

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

Как алжирские беженцы, валят из африки в европу, и активно превращают европу обратно в африку.

Боюсь, линукс та же участь ждет с такими кадрами.

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

таки ви намекаете, что пользователи shell — фашисты?

Я таки прямо говорю - пользователи shell - белые люди. Остальные - ... хммм ... - а остальные - нет! :-)

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

Можно, конечно, ставить вопрос о том, что лучше: «все есть текст» или «все есть объект». В первом случае важнее то, как обрабатывает текст сам скрипт; во втором — насколько вменяемую структуру имеет вызываемый объект. В первом случае скрипт вызывает любую прогу, будь то хаскель, фортран или другой левый язык; во втором случае — всё должно быть только каноничным ООП или быть приведено к нему. То же относится и к языку самого скрипта (use Perl, Luke!). В первом случае нельзя напрямую программу использовать в коммерческих продуктах, во втором — запросто, а это уже вопрос принципиальный, РМС не одобряет.

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

Баш хорош тем, что он оперирует не объектом, а текстом. Поэтому, через трубы ты получаешь текст и им оперируешь.

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

когда работаешь с башем - ощушение такое что пытаешься из варёных макаронов фундамент построить

shell сделан для обработки потоков текстовых данных и несложной логики. Если хочешь обрабатывать структурированные данные, используй другой язык.

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

Идут на любые извращения, лишь бы не использовать лиспы (newlisp, например).

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

Правильная замена — PowerShell.

Сам то понял, что ляпнул? Виндошелл – убожество, которым приходится пользоваться кое как преодолевая ненависть.

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

Bash - плохой язык, потому что разрешает говнокод, ничего об этом не говорит и просто запускает.

Тогда все языки - плохие, потому что разрешают говнокод

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

Так, и что же будет, если произойдёт ошибка в sendmail? Ничего? Ну, конечно, когда задачу в общем-то неообязательно выполнять, то легко придумать простое решение.

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

Под виндой PowerShell предпочтительней bash и cmd, к тому же из коробки.

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

Ну тогда скрипты ненужны
Надо при включении компа послать мэйл, мол, включился
ставим библиотеки нужные, компилятор, собираем, отлаживаем и пользуемся
Вспоминается MS-DOS, когда вся автоматизация была через qbasic :)

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

На самом деле, проблема баша в том, что в нем нет типов данных. В нем все обрабатывается и выводится как текст (хорошо, что хоть до байтов не додумались). Если до 90х это был достаточно рациональных подход и решал проблем больше, чем создавал, то сейчас все наоборот, в эпоху динамических виртуальных машин с инъекциями кода, жастинтаймкампиллерами и прочим (да, да, я говорю о PowerShell, вы поняли), это как сравнивать счетные палочки и вольфрам математику.

Ну используй GHCi вместо шелла, кто тебе мешает?

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

на других системах /proc-а вполне может и не быть.

Как и PowerShell'а.

Но даже /proc не решает проблему неструктурированности данных.

Серьёзно? Чем оно хуже этих ваших объектов PowerShell?

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

Кстати, кто-нибудь пробовал psh? Юзабельно?

Ты про это? http://gnp.github.io/psh/

Время коммитов глянь. Последний был 3 года назад.

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

с каких пор баш переполз в «другие системы» из родного linux/unix ?

Не знаю, с каких, думаю с 90-х или 80-х.

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

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

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

а скрипт вида: «проверь, есть ли файл, и если есть скинь мне на почту его содержимое, проговори в слух и станцуй мазурку» проще всего писать на bash

А потом начинается — надо проверить содержимое файла, надо проверить, не изменился ли он с последнего вызова, надо отправлять отчёт об ошибке, если файла нет и пошла поехала лапша-лапшичка.

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

Как и PowerShell'а.

Да, это проблема. Надеюсь, после того, как .NET стал свободным, он будет портирован на основные платформы.

Но даже /proc не решает проблему неструктурированности данных.

Серьёзно? Чем оно хуже этих ваших объектов PowerShell?

Да банально хочешь получить аргументы запущенного процесса в виде массива. Тебе надо читать cmdline и парсить его по пробелам. Или по \0. Хочешь посмотреть установленные лимиты? Открывай текстовый файл limits и парси его. Каждой функции по парсеру.

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 1)
Ответ на: комментарий от tailgunner

как то так получается что всё время приходится парсить вывод который обычно структурирован. возникает стойкое ощущение что баш как минимум неудобен.

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

Да банально хочешь получить аргументы запущенного процесса в виде массива. Тебе надо читать cmdline и парсить его по пробелам. Или по \0. Хочешь посмотреть установленные лимиты? Открывай текстовый файл limits и парси его. Каждой функции по парсеру.

И это претензии к _shell_? Вау.

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

Не знаю, с каких, думаю с 90-х или 80-х.

портирование != массовое использование, конкретный пример в студию где баш используется вне *nix

Я про внезапный /proc знаю, скорее всего, куда больше, чем ты, это так, к слову.

что то мне не кажется что человек который действительно знает и знает больше как он говорит (вот только он не знает сколько знаю я, и говорит что всё равно больше хм какая самоуверенность, очень забавно), скажет такое:

Как башеры работают с процессами? Запускают ps и долго и мучительно парсят вывод ps-а как поток байтов.

и повторюсь:

просто саннигилируй

Переход на оскорбления — слив засчитан

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

novoxudonoser
()
Ответ на: комментарий от Legioner

Надеюсь, после того, как .NET стал свободным, он будет портирован на основные платформы.

хвала омниссии, этого небудет, т.к. ненужно, а если и будет то пользоваться будут только такие как ты

novoxudonoser
()

ну так пользуйся. кто мешает?

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

да это так, но разговор то не о серебряной пули, которая решает все проблемы а о linux/unix и якобой неудобности баша для тех задач для которых он предназначен

novoxudonoser
()

Я всё же за bash - он лучше для простых и средних скриптов. Но черт возьми, если скрипт сложный, то гораздо разумнее таки python.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от Legioner

Правильная замена — PowerShell. Надеюсь, с открытием .NET его портируют в юникс и появится нормальное окружение.

просто умри в муках

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Это как из разряда: дырявый презерватив лучше для простых и средних половых актов, но черт возьми, если половой акт групповой - тогда разумнее таки кастрация.

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

Удачи тебе писать сложный скрипт, считай программу уже, на баше. Нормальные герои всегда идут в обход!

I-Love-Microsoft ★★★★★
()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)
Ответ на: комментарий от Legioner

Как и PowerShell'а.

Да, это проблема. Надеюсь, после того, как .NET стал свободным, он будет портирован на основные платформы.

Надеюсь что всех поняш пустят на колбасу для собачек. И ха такие предложения - это ещё милосердно.

Но даже /proc не решает проблему неструктурированности данных.

Серьёзно? Чем оно хуже этих ваших объектов PowerShell?

Да банально хочешь получить аргументы запущенного процесса в виде массива. >Тебе надо читать cmdline и парсить его по пробелам. Или по \0. Хочешь >посмотреть установленные лимиты? Открывай текстовый файл limits и парси его.
Каждой функции по парсеру.

Yea bro! А ты думал в рай попал? Кстате у вас в фиииндооууусЪ вообще жопа :) Вон коллега парился писал чёй то для Эксчейнджа на мошнойщели ..... а потом попытался запустить это на просто DC ;)))) Так вот - тав _ВНЕЗАПНО_ вообще нужных обЪектов не оказалось :))) А чтобы они появились - на DC надо пол Эксчейнджа взгрмоздить :)))

И так у вас во всём, ините в дупу пЫонеры! баш им поперёк, умора :)

Legioner, поняша голубо-розовая, я из чувства милосердия не стал рассказывать продолжение истории - там по ходу начали апгрейд на 2012 и Ex2013 ;))))) Парня мощнощелеписателя практически из петли вынули :)))))

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