LINUX.ORG.RU

Schemesh v0.9.0 — оболочка командной строки на Scheme

 , ,


1

5

Пока сограждане предавались праздничным развлечениям, разработчик Schemesh разрабатывал и в результате наразрабатывал очередной релиз своего проекта: оболочка командной строки, представляющая собой довольно элегантную амальгаму синтаксиса Chez Scheme и классического UNIX Shell.

В данном выпуске:

  • добавлены функции работы с историей и портами (в том числе и совместимые с Racket);
  • улучшена работа с фоновыми процессами;
  • несколько мелких исправлений и обновлённые инструкции по сборке.

Из нетривиальных особенностей проекта стоит отметить возможность смешивать синтаксис Lisp с обычным shell в рамках одного скрипта и возможность подгружать schemesh в качестве библиотеки в Chez Scheme. Детальнее с примерами можно посмотреть здесь.

От других REPL-образных оболочек с Lisp/Scheme синтаксисом данный проект отличается наличием полноценного job control (fg\bg и прочее).

На вкус автора новости получилась бы отличная замена того же Fish если бы поддерживался right prompt – на удивление редко встречающаяся фича среди оболочек командной строки.

>>> подробности

★★★★★

Проверено: hobbit ()
Последнее исправление: unfo (всего исправлений: 2)
Ответ на: комментарий от dmitry237

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

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

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

Спасибо. Наши позиции по данному вопросу идентичны.

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

шелл построен на ранее почти повсеместной(как минимум более распространённой чем ныне) макроподстановке(макрорасширении) - не совсем как в грамматиках Хомского но всё-таки похожим образом

когда прежде чем быть исполненным «командное сообщение» будет 1+ раз проинтерпретированно

примечательно что теперь когда данные от кода в представлениях масс также отделены как и до появления универсальной архитектуры вычислений[где шифр лишь номер а его семантика на стороне читателя] языки замещения подстрок омагичены

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

Это где так? В Дебиане /bin/sh указывает на dash, сильно не забалуешь, башизмы сразу всплывут.

Далеко не всё запакетировано в .deb к сожалению. Регулярно всплывает необходимость разобраться с очередным новомодным говном, которое дебилы предлагают ставить с помощью curl github.com/hipstopidor/perdak/install.sh | sh

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

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

На помойку выкидывается только откровенный мусор, где ему как раз самое место. Что при переезде на systemd, что при миграции на wayland пользовательский опыт радикально улучшился - как раз благодаря тому что проанализировав накопившиеся за десятилетия ошибки из устаревших проектов взяли только необходимое, а весь шлак выкинули кхренам.

И shell как раз отличный кандидат на следующую микрореволюцию - та же передача неструктурированого текста в pipe вместо какого-нибудь json это жутко неудобный анахронизм. Да и синтаксис языка shell вызывает ностальгическую брезгливость - «это с каким же дерьмом были вынуждены предки работать».

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

Ниша, о которой вы говорите, безусловно существует. Но она такая мизерная и ничтожная относительно размеров изначальной ниши shell’а, что и говорить не о чем.

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

Сам же шел для скриптинга используется очень широко. По количеству строчек он наверное уступает другим языкам, но по количеству файлов-снипетов думаю один из лидеров.

К сожалению свежей статистики не нашёл, раньше дебиан такую статистику выкладывал. Но даже тупо

find /usr/bin -type f -exec file {} + | grep -i shell | wc -l

на моей машине выдаёт аж 546 файлов

Хотя по-идее в /usr/bin их должно быть крайне мало.

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

И shell как раз отличный кандидат на следующую микрореволюцию - та же передача неструктурированого текста в pipe вместо какого-нибудь json это жутко неудобный анахронизм. Да и синтаксис языка shell вызывает ностальгическую брезгливость - «это с каким же дерьмом были вынуждены предки работать».

Так я полностью согласен, поэтому и предлагаю его улучшить.

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

Сам же шел для скриптинга используется очень широко.

Я тут заглянул внутрь себя и попытался вспомнить, когда я в последний раз использовал shell для администрирования парка серверов. Выяснилось — в 2013. В этом году в моей жизни появился Puppet, затем Ansible. Ещё в 2017-м был немецкий стартапчик, где зачем-то написали на скриптах запускалки для docker’а. Я это безобразия пресёк и исправил, конечно. А потом я перешёл в энтерпрайз, где облака с кубернетесом и места башу нету просто вообще.

Скрипты я пишу для автоматизации каких-то рутинных задач и исполняются они на моей машине. АПИ-шки подёргать, данные из одного формата в другой перегнать, помогайки для sops-файлов, прогона тестов и пр. мелкие вещи. И для этого достаточно, чтобы искомый скрипт работал на моей машине.

А ваши сообщения, уж извините, для меня выглядят как предложение отказаться от удобного инструмента здесь и сейчас, потому что где-то в недрах Мории всё ещё работает древний HP-UX, на который его не портировали.

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

Выяснилось — в 2013

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

Как это изменит тот факт, что шел всё ещё один из самых популярных языков для скриптов?

в моей жизни появился Puppet, затем Ansible

держи нас в курсе :)

При чём тут папет и ансибле вообще в этой теме? Какое они имеют отношение? Это специализированные инструменты для крайне узкой ниши, которая ещё уже чем то, что я уже упоминал выше.

предложение отказаться от удобного инструмента здесь и сейчас

Кто тебе предлагает отказаться от от удобного инструмента здесь и сейчас? И от какого? Пользуйся дальше папет и ансибле на здоровье. Как развитие шела, которым ты уже давно не пользуешься для скриптов может тебе помешать? :)

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

То есть ты не пользуешься шелом для скриптов

facepalm. Попробуйте ещё раз перечитать что ли, только на этот раз вникать в текст, а не просто реагировать на ключевые слова. Звучит немного грубо, но другого совета у меня для вас нет.

При чём тут папет и ансибле вообще

Вы, должно быть, просто не застали то время, когда всё, для чего используется SCM было безальтернативной вотчиной shell’а.

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

Я понял, что раньше ты писал скрипты на шеле для администрирования серверов, а потом перестал. С чем тебя и поздравляю.

Какие мы должны сделать выводы? И должны ли?

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

можно переписать на нормальном языке.

Нужно же знать язык. Для меня это неподъемная задача, а главное я не вижу стимула учить язык. Я не из IT, никогда с этим не имел дело, а под 60 вообще как-то не очень. Самое близкое на что я смогу переписать свои скрипты, это то, что на платформе .Net, си-шарп подойдет, с гуглежом справлюсь, но я не хочу ставить dotnet и в нем ковыряться.

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

Часто есть необходимость в скриптах, без них трудно обойтись.

Это было 20 лет назад. Надо что-то в ините поправить? Скрипты. Устанавливаем софт? Скрипты. Автоматизация настройки удалённых машин? Скрипты.

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

Когда-то давно даже софт прототипировали на shell потому что из языков быстроразработки был только perl5 (не к ночи будь помянут). Сейчас даже питон уже компилировать научились.

если нет рут доступа

То это совершенно не проблема - у меня все питоновские пакеты с помощью pipx установлены под юзером: очень удобно и аккуратно. И это не говоря уже про всякие podman - на проде рут доступ зачастую нужен 1 раз при развёртывании k8s на talos: дальше всё происходит на пользовательском уровне, причём без необходимости писать\читать скрипты.

или нет интернета

Это уже что-то уровня историй про отшельников в сибирской тайге: не то чтобы что-то в принципе невозможное, но встречается не чаще чем герой мема «вы кто такие? я вас не звал!»

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

в процессе инсталляции или если что-то накосячил с установкой, конфигурацией, железом и т.п. И для исправления такой ситуации вполне может понадобиться какой-то скрипт

Это же просто ещё одна ниша наподобии тех, откуда скрипты уже вытеснили. И даже практически так же решается по-нормальному: через декларативщину - атомарные A/B обновления, watchdog, иммутабельные образы и вот это вот всё.

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

Какие мы должны

мы

Есть кино такое: «Зелёный слоник». Посмотрите, вам понравится. А может и не понравится. Но будет полезно.

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

Это уже что-то уровня историй про отшельников в сибирской тайге

тем не менее встречается

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

Есть кино такое: «Зелёный слоник». Посмотрите, вам понравится. А может и не понравится. Но будет полезно.

«Зелёный сло́ник» — фильм в жанре трэш, снятый в 1998—1999 годах режиссёром Светланой Басковой на любительскую киноплёнку. В фильме затрагиваются табуированные темы: садизм, копрофилия, гомосексуальность и др.

Загадочный ты наш. :)

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

Это только на первый взгляд. На самом деле там поднимается важная тема: отчего в западной традиции главным праздником считается Рождество, а в нашей — Пасха. Но и кроме того там есть много интересного. Наконец, это классика, это знать надо.

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

Может я конечно уже брюзжу, но это то, что меня раздражает в современном подходе во многих дистрибутивах. Неуважение к пользовательскому опыту, небережливое отношение к человеческому(пользовательскому) времени. И в конечном счёте к самим пользователям. Обратная совместимость сюда входит.

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

shell сочетающий интерактивный repl и тьюринг полную скриптоту возможен

Ты комментируешь в новости об очередном релизе именно такого shell :)

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

Глобально и локально это несколько разные разницы.

Так wayland именно что глобально уже тут - это лет 5 назад ещё надо было заморачиваться и интересоваться инновациями графического стека чтобы попробовать новое. Сейчас в любом немаргинальном дистре обязательно есть wayland-сессия, причём зачастую не одна. Где-то её уже сделали сессией по-умолчанию, где-то планируют сделать таковой в ближайшие релизы.

Не менее наглядно это видно по статистике коммитов Xorg - хоть какое-то шевеление есть только в XWayland. Разработчики просто не хотят этим заниматься потому что все прекрасно всё понимают.

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

Обратная совместимость сюда входит

Она как была, так и осталась. Это, кстати, груз. Но никуда не деться, либо всех кинуть либо на новой волне. У винды такие же проблемы, cmd.exe о-о-очень устарел, нет нормальной работы с текстом и всем тем, что присуще более современным шеллам, типизация, индексация и т.д. и т.п. Но ведь не отказываются, это обратная совместимость. Так же и в линукс, bash что-то не слишком развивается, ушел в башизмы вместо нормальной имплементации необходимого, застрял на каком-то этапе и теперь имеем неудобный шелл и неудобный скриптовый язык. Опять же, поймите правильно, это все познается в сравнении.

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

Регулярно всплывает необходимость разобраться с очередным новомодным говном, которое дебилы предлагают ставить с помощью curl github.com/hipstopidor/perdak/install.sh | sh

Помягше с людями надо, помягше. Но я такое брезгую ставить :)

Интересно, кто эти люди, у них какой дистрибутив? Я думаю не только в Дебиане шел прилинкован к даш.

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

Сейчас из всех этих ниш скрипты вытесняются декларативными инструментами

Из системд отлично запускаются старые инитовские скрипты (да и новые тоже :). Для установки софта всё так же шел используется, как и раньше. По крайней мере в Дебиане.

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

это совершенно не проблема - у меня все питоновские пакеты с помощью pipx

ты посмотри исходное сообщение, с чего всё началось - речь шла об установке любимого интерпретатора

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

Когда я был молодежью и учился в ВУЗе, 20 лет назад, уже тогда лисп был «не популярен среди моложёжи». Имхо, лисп был популярен среди молодежи последний раз в 70-80х.

Не уверен что он был популярен и тогда :)

было абсолютно не понятно как ЭТО применять, в отличии от С, С++ и Java.

Я очень хорошо понял, как его применять, когда мы делали автоматизацию (параметризацию) чертежей на автокаде. Автокад тогда (1993 что-ли, сейчас не знаю) имел встроенный лисп. И можно было накатать скрипт на лиспе, который бы строил чертёж в автокаде по заданным параметрам.

Ну а потом, когда узнал про емакс, понял, что у него тоже внутре неонка. :)

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

bash проигрывает тому же zsh, fish, pwsh и наверное сабжу Речь же именно про это.

С этим никто не спорит, есть масса удобных оболочек. Единственное, в чём все они уступают шелу (и башу) - в распространённости, некоторые в чём-то ещё.

Хочешь пиши bash-скрипт

Так я не хочу писать шел/баш-скрипт, я хочу что-то более продвинутое, но при этом столь же распространённое, простое и надёжное, как шел. Собственно это я и пытался объяснить здесь.

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

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

но js||python3 ?!

Про джаваскрипт не уверен, а питон, если его сильно урезать, добавить интерактивность, то может и подойдёт. Вот тут упомянули ipython - может быть это тоже правильное направление, надо глянуть. Сабж мне понравился тем, что он сохраняет совместимость, это я считаю, крайне важно.

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

Я очень хорошо понял, как его применять, когда мы делали автоматизацию (параметризацию) чертежей на автокаде

Когда видишь практическое применение, то конечно. А я про институт говорил. Ну сделали какую-то базу знаний, не понятно зачем нужную(кроме зачета). Ну и ладно.

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

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

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

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

а не вот это вот академическое

Забавно это читать в теме про шелл на scheme, где два старых лиспо-клоуна кувыркаются через голову и всех убеждают, что нужно баш на помойку вынести, а вместо него что? Ansible (лол) и бабашку на скобкоте с жавой! Модно, молодежно. На робкие возражения прифигевших юзеров аппелируют к диаволу девопсу. Даже Поттеринг до такой шизы не докатился пока.

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

Скрипты для автоматизации (конвейер) некорректно сравнивать "со взрослыми". Если нужна какая-то сложная логика и/или штуки, доступные только в полноценных языках программирования, не стоит рассматривать шелл-портянки как "замену", по крайней мере если не хватает опыта и/или нет каких-то строгих ограничений, не позволяющих это сделать.

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

Ну, так против использования shell’а в мелких скриптах (до одного экрана кода) и я не возражаю. А дальше — уж извините, но недостатки shell’а начинают перевешивать.

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

То же самое можно сказать о elisp. Тут вам не жмёт?

bread
()

Вот мне интересно, у тех кто топит против баша, есть хоть один у которого в качестве шелла установлен не-bash/sh/dash/…?

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

Это точно замена шеллу?

Да, для случая управления большим парком машин предсказуемым образом. Раньше это всё автоматизировалось как раз шелл-скриптами.

А зпустить любимую программу?

Это уже давным-давно большинство делает не из шелла, а через какое-нибудь графическое меню. Просто потому что ещё один промежуточный шаг (сначала запустить терминал) совершенно бессмысленен.

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

Что есть более удобное и комфортное, чем шелл, за пределами задачи «Запустить стим»?

Ты комментируешь в новости о выпуске как раз одного такого инструмента, где поддержка синтаксиса шелл хоть и присутствует, но полностью опциональна.

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

Ну, так против использования shell’а в мелких скриптах (до одного экрана кода) и я не возражаю.

Спасибо, друг, мне полегчало 😊

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

Наверное есть, но смысл какой? Если какой-нибудь zsh использовать в качестве логин-шелла ($SHELL), то на этапе логина он все равно будет выполнять роль sh. Ну а пользоваться можно тем, что нравится, необязательно делать chsh и даже записывать в /etc/shells

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

Сейчас в любом немаргинальном дистре обязательно есть wayland-сессия, причём зачастую не одна

Знать бы ещё что это такое.

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

У меня по-умолчанию init3.

Не менее наглядно это видно по статистике коммитов Xorg - хоть какое-то шевеление есть только в XWayland. Разработчики просто не хотят этим заниматься потому что все прекрасно всё понимают.

Для меня это немного другой показатель. В wayland ещё пилить и пилить – вот и пилят.

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

На помойку выкидывается только откровенный мусор, где ему как раз самое место. Что при переезде на systemd, что при миграции на wayland пользовательский опыт радикально улучшился - как раз благодаря тому что проанализировав накопившиеся за десятилетия ошибки из устаревших проектов взяли только необходимое, а весь шлак выкинули кхренам.

Теперь ради сохранения хотя бы предыдущего пользовательского опыта придётся писать тонну кода. Просто чтобы было как раньше. За пределами DE и пары-тройки тайлинговых WM жизни на wayland, считай, и нет.

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

Это точно замена шеллу?

Да, для случая управления большим парком машин предсказуемым образом. Раньше это всё автоматизировалось как раз шелл-скриптами.

За пределами админства и девопёсства есть жизнь. У простых пользователей вроде меня.

А зпустить любимую программу?

Это уже давным-давно большинство делает не из шелла, а через какое-нибудь графическое меню. Просто потому что ещё один промежуточный шаг (сначала запустить терминал) совершенно бессмысленен.

При этом запустить графическое окружение, в котором надо искать это меню, не бессмысленен? Терминал он вот он, а для GUI ещё startx (или что там у вяленьких вместо этого?) надо набирать.

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

Что есть более удобное и комфортное, чем шелл, за пределами задачи «Запустить стим»?

Ты комментируешь в новости о выпуске как раз одного такого инструмента, где поддержка синтаксиса шелл хоть и присутствует, но полностью опциональна.

То есть за пределами шелла есть шелл? Отлично. Логика уровня wayland-фанбоев.

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

Как с помощью веб-интерфейса мне реализовать конвейер между произвольными программами?

А как это организовать с помощью шелл? Неструктурированный текст в качестве выхлопа одной программы на вход произвольной передать можно, но ничего осмысленного не получится - придётся городить какую-то обвязку для адаптации форматов. А потом долго и нудно её отлаживать. Именно поэтому в мире веб-интерфейсов любой стандарт структурированных данных (что json, что yaml, что xml) быстро обзаводится схемой для автоматической валидации и генерации адаптеров.

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

Или как животное в кнопочки GUI тыкать?

Ну почему же, вполне можно делать это как человек. Хотя если мозгов не хватает, то придётся как скотине пердолиться с консолью ;-)

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

А как это организовать с помощью шелл?

Максимально естественно.

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

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

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

Ну почему же, вполне можно делать это как человек. Хотя если мозгов не хватает, то придётся как скотине пердолиться с консолью ;-)

Уровень диалога моего младшенького. Это декларативные инструменты так на мозг влияют?

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

j и прочий (глагол прилагательные*)

А идея сделать shell с j-lang в качестве скриптоязыка прям богатая - но это надо совсем эпические запасы веществ, на уровне мексиканского картеля средней руки :)

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

Замены шеллу в качестве интерактивной оболочки так и не придумали. Даже баш лучше существующих GUI.

LOL :-D

zabbal ★★★★★
() автор топика
Ответ на: комментарий от papin-aziat

Логически рассуждая, если задача мелкая, её можно делать на чём угодно, она всё равно будет сделана легко и быстро. А вот это уже перебор.

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

Нужно же знать язык.

В целом да - предполагается что программирующий знает какой-то язык программирования. Это не то чтобы прям сильно жесткое ограничение :)

Я не из IT

Вот, кстати, еще одна ниша, откуда шелл стремительно вытесняется - всяческие no-code системы и штуки типа zapier с их подходом «накликай интеграцию» это ведь не только про кадровиков, генерящих себе эксельки. Это еще и вполне рабочий локальный инструмент, вместо «ща свояю скрипт». При том именно для не-IT он куда удобнее, быстрее и прозрачнее чем разбираться с тем почему баш в очередной раз обосрался с интерпретацией строки.

а под 60 вообще как-то не очень

Все там будем.

zabbal ★★★★★
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.