LINUX.ORG.RU

bash sed awk против perl python или УСТАРЕЛО [родина]

 , , , ,


0

4

Не раз встречал утверждения что мол первые трое ненужно и устарело, и чсх не только в лоробсуждениях но и в некоторых серьезных(вроде) книжках. И все-таки, правда ли что python или perl содержат в себе все названное перед ними, ну т е вопрос состоит в том действительно ли так намного удобнее пользоваться? Мне доставляет писать на bash и я не понимаю зачем может понадобиться python в админстве. Потому что в нем ООП и исключения? И много вам хотелось этого ооп в админских скриптах? Прошу аргументированно убедить что bash и sed достаточно со всем справляются и вовсе не обязательно еще учить всякое со встроенными регэкспами в синтаксис или модненькое с ооп. Спасибо.



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

1 Тащить не надо. Мне не приходилось иметь дело с системой без питона.

2 Зачем мне засирать систему^W память регекспами? Может мне ещё электротехнику надо изучить прежде чем компьютером пользоваться?

3 Если уж вручную, то действительно переводить адрес в число.

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

вспомнил про него и решил ещё раз поковырять...модуль какой-то неполноценный, например метод is_reserved не знает про rfc6598

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

Зачем мне засирать систему^W память регекспами?

ты еще скажи, зачем засирать систему шеллом. А лучше сразу, систему ядром.

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

Не знал про это, да. Да и в википедии написано:

IPv4 addresses are canonically represented in dot-decimal notation, which consists of four decimal numbers, each ranging from 0 to 255, separated by dots, e.g., 172.16.254.1.

is_ipaddr() {
    local byte='([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
    [[ $1 =~ ^($byte\.){1,3}$byte$ ]]
}

Поясни, это какое-то расширение?

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

а что, в баше нужно писать свои кривые реализации библиотек на каждый чих?

Да.

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

Так электротехнику не нужно? И на том спасибо.

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

″\n″ допустимо в имен файла. И непечатные символы, которые не желательно выводить в терминал. Это сложновато?

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

set -u

Даже не знал забыл про его.
И судя по девственному выводу grep 'set -u' -r . не я один.

shellcheck foo.bash

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

Обоснуй.

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

Deleted
()

bash и sed достаточно со всем справляются и вовсе не обязательно еще учить всякое со встроенными регэкспами в синтаксис

Ахахаха. Oh, wow.

AnDoR ★★★★★
()

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

Смотря что делать. Пока ты делаешь простые вещи шелл-скриптов достаточно. Но полноценную программу на нём лучше не писать: нет библиотек, заколебёшься с gui, заколебёшься отлаживать итп. Отпроцессить логи тоже зачастую неудобно из-за леса костылей с этими sed/awk/perl. Если тебе это всё не нужно то используй bash.

Обычно ответить на этот вопрос легко: если ты потратил много времени на простые действия или код превратился в месиво то тебе нужен нормальный ЯП.

зачем может понадобиться python в админстве

Баш очень медленный т.к. многие вещи делаются через вызов внешних команд.

А ещё bash это один из самых стремнейших ЯП. Например, функции не могут возвращать значения (кроме «статус-кода»).

вам хотелось этого ооп в админских скриптах?

Для скриптов вряд ли :).

аргументированно убедить

Ой, не, это ты сам решай. Каждый волен сам губить свою жизнь.

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

Потому что ничего другого не знаю.

Тогда узнай перл или питон, для расширения сознания.

Панический страх засорить память ненужным синтаксисом и функциями

Безосновательные страхи надо преодолевать, а не потакать им.
Какой нах засорить память? Выколи глаза и залей смолу в уши, а то ведь твоя память засоряется тем что ты постоянно видишь и слышишь.

Лично я предпочитаю писать скрипты на python (кроме совсем уж примитивных) просто потому-что он мне удобнее. Были случаи когда я безуспешно пилил какой-то скрипт на баше полчаса, бросал и переписывал на питон за пять минут.
Но для одностроков вроде cat ./log | awk '{ print $2 }' | sort -u | wc -l баш конечно удобнее.

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

Обычно ответить на этот вопрос легко: если ты потратил много времени на простые действия или код превратился в месиво то тебе нужен нормальный ЯП.

Ведро чаю этому господину! Всё правильно сказал.

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

но где его взять?

Чем тебя guile scheme, scsh, tcl и python не устроили?

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

Дак для этого я возьму C++

Ну, а чего тогда спрашиваешь про недо-языки? :)

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

кто назовет мне сходу перловый модуль (без поиска на CPAN) на замену mpg123?

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

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

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

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

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

С таким подходом вместо перла может быть все что угодно.

Для полноценной замены шелла в перле есть `бэктики`, интерполяция, варианты open с пайпами, спец. переменные типа $? и $$. Так что уже не «все что угодно».

Тогда уж брать что-то еще более высокоуровневое, скажем, java.

Насмешил

Только не надо говорить про регепсы, кроме них есть еще масса задач, где они ну никак не сдались.

Однако при использовании «в качестве шелла на стероидах» они весьма полезны, так как выдачу программ часто нужно парсить

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

Ну вот интересует, просто интересует, а как же ;)

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

Прошу аргументированно убедить что bash и sed достаточно со всем справляются и вовсе не обязательно еще учить всякое со встроенными регэкспами в синтаксис или модненькое с ооп.

Меньше знаешь - крепче спишь.

Если начнешь изучать python, а после дорастешь до c++/java/c#/rust, то фактически перестанешь быть админом. И тогда до тебя снизойдет просветление, почему для программера баш так уродлив и неповортлив.

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

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

Если начнешь изучать python, а после дорастешь до c++/java/c#/rust, то фактически перестанешь быть админом. И тогда до тебя снизойдет просветление, почему для программера баш так уродлив и неповортлив.

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

В результате вместо 20 плохочитаемых строчек шелловского пайпа получаем 2000 развесистой нечитаемой клюквы на писуне.

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

И где тут 2000 строчек: Укротить лапшу в bash-скрипте vs Укротить лапшу в bash-скрипте (комментарий)

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

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

У вас между С++ и rust что-то лишнее попало

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

foror ★★★★★
()
14 декабря 2015 г.

awk для однострочника, bash для совсем небольших скриптов строк на десять, питон для больших скриптов. Перл не нужен.

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