Программы


Ответить в тред Ответить в тред

Check this out!
<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
37 19 17

Альтернативные шеллы Аноним (Linux: Firefox based) 18/05/19 Суб 22:13:48 25709841
lovely-beautifu[...].jpg (295Кб, 900x599)
900x599
Приглашаю всех анонов обсудить опыт использования альтернативных шеллов. Не просто dash/ksh/zsh, а радикальных монстров, предлагающих свои синтаксис, философию и печеньки.

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

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

Велкам.
Аноним (Linux: Firefox based) 18/05/19 Суб 22:48:57 25710102
изображение.png (196Кб, 686x457)
686x457
изображение.png (35Кб, 512x287)
512x287
изображение.png (9Кб, 899x93)
899x93
Итак список который я составил.

Рубрика первая: "Мы просто докостылим текущий баш синтаксическим сахаром и всем будет хорошо".
- 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) 18/05/19 Суб 23:01:26 25710193
изображение.png (103Кб, 1105x671)
1105x671
изображение.png (71Кб, 809x434)
809x434
изображение.png (21Кб, 573x331)
573x331
Рубрика вторая: "Мы просто возьмём популярный ЯП и слепим из него шелл".

- 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) 18/05/19 Суб 23:10:03 25710244
demo.gif (3907Кб, 890x466)
890x466
изображение.png (219Кб, 1658x1262)
1658x1262
изображение.png (12Кб, 362x146)
362x146
Рубрика третья: "Мы просто возьмём менее популярный ЯП со скобочками".

Несколько шеллов основываются на различных лиспопотомках. На удивление они выглядят самими здоровыми и вменяемыми, при том снабжаются детальнейшей документацией.
- 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
Аноним (Microsoft Windows 10: Chromium based) 19/05/19 Вск 02:40:24 25711345
ОП, у тебя, случайно, нет своего блога или чего-то в этом духе по подобным вещам, не только про шеллы, а вообще? Быть может есть что посоветовать? Был бы премного благодарен.
Аноним (Microsoft Windows 10: Chromium based) 19/05/19 Вск 02:42:48 25711356
Аноним (Linux: Chromium based) 19/05/19 Вск 10:46:22 25712157
>>2570984 (OP)
Разве gawk не универсален? Не вижу смысла использовать ничего, кроме bash, возможно dash, для обычных шел-скриптов, без башизмов.
Аноним (Linux: Firefox based) 19/05/19 Вск 11:01:45 25712288
изображение.png (44Кб, 456x531)
456x531
>>2571215
Да, gawk универсален, но никто не гарантирует, что стоять будет именно он. На минимальном дебиане стоит mawk и он напрочь игнорирует директиву nextfile.
Подробности: https://stackoverflow.com/questions/36346222/awk-skip-to-next-file
То есть либо ты проверяешь наличие бинарника, либо начинаешь изучать особенности всех реализаций awk, чтобы не обосраться. В любом случае - боль, костыли и экзистенциальный кризис.
Аноним (Linux: Firefox based) 19/05/19 Вск 11:04:11 25712339
изображение.png (1450Кб, 1000x1507)
1000x1507
>>2571215
> Не вижу смысла использовать ничего, кроме bash
Да. Я ведь об этом напрямую написал. В прод я ничего кроме posix sh не выведу. Просто академический интерес.
Хотя тот же бидон активно используют в скриптовании, авось и сделаю какие-нибудь выводы.
Аноним (Linux: Firefox based) 19/05/19 Вск 11:16:07 257124310
>>2571134
Для блога нужна систематизированная информация, а я до этой стадии редко дохожу.
С другой стороны, жжшечка одного анона про 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
Аноним (Linux: Chromium based) 19/05/19 Вск 11:36:10 257126011
Screenshot from[...].png (62Кб, 1364x701)
1364x701
>>2571024
Есть еще eshell, в Emacs, тоже со скобочками. Написан на elisp.
Аноним (Microsoft Windows 10: Chromium based) 19/05/19 Вск 12:42:29 257130812
>>2570984 (OP)
Пробовал последний чистый PowerShell? Довольно годная штука + кроссплатформенность.
Аноним (Linux: Firefox based) 19/05/19 Вск 22:12:28 257199013
>>2571308
Однажды пыталася написать ротацию логов в винде на повершелле. В итоге ретировался и скопипастаил готовый батник.
Если у тебя есть успешный опыт - рассказывай.

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

Рано или поздно, буду пробовать и его тоже.
Аноним (Linux: Firefox based) 19/05/19 Вск 22:34:00 257322314
>>2571308
Я кстати, подобосрался в списке.
PowerShell и pash - это две большие разницы.
Аноним (Linux: Firefox based) 19/05/19 Вск 23:23:42 257324615
Как раз недавно искал какие есть шеллы кроме фиша, даша, баша и зсша. Спасибо за такой дваче-блог, анон.
Аноним (Linux: Firefox based) 19/05/19 Вск 23:42:35 257325616
Пытаюсь вкатиться в этот скриптинг, но возникло пара вопросов:
1)Чем зсш отличается от баша/даша? Именно в плане скриптов, а не изкаробочного автокомплита
2)Где есть максимально подробный гайд по скриптам? Одни ифы пишутся как [[ ]], другие как [ ], а третьи как if [[ ]] ; then. Пиздец блять, и что использовать, почему синтаксис какой ебанутый? Почему не юзать просто скобачки как в си? Да и не понятно, что эти ифы возвращают - пытался написать [[ ! -a scripts ]] без && command и шелл нихуя не делал.
3) Как я понял, на эти альтернативные шеллы и смотреть не стоит, если я и в дефолтных не разбираюсь.
Аноним (Google Android: Mobile Safari) 20/05/19 Пнд 06:38:11 257337617
>>2570984 (OP)
Реквестую фото ОПа, поставленного раком.
Аноним (Microsoft Windows 8: Chromium based) 20/05/19 Пнд 15:23:30 257352718
>>2570984 (OP)
>На днях меня сильно расстроил awk. В зависимости от имплементации он вёл себя по разному
>Потом я вспомнил, что разные имплементации grep парсят регулярки по разному
Ты там из 70-х что ли пишешь? Привет Ритчи передавай. А так, gawk и egrep уже давно существуют, в которых этих проблем нет.
>путон, лесп, помершелл
Бля. Используй перловку, Люк. Ларри Уолл специально сделал этот язык для таких задротов как ты. Но перловка видимо нимодная и нисовременная и очередной говнотред на дваче не создать.
>>2571308
Ты разделом ошибся, здесь дети друга друга пердольками называют и пытаются активировать винду. А раздел педерастов-копрофагов в другом месте.
>>2573256
1)Ничем
2)https://tiswww.case.edu/php/chet/bash/bashref.html#Looping-Constructs
3)Не стоит, хотя бы потому что они нахуй никому не нужны. Ну, можешь еще tcsh глянуть, если бзди интересуют.
Аноним (Google Android: Mobile Safari) 20/05/19 Пнд 16:00:36 257355319
>>2571990
Померщель позволяет скриптоваться на C#, который мне кажется куда более вменяемым, нежели командлеты самой щели
Аноним (Linux: Firefox based) 20/05/19 Пнд 17:46:16 257366120
>>2573527
> gawk и egrep уже давно существуют
В эпоху, когда твои скрипты будут запускать хрен знает в каких говноконтейнерах со спасибо-что-не-busybox, наличие эталонных реализация как-то не сильно успокаивает.

>Бля. Используй перловку
Бля у перла внезапно нет ни одной живой реализации командной строки. Ясен хрен, его в первую очередь начал гуглить.
Аноним (Linux: Firefox based) 20/05/19 Пнд 23:02:34 257380221
изображение.png (34Кб, 260x399)
260x399
В общем докладываюсь. Второй день юзаю xonsh. Решил начать с него.
Во-первых у него одно из самых живых движух на гитхабе. Во-вторых у меня есть небольшой опыт бидонотворчества.
1) Ставится в одну строчку из репы или pip.
2) Есть своя встроенная система плагинов под названием xontrib.
3) Как команданя строка вполне юзабелен изкоробки.
Пока строчу однострочники.
Аноним (Linux: Firefox based) 21/05/19 Втр 12:25:47 257405222
изображение.png (280Кб, 704x528)
704x528
Аноним (Linux: Firefox based) 01/06/19 Суб 21:03:51 258413723
изображение.png (29Кб, 862x248)
862x248
Итак, прошло две недели, как я добровольно засунул себе этот двусторонний дилдо под названием xonsh. Опыт был интересный. Местами я даже получил удовольствие.
Сразу по плюсам:
1) Питон, сука, мощн. Во-первых нормальный структуры данных позволяет выкинуть на мороз половину традиционных костылей, забить на пробелы и дышать полной грудью.
2) Все эти слайсы, генераторы делают код сильно чище.
3) if
4) xonsh как консоль очень удобен. Изкоробки он изобилует всяким сахаром типа автокомплита параметров. Основные фичи типа реверсивного поиска, анду и тому подобному идентичны башу, переходить комфортно.
Аноним (Linux: Firefox based) 01/06/19 Суб 21:24:00 258414524
изображение.png (4Кб, 176x77)
176x77
изображение.png (10Кб, 451x102)
451x102
изображение.png (22Кб, 528x235)
528x235
По минусам:
1) У питона и баша совершенно разные концепции. Первый дрочит на свой дзен. Второй на юниксвей. Часто эти концепции противоречат. Особенно когда у первого фокус на простоту и наглядность, а у второго - на пайплайны. Прощайте однострочники.
2) Местами питон многословен. Особенно везде где речь идёт о системе, файлах, процессах и пайплайнах. Все это нужно оборачивать в алиасы, подкостылиывать, оборачивать в проверки и так далее.
3) Импорт, пип, виртуаленв и прочие методы добавления фич с со стороны не требуют повышения прав, но зато сильно переусложнены на фоне классических менеджеров пакетов. Но это наварное дело привычки.

Вот простейший пример бесконечного лупа, который баше реализуется через while ; do echo xl sleep 1; done, тут интуитивно написать не выходит. Наивная реализация просто не останавливается ни по по ctrl-c, ни по ctrl-g, ни по pause break. Дело в том, что питону побоку, какой там код вернул поражённый процесс и нужно писать дополнительную проверку.
В целом скачать на этих двух стульях сразу - дело неблагодарное. Мозг с трудом переключает контекст, а для чёткого разделения кода на сегменты баш/питон в xonsh не хватает синтаксиса и идеологии.
Но нет худа без добра. Благодаря xonsh я перестал бояться скриптовать на питоне и теперь в равной степени пишу костыли как на bash, так и на ванильном python. Даже в проде.
Так что эксперимент продолжается.
Аноним (Microsoft Windows 10: Chromium based) 01/06/19 Суб 22:13:10 258416025
>>2574052
лоооооооооооооооооол
я знаю кто ты.
Ебать ебать. Как тесен мир.
Че, членодевочка, как дела?
Аноним (Linux: Firefox based) 01/06/19 Суб 22:19:58 258416426
wallhaven-233501.jpg (988Кб, 2560x1600)
2560x1600
>>2570984 (OP)
Раньше, ты мог расказать это просто, но сейчас/ Во времена рекламы и грёбаного рынка, написал в тред, через несколько дней, это уже используют ради наживы. Если бы линуксоиды жили ради денег, пиздец бы они они были миллионерами,
Аноним (Microsoft Windows 10: Chromium based) 02/06/19 Вск 07:02:57 258431627
Трудовоэ.webm (6283Кб, 523x720, 00:05:11)
523x720
>>2584160
Лол, ты задетектил в этом аноне меня (т.е. "девочку" с анон.фм) на основании того что я тоже когда-то (довольно давно уже) этот видасик запостил?
Да ты ебанутый. Это не мой пост.
Но да, похоже мир тесен.
Аноним (Microsoft Windows 10: Chromium based) 02/06/19 Вск 07:16:35 258431728
За Вас.webm (6133Кб, 526x720, 00:03:29)
526x720
>>2571010>>2571019>>2571024
Какие из этих шеллов также как bash задизайнены под работу с "системой, файлами, процессами, пайплайнми", но при этом с нормально задизайненным синтаксом (естественно без заботы о совместимости с POSIX'ным шеллом)?
Аноним (Google Android: Mobile Safari) 02/06/19 Вск 11:54:25 258439029
>>2584317
fish. Но он недалеко от баша ушел. Кстати, почему у шелоов такой ебанутый синтаксис? Почему они не сделали его сиподобным, без вот этих [[ ]] , ;; и тд?
Аноним (Linux: Firefox based) 02/06/19 Вск 12:56:32 258441930
изображение.png (25Кб, 556x256)
556x256
изображение.png (22Кб, 725x159)
725x159
>>2584317
Они все задизайнены под работу с "системой, файлами, процессами, пайплайнми". На то они и шеллы. Просто в случае с xonsh это сделано при помощи костыльных sh вставок которые в теории должны прозрачно встраиваться в код. В теории. На практике - очень ограниченно и непредсказуемо, что проще всё на чистом питоне написать.
А так чисто внешне, в документации к третьей рубрике решения наиболее аккуратные. Впрочем неудивительно, это скобканутые постоянно топят за элегантность кода.
Аноним (Linux: Firefox based) 02/06/19 Вск 13:18:06 258442431
изображение.png (2Кб, 103x61)
103x61
изображение.png (9Кб, 240x131)
240x131
>>2584390
>Кстати, почему у шелоов такой ебанутый синтаксис?
Потому что шеллы изначально не были полноценными интерпретаторами с логикой. Это был ворох бинарников с параметрами, взаимодействующих друг с другом при помощи экзиткодов.
Вот элементарный иф:
[code]if [ '1' -le '2' ] ; then echo '123' ; fi[/code]
подзразумевает, что запускается бинарник с параметрами:
[code]/usr/bin/[ '1' -le '2' ]
который через код выхода сообщает if запускать код в разделе then или else.
Отсюда и требования к пробелам, требования к экранированию, требования точкам-с-запятыми и переносам строк. Современные шеллы, конечно, никакие бинарники не вызывают и калькулируют логику сами, но совместимость хранят.
Аноним (Linux: Firefox based) 11/06/19 Втр 21:51:31 259054832
бамп
Аноним (Google Android: Firefox based) 14/06/19 Птн 03:12:40 259194333
15593875449722.jpg (27Кб, 510x334)
510x334
> Альтернативные шеллы
> M3.019

Python/Go. Да хоть нодежс, к нему уже дохуя всего прикрутили.
Аноним (Linux: Firefox based) 14/06/19 Птн 20:35:00 259246734
>>2591943
Ладно питон, он ещё используется. Но го-то с жсом куда?
Посчитай мне свободное место на разделе на go, или обойди рекурсивно директории и пожми их через нодежс.
ЯПы совершенно не рассчитанные на работу с системой.
Аноним (Linux: Firefox based) 30/06/19 Вск 15:58:50 260342635
изображение.png (417Кб, 800x534)
800x534
В общем, xonsh оказался очень удобной средой для разработки python скриптов, не больше и не меньше. Суть в том, что ты ты интерактивно накидываешь команды в шелл и потом с минимальными изменениями копипастишь их в скрипт. Что-то вроде ipyhon, только в отдельный баш переключаться не надо.
Как постоянный шел он не годится. В первую очередь из-за его непостоянности и автоопределения вида кода. Вроде можно насильно разделять код на питон-баш блоки при помощи конструкций @() !() $(), но от этого не сильно легче. Во-вторых из-за того, что питон не дружит с плотными функциональными однострочниками, а поощряает развёрнутый читабельный код.

Рекомендую xonsh всем кто хочет начать скриптовать на ванильном питоне, но никак не может решиться. Если кому интересно спрашивайте свои ответы.
За сим я оный шел оставляю и планирую двигаться дальше.
Аноним (Linux: Firefox based) 30/06/19 Вск 21:40:32 260374736
изображение.png (132Кб, 1362x1008)
1362x1008
изображение.png (54Кб, 1016x395)
1016x395
изображение.png (138Кб, 1366x1060)
1366x1060
изображение.png (66Кб, 1230x558)
1230x558
Аноним (Linux: Firefox based) 12/07/19 Птн 11:26:47 261308437
бамп
Аноним (Fedora Linux: Firefox based) 14/07/19 Вск 13:02:14 261437838
Кому излишен баш можно попробовать ksh или mksh, но там долгое время был обидный баг с русскими символами.
Настройки X
Ответить в тред X
15000 [S]
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов