lovely-beautiful-seashells-garry-gay.jpg295 Кб, 900x599
Альтернативные шеллы Linux: Firefox based 2570984 В конец треда | Веб
Приглашаю всех анонов обсудить опыт использования альтернативных шеллов. Не просто dash/ksh/zsh, а радикальных монстров, предлагающих свои синтаксис, философию и печеньки.

Маленькая предыстория. На днях меня сильно расстроил awk. В зависимости от имплементации он вёл себя по разному. Один и тот же скрипт на разных машинах давал разные результаты. Вроде мелочь, но я убил на это 6 часов. Потом я вспомнил, что разные имплементации grep парсят регулярки по разному, и приуныл окончательно. Шелл уже никогда не будет прежним. В сердцах я сел и решил пересмотреть всё, что человечество предлагает под лозунгом "bash устрел, вот вам достойная замена!!1".

Сам я успешно живу на zsh, но в этом ИТТ треде я буду стартельно перебирать различные альтернативно одарённые шеллы: от безобидного fish до маргинального rash. Я прекрасно понимаю, что Вселенная всё равно поставит меня раком и буду дальше писать костыли на sh, но так охота прикоснуться к высокому.

Велкам.
Linux: Firefox based 2 2571010
Итак список который я составил.

Рубрика первая: "Мы просто докостылим текущий баш синтаксическим сахаром и всем будет хорошо".
- fish https://fishshell.com/ - всем известная оболочка, которая позиционируется себя как zsh изкоробки и которая забила на обратную совместимость с башем. Написана на крестах. Существует с 2005 года.
- elvish https://elv.sh/ - шелл написанный на Go, предлагает свой синтаксис, расширяется модулями. Развивается c 2014 года.
- osh/oilshell https://www.oilshell.org/ - хитрый шелл, написанный на питоне, но предлагающий сразу два языка: osh, oil. Первый опирается на столпы баша. Последний хоть и придуман, но ещё не рализован, лол. Разрабатывается c 2016.
- murex https://github.com/lmorg/murex - шелл на Go, который фокусируется на предсказуемости, юзабилити и однострочниках. Разрабатывается с 2018.
- oh https://github.com/michaelmacinnis/oh - ещё один шелл на Go, которому чуть больше года.
- es https://wryun.github.io/es-shell/ - свободная реализация rc, оболочки из plan9. Разрабатывается с перебоями аж с 93.
Linux: Firefox based 3 2571019
Рубрика вторая: "Мы просто возьмём популярный ЯП и слепим из него шелл".

- ipython https://ipython.org/ - интерактивная строка питона, сейчас ударилась в вебверсию, машинлёрнеров, датасетинтистов и прочий хайп, но всё ещё актуальна. Разрабатывается с 2001 года.
- xonsh https://xon.sh/ - ещё одна интерактивная строка питона, на этот раз с фокусом в консольку. Разрабатывается с 2015.
- rush https://github.com/s-mage/rush/wiki - шелл на ruby. Разрабатывается с 2008.
- pash http://pash.sourceforge.net/ - реализация всем известного powershell. Разрабатывается с 2008, и почсле 2013 ничего не слышно.
Linux: Firefox based 4 2571024
Рубрика третья: "Мы просто возьмём менее популярный ЯП со скобочками".

Несколько шеллов основываются на различных лиспопотомках. На удивление они выглядят самими здоровыми и вменяемыми, при том снабжаются детальнейшей документацией.
- scsh https://scsh.net/ - scheme (2001-2006)
- closh https://github.com/dundalek/closh - clojure
- ammonite-shell http://ammonite.io/ - scala
- rash https://docs.racket-lang.org/rash/index.html - racket
Windows 10: Chromium based 5 2571134
ОП, у тебя, случайно, нет своего блога или чего-то в этом духе по подобным вещам, не только про шеллы, а вообще? Быть может есть что посоветовать? Был бы премного благодарен.
Windows 10: Chromium based 6 2571135
>>570984 (OP)
Адресация оторвалась.
Я - это он >>571134 - это я
Linux: Chromium based 7 2571215
>>570984 (OP)
Разве gawk не универсален? Не вижу смысла использовать ничего, кроме bash, возможно dash, для обычных шел-скриптов, без башизмов.
изображение.png44 Кб, 456x531
Linux: Firefox based 8 2571228
>>571215
Да, gawk универсален, но никто не гарантирует, что стоять будет именно он. На минимальном дебиане стоит mawk и он напрочь игнорирует директиву nextfile.
Подробности: https://stackoverflow.com/questions/36346222/awk-skip-to-next-file
То есть либо ты проверяешь наличие бинарника, либо начинаешь изучать особенности всех реализаций awk, чтобы не обосраться. В любом случае - боль, костыли и экзистенциальный кризис.
изображение.png1,4 Мб, 1000x1507
Linux: Firefox based 9 2571233
>>571215
> Не вижу смысла использовать ничего, кроме bash

Да. Я ведь об этом напрямую написал. В прод я ничего кроме posix sh не выведу. Просто академический интерес.
Хотя тот же бидон активно используют в скриптовании, авось и сделаю какие-нибудь выводы.
Linux: Firefox based 10 2571243
>>571134
Для блога нужна систематизированная информация, а я до этой стадии редко дохожу.
С другой стороны, жжшечка одного анона про nixos прижилась же. Потому и решил этот вялотекущий тред завести.

> по подобным вещам, не только про шеллы, а вообще

Учитывая, что на сегодня я только список составил, пройдись по авсом-листам:
https://github.com/alebcay/awesome-shell
https://github.com/k4m4/terminals-are-sexy
https://github.com/agarrharr/awesome-cli-apps
https://github.com/herrbischoff/awesome-command-line-apps
Screenshot from 2019-05-19 11-23-58.png62 Кб, 1364x701
Linux: Chromium based 11 2571260
>>571024
Есть еще eshell, в Emacs, тоже со скобочками. Написан на elisp.
Windows 10: Chromium based 12 2571308
>>570984 (OP)
Пробовал последний чистый PowerShell? Довольно годная штука + кроссплатформенность.
Linux: Firefox based 13 2571990
>>571308
Однажды пыталася написать ротацию логов в винде на повершелле. В итоге ретировался и скопипастаил готовый батник.
Если у тебя есть успешный опыт - рассказывай.

Я так понял главная беда любого ООП-шелла - это отсутствие структурированного вывода у большинства команд. Типа raw text абсолютно побоку на каком ЯП парсить. Павершелл вроде как предлагает кучу врапперов для типовых команд. Что с одной стороны хорошо - меньше говнокодить, а с другой плохо - теряешь контроль и дистанцируешься от стандартных команд.

Рано или поздно, буду пробовать и его тоже.
Linux: Firefox based 14 2573223
>>571308
Я кстати, подобосрался в списке.
PowerShell и pash - это две большие разницы.
Linux: Firefox based 15 2573246
Как раз недавно искал какие есть шеллы кроме фиша, даша, баша и зсша. Спасибо за такой дваче-блог, анон.
Linux: Firefox based 16 2573256
Пытаюсь вкатиться в этот скриптинг, но возникло пара вопросов:
1)Чем зсш отличается от баша/даша? Именно в плане скриптов, а не изкаробочного автокомплита
2)Где есть максимально подробный гайд по скриптам? Одни ифы пишутся как [[ ]], другие как [ ], а третьи как if [[ ]] ; then. Пиздец блять, и что использовать, почему синтаксис какой ебанутый? Почему не юзать просто скобачки как в си? Да и не понятно, что эти ифы возвращают - пытался написать [[ ! -a scripts ]] без && command и шелл нихуя не делал.
3) Как я понял, на эти альтернативные шеллы и смотреть не стоит, если я и в дефолтных не разбираюсь.
Android: Mobile Safari 17 2573376
>>570984 (OP)
Реквестую фото ОПа, поставленного раком.
Windows 8: Chromium based 18 2573527
>>570984 (OP)
>На днях меня сильно расстроил awk. В зависимости от имплементации он вёл себя по разному

>Потом я вспомнил, что разные имплементации grep парсят регулярки по разному

Ты там из 70-х что ли пишешь? Привет Ритчи передавай. А так, gawk и egrep уже давно существуют, в которых этих проблем нет.
>путон, лесп, помершелл

Бля. Используй перловку, Люк. Ларри Уолл специально сделал этот язык для таких задротов как ты. Но перловка видимо нимодная и нисовременная и очередной говнотред на дваче не создать.
>>571308
Ты разделом ошибся, здесь дети друга друга пердольками называют и пытаются активировать винду. А раздел педерастов-копрофагов в другом месте.
>>573256
1)Ничем
2)https://tiswww.case.edu/php/chet/bash/bashref.html#Looping-Constructs
3)Не стоит, хотя бы потому что они нахуй никому не нужны. Ну, можешь еще tcsh глянуть, если бзди интересуют.
Android: Mobile Safari 19 2573553
>>571990
Померщель позволяет скриптоваться на C#, который мне кажется куда более вменяемым, нежели командлеты самой щели
Linux: Firefox based 20 2573661
>>573527
> gawk и egrep уже давно существуют

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

>Бля. Используй перловку

Бля у перла внезапно нет ни одной живой реализации командной строки. Ясен хрен, его в первую очередь начал гуглить.
изображение.png34 Кб, 260x399
Linux: Firefox based 21 2573802
В общем докладываюсь. Второй день юзаю xonsh. Решил начать с него.
Во-первых у него одно из самых живых движух на гитхабе. Во-вторых у меня есть небольшой опыт бидонотворчества.
1) Ставится в одну строчку из репы или pip.
2) Есть своя встроенная система плагинов под названием xontrib.
3) Как команданя строка вполне юзабелен изкоробки.
Пока строчу однострочники.
изображение.png29 Кб, 862x248
Linux: Firefox based 23 2584137
Итак, прошло две недели, как я добровольно засунул себе этот двусторонний дилдо под названием xonsh. Опыт был интересный. Местами я даже получил удовольствие.
Сразу по плюсам:
1) Питон, сука, мощн. Во-первых нормальный структуры данных позволяет выкинуть на мороз половину традиционных костылей, забить на пробелы и дышать полной грудью.
2) Все эти слайсы, генераторы делают код сильно чище.
3) if
4) xonsh как консоль очень удобен. Изкоробки он изобилует всяким сахаром типа автокомплита параметров. Основные фичи типа реверсивного поиска, анду и тому подобному идентичны башу, переходить комфортно.
Linux: Firefox based 24 2584145
По минусам:
1) У питона и баша совершенно разные концепции. Первый дрочит на свой дзен. Второй на юниксвей. Часто эти концепции противоречат. Особенно когда у первого фокус на простоту и наглядность, а у второго - на пайплайны. Прощайте однострочники.
2) Местами питон многословен. Особенно везде где речь идёт о системе, файлах, процессах и пайплайнах. Все это нужно оборачивать в алиасы, подкостылиывать, оборачивать в проверки и так далее.
3) Импорт, пип, виртуаленв и прочие методы добавления фич с со стороны не требуют повышения прав, но зато сильно переусложнены на фоне классических менеджеров пакетов. Но это наварное дело привычки.

Вот простейший пример бесконечного лупа, который баше реализуется через while ; do echo xl sleep 1; done, тут интуитивно написать не выходит. Наивная реализация просто не останавливается ни по по ctrl-c, ни по ctrl-g, ни по pause break. Дело в том, что питону побоку, какой там код вернул поражённый процесс и нужно писать дополнительную проверку.
В целом скачать на этих двух стульях сразу - дело неблагодарное. Мозг с трудом переключает контекст, а для чёткого разделения кода на сегменты баш/питон в xonsh не хватает синтаксиса и идеологии.
Но нет худа без добра. Благодаря xonsh я перестал бояться скриптовать на питоне и теперь в равной степени пишу костыли как на bash, так и на ванильном python. Даже в проде.
Так что эксперимент продолжается.
Windows 10: Chromium based 25 2584160
>>574052
лоооооооооооооооооол
я знаю кто ты.
Ебать ебать. Как тесен мир.
Че, членодевочка, как дела?
wallhaven-233501.jpg988 Кб, 2560x1600
Linux: Firefox based 26 2584164
>>570984 (OP)
Раньше, ты мог расказать это просто, но сейчас/ Во времена рекламы и грёбаного рынка, написал в тред, через несколько дней, это уже используют ради наживы. Если бы линуксоиды жили ради денег, пиздец бы они они были миллионерами,
Трудовоэ.webm6,1 Мб, webm,
523x720, 5:11
Windows 10: Chromium based 27 2584316
>>584160
Лол, ты задетектил в этом аноне меня (т.е. "девочку" с анон.фм) на основании того что я тоже когда-то (довольно давно уже) этот видасик запостил?
Да ты ебанутый. Это не мой пост.
Но да, похоже мир тесен.
За Вас.webm6 Мб, webm,
526x720, 3:29
Windows 10: Chromium based 28 2584317
>>571010>>571019>>571024
Какие из этих шеллов также как bash задизайнены под работу с "системой, файлами, процессами, пайплайнми", но при этом с нормально задизайненным синтаксом (естественно без заботы о совместимости с POSIX'ным шеллом)?
Android: Mobile Safari 29 2584390
>>584317
fish. Но он недалеко от баша ушел. Кстати, почему у шелоов такой ебанутый синтаксис? Почему они не сделали его сиподобным, без вот этих [[ ]] , ;; и тд?
Linux: Firefox based 30 2584419
>>584317
Они все задизайнены под работу с "системой, файлами, процессами, пайплайнми". На то они и шеллы. Просто в случае с xonsh это сделано при помощи костыльных sh вставок которые в теории должны прозрачно встраиваться в код. В теории. На практике - очень ограниченно и непредсказуемо, что проще всё на чистом питоне написать.
А так чисто внешне, в документации к третьей рубрике решения наиболее аккуратные. Впрочем неудивительно, это скобканутые постоянно топят за элегантность кода.
Linux: Firefox based 31 2584424
>>584390
>Кстати, почему у шелоов такой ебанутый синтаксис?

Потому что шеллы изначально не были полноценными интерпретаторами с логикой. Это был ворох бинарников с параметрами, взаимодействующих друг с другом при помощи экзиткодов.
Вот элементарный иф:
[code]if [ '1' -le '2' ] ; then echo '123' ; fi[/code]
подзразумевает, что запускается бинарник с параметрами:
[code]/usr/bin/[ '1' -le '2' ]
который через код выхода сообщает if запускать код в разделе then или else.
Отсюда и требования к пробелам, требования к экранированию, требования точкам-с-запятыми и переносам строк. Современные шеллы, конечно, никакие бинарники не вызывают и калькулируют логику сами, но совместимость хранят.
Linux: Firefox based 32 2590548
бамп
15593875449722.jpg27 Кб, 510x334
Android: Firefox based 33 2591943
> Альтернативные шеллы
> M3.019


Python/Go. Да хоть нодежс, к нему уже дохуя всего прикрутили.
Linux: Firefox based 34 2613084
бамп
Fedora Linux: Firefox based 35 2614378
Кому излишен баш можно попробовать ksh или mksh, но там долгое время был обидный баг с русскими символами.
Обновить тред