LINUX.ORG.RU

Ищу удобную альтернативу Bash

 , ,


1

3

Навеяно недавними новостями.

Собственно, я ищу примитивный, башеподобный язык для написания скриптов вида: выполнить n команд с парой условий.

Bash и его производные настолько ужасны, что тут даже обсуждать нечего. Легаси в 3-м поколении.

Python слишком многословен, особенно для запуска процессов и работы с путями. Возможно есть врапперы, но я сходу ничего не нагуглил. А это самые типовые задачи. Примеры:

# запуск процесса
run(['ls', '-l'])
# получение расширения файла
splitext("text.txt")[1][1:]
# конкатенация путей
join('/home', 'user')
И это с реэкспортом функций, что не канон.

Fish выглядит самым адекватным решением, но работа с переменными просто ужасна. Например создание списка: set -l mylist 1 2 3. Или инкремент счётчика set i (math "$i + 1"). Зато условия пофиксили.

Поэтому ищу или удобный скриптовый язык или либы для питона.

PS: Ещё интересно было бы услышать что в Bash у вас вызывает самую сильную боль. Я бы, например, не отказался бы от встроенной фичи для проверки существования субкоманд, типа require grep

★★★★★

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

O'RLY?

Сделай мне вот это в баш:

Invoke-RestMethod -Uri https://www.linux.org.ru/section-rss.jsp?section=1 | Format-Table -Property title, author, pubDate

Ref: Invoke-RestMethod, Format-Table

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

Условие чтобы работа с REST API была вшито в сам шелл - есть?

Если нет, тогда читерим и юзаем curl

цикл и printf для форматирования вывода - по вкусу(Autosize нет, это да). Можно и в однострочник если прям надо совсем сократить...

Объектный подход Powershell забавен ровно до тех пор, пока ты не понимаешь, что ForEach-Object ведет себя внутри методов в отношении возвращаемых значений вовсе не так как обычный ForEach и еще более не так, как простой For :-)

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

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

Зачем мне restapi в шелле?! Очередной комбайн от некрософта.

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

цикл и printf для форматирования вывода - по вкусу(Autosize нет, это да). Можно и в однострочник если прям надо совсем сократить...

Можно вообще извратиться и написать свой преобразователь JSON в таблицу. Тогда и Autosize будет :)

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

А bash тут вообще причём? Может тебе API к чему угодно завтра в голову взбредёт, и чо? Ты свои порядки маздайные сюда не приноси. Тут unix-way вообще-то и oldschool. Пацаны бородатые. Вали со своим PS-ом в ту дыру, откуда пришёл.

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

Если нет, тогда читерим и юзаем curl

цикл и printf для форматирования вывода - по вкусу(Autosize нет, это да). Можно и в однострочник если прям надо совсем сократить...

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

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

полученные данные нужно предварительно рассортировать

берешь xmlstarlet, если не хватит ruby + nokogiri, или чем-нибудь подобнымi; не вижу чем встроенный костыль лучше

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

Сделай мне вот это в баш:

Invoke-RestMethod -Uri https://www.linux.org.ru/section-rss.jsp?section=1 | Format-Table -Property title, author, pubDate

Ref: Invoke-RestMethod, Format-Table

круто, а теперь забацай так же просто это в виде HTML-таблицы, такие батарейки есть?

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

Парсить бинариком структурированные форматы в текст, чтобы потом заново парсить уже этот текст. Башисты такие затейники.

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

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

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