LINUX.ORG.RU
ФорумTalks

PHP вместо Bash, отговорите

 , , ,


1

3

Иногда хочется полноценного скриптования. О проблемах шеллов в линуксах я уже писал. Я долго искал, на что можно заменить Bash. Питон оказался слишком жирным. Perl оказался слишком древнее говно. Не на сишке же скрипты писать, да?

Внезапно, PHP оказался здесь как нельзя кстати. Язык - чистейшая скриптуха, но имеет всё нужное (массивы, строки, функции, можно вызывать внешние бинарники, есть интеграция с curl). Скрипты можно выполнять в терминале. И, внезапно, пых оказался не таким уж и жирным. Проверено кучей говноЦМСок! Нет, ну правда, PHP способен перемалывать тонны говнокода, не втаптывая оперативку в асфальт.

Теперь и правда думаю выбрать его для повседневной скриптухи. Дискасс.

Слишком толсто.

fornlr ★★★★★
()

Никого не читал, но отмечу. 1. Не забудьте, всё таки php имеет сложный менеджер памяти, то есть он и памяти много ест и ресурсы на обработку переменных тратит хорошо, пример _ttps://onlinephp.io/c/353b8 Пых сложен в отладке. Формально мультипоточность есть, но вот по факту такое себе. Но с другой стороны это хороший язык, в том числе и для скриптов. Однако, некоторые пишут системные скрипты на fpc, так как мультипоточность проще сделать (через timer), редактор, отладка, натив.

azsx
()
Ответ на: комментарий от ggrn

жирный как поезд посажирный

Не знаю что ребята имели ввиду (импорт библиотек?), но по скорости питон медленнее. Вот только важно ли это для консольных скриптов.

Gedweb
()

в похапэ нет network redirect.

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

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

azsx
()
Ответ на: комментарий от Gedweb

Учитывай что питон из коробки есть везде, зачем придумывать велосипед?

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

Вместо того, чтобы продвигать инженерную культуру, перекладываешь ответственность, и зная, что делаешь муть, продолжаешь так делать. Ну и кто ты после этого?

untitl3d
()
Ответ на: комментарий от Psilocybe

Чем предлагаешь заменить питон? Си дистростроители не осиливают, потому что им обычно 15 лет, а обратно в sh они не хотят. Сами не знают почему, знают только что не хотят.

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

ты тут тоже не прав, люди не обладают самосознанием что они делают фигню.

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

а я пишу как умею. умел бы лучше — писал бы лучше. никто мне не может помешать писать код, я могу только учиться чтобы стать лучше.

Spoofing ★★★★★
()

Не на сишке же скрипты писать, да?

PHP оказался здесь как нельзя кстати массивы, строки, функции, можно вызывать внешние бинарники есть интеграция с curl

Чем это отличается от скриптов на сишке?

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

Опять какие-то люди, мир вокруг, регуляторы. Есть ты, думай за себя, а не за них. Хотя, чего я хочу от человека, который заглавную букву в начале предложения поставить не в состоянии.

untitl3d
()

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

Для простых админских задач лучше всего подходит bash. Простые задачи - это примерно до 500 строк. Админские - это то, можно выполнить к командной строке, а задача скрипта - автоматизация.

Задачи в которых bash не хватает - python. Это там где сложный парсинг файлов (сложнее grep/sed/awk/jq), структуры данных сложнее массива, работа с http, особенная обработка ошибок и т. п.

Нужна новая тула - бери свой любимый компилируемый язык.

sh не нужен, кроме тех случаев когда ты точно знаешь, что будешь запускать скрипт на платформе, где нет bash. Хватит бездумно повторять мантру про POSIX.

Python жирный разве что для микроконтроллеров. В остальном это отличный инструмент.

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

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

О проблемах шеллов в линуксах я уже писал

Можешь не читать всё что ниже, но обязательно прочитай вот это: https://www.opennet.ru/docs/RUS/bash_scripting_guide/abs-guide-flat.tar.gz

нет вменяемой обработки ошибок по дефолту

При синтаксической ошибке скрипт прервётся. Для скриптов этого достаточно.

Завершение внешней команды с ненулевым кодом возврата может являться частью логики скрипта. И у тебя есть удобные конструкции для работы с этим. Особенно полезно при grep.

Если ненулевой код возврата является ошибкой с точки зрения логики скрипта, есть set -e.

Есть более сложное, но оно нужно в очень редких случаях. https://intoli.com/blog/exit-on-errors-in-bash-scripts/

echo $foo
# test test1 test2
echo "$foo"
# test   test1   test2```

Это ж принципиально разные сценарии предназначенные для разных целей.

Вопрос на засыпку: сколько аргументов у первой команды и у второй команды?

Да, и сколько аргументов у команды ls *.txt?

И что ты пытаешься сделать второй командой? Может тебе нужно это: https://stackoverflow.com/a/12769104/9646805?

Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 2)
Ответ на: комментарий от ggrn

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

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

sh не нужен

Тебе не нужен. Далеко не везде есть bash и далеко не везде он нужен.

Python отличный инструмент

Очень хорошо когда у тебя 3 версии этого питона в системе, несовместимые между собой и с каждым новым годом их будет на 1 больше.

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

Чего это 3 версии? По умолчанию используется системная версия, в ubuntu 20.04/debian11 - 3.8, arch - 3.10. Хочешь другие версии? Ставь pyenv.

Стоп, а разве у php есть совместимость м-у 5 и 7 версией?

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

Чем это отличается от скриптов на сишке?

Управлением памятью. В сриптухе всё же память должна быть на автомате.

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

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

untitl3d
()
Ответ на: комментарий от Psilocybe

В скриптухе на си malloc не нужен, все можно на стеке делать.

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

Далеко не везде есть bash и далеко не везде он нужен.

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

Не важно что есть везде, важно что есть там, где ты решаешь конкретную задачу.

Очень хорошо когда у тебя 3 версии этого питона в системе, несовместимые между собой и с каждым новым годом их будет на 1 больше.

Python 2.0 был выпущен в 2000 году и объявлен устаревшим в 2020. 10 лет. На век твоего скрипта точно хватит.

Выбери последнюю, которая доступна на твоих хостах, и используй её.

Kroz ★★★★★
()

Не занимайся наркоманией - попробуй Рубин!

paran0id ★★★★★
()

Питон оказался слишком жирным.
Perl оказался слишком древнее говно

1. Конечно, зачем школьное OO на месте скриптов.

2. Очень смело называть др. г. что-либо на замену bash, но самая древняя часть Perl - императивная хрень + приколы типа

 print <<EOF; 
просто созданы для тебя.

PS. Несмотря на опыт написания интернет-магазинов в 1999 году на Perl, я его больше никогда не буду использовать.

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

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

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

Фанбойчик bash? sh тащем-та давно не существует, даже его замены ash давно нет. Новые форки, которые сейчас выдают за sh вполне юзабельны и не от адептов гнутой швабодки.

То-то я смотрю почти во всех линуксах по несколько версий питона. Выбирают, выбрать не могут.

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

и почему каждый год? С 3.5 до 3.10 изменения минимальны, и очень я сомневаюсь, что ты с этим сталкивался в простых скриптах.

То-то я смотрю почти во всех линуксах по несколько версий питона. Выбирают, выбрать не могут.

Ну покажи уже где такое есть?

ggrn ★★★★★
()
Последнее исправление: ggrn (всего исправлений: 2)
Ответ на: комментарий от Spoofing

никто мне не может помешать писать код

/me ковыряет ножичком в зубах и нехорошо улыбается

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

Почитал тред. Удивительно, насколько много любителей PHP нынче на форуме.

Аналогично. С другой стороны, тут и любителей питона с жаваскриптом – как мух в сортире. «Любит наш народ всякое говно» (с).

pr849
()
Ответ на: комментарий от firkax

Везде есть sh а не bash.

ORLY ?

/bin/sh --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin21)
Copyright (C) 2007 Free Software Foundation, Inc.

/bin/sh --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin19)
Copyright (C) 2007 Free Software Foundation, Inc.

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

пишут системные скрипты

так как мультипоточность

мда

firkax ★★★★★
()

Php вариант неплохой, но perl конкретно для скриптов намного удобнее. Пользоваться регекспами, что-то парсить им одно удовольствие. Работа с файлами тоже удобна. С точки зрения древности, php не намного моложе вообще-то:) И да, на перл прекрасно крутятся парсеры, обрабатывающие сотни гигабайт всяких логов провайдеров, платёжных систем и тд - и никаких проблем с этим нет. С точки зрения надёжности перл в этом смысле будет где-то там же, где java.

ixrws ★★★
()

Теперь и правда думаю выбрать его для повседневной скриптухи.

Я тоже выбрал, не заменой баш, но часто юзаю, где то 50/50.

caoutchouckcha
()
Ответ на: комментарий от azsx

php имеет сложный менеджер памяти, то есть он и памяти много ест и ресурсы на обработку переменных тратит хорошо

Пых сложен в отладке.

Формально мультипоточность есть, но вот по факту такое себе.

Надо понимать, в bash с этим лучше? Пните почитать тогда, особенно по 3 пункту. Напомню, спуфинг заменял именно баш.

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

Хочешь другие версии? Ставь pyenv.

Отличная замена шеллу, чо. Вот беда с этими питонорубями как раз в том, что никто не знает для какой версии скриптописатель накопипастит код. А ещё ведь могут быть нескучные зависимости. Короче, гемор юзеру обеспечен.

bread
()

По сабжу: только перл, остальное ересь. И то, всегда стоит подумать, а нельзя ли обойтись чистым sh. Это если предполагаются какие-то пользователи. Хотя через n лет и сам станешь таким же пользователем, которому совершенно не хочется разбираться почему скрипты отвалились.

bread
()
Ответ на: комментарий от Gedweb

ну и как выглядит аналог

>>> import datetime
>>> help(datetime)

дай угадаю

g php datetime class в строке браузера?

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

Python 2.0 был выпущен в 2000 году и объявлен устаревшим в 2020. 10 лет.

у вас калькулятор поломался

На век твоего скрипта точно хватит.

Нет ничего более долгоживущего, чем временное.

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

на перл прекрасно крутятся парсеры, обрабатывающие сотни гигабайт всяких логов провайдеров, платёжных систем и тд - и никаких проблем с этим нет.

То что они крутятся на перле, не означает что проблем нет.

anc ★★★★★
()

Вам тут уже предлагали обратить внимание на Tcl. Попробуйте его. Возможно, понравится.

czan
()
Ответ на: комментарий от bread

Системный питон в современных дистрибутивах один. Разницы м-у 3.6-3.10 практически нет. Причем тут зависимости? Чего тебе нехватает в стандартной библиотеке, для скриптов таких же как и баш?

ggrn ★★★★★
()

Если для своего личного использования — бери все, что хочешь. Эта детская аргументация, что питон есть везде или баш есть везде или сш есть ПРЯМО ВЕЗДЕ — кого это волнует, если ты пишешь автоматизацию для себя?

ЗЫ пишу однострочники на баше (точнее zsh), все остальное на эрланге.

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

Не, ну просто вдруг у кого-то есть предложения лучше. Я про это.

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

только перл

Ну не, к нему вообще не хочу притрагиваться

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