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)
Ответ на: комментарий от theNamelessOne

В человеческих языках мы используем правила для редких и исключения для частых вещей. Ничего не зная о Русской деревне, из словоупотребления «слон-слониха-слонёнок vs петух-курица-цыплёнок» мы можем заключить, что куриц там было много, а слонов мало.

И это весьма логично и разумно. В одном случае мы экономим усилия по запоминанию, а во втором — усилия по словоупотреблению.

Так же и в IT. Следует различать диалоговый режим и работу со сценариями. Для скриптов важна возможность выразить мысль (так, чтоб не было мучительно больно). Тут лисп или питон какой на своём месте. А вот для диалога с системой это уже не так важно. Там и задачи проще, и контексты с правилами находятся в голове у админа. Зато тут нужно экономить количество букв для ввода, показывать дополнительную информацию и т.п. Настоящий ЯП тут только мешает. А вот zsh — на своём месте.

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

Совместимость с Posix сильно переоценена, прямо скажу, где ещё нету bash’а? Разве на каких спецжелезяках, а там ваши скипты не взлетят по каким-нибудь другим причинам.

ugoday ★★★★★
()

Увлечение языками не используемыми на проде чревато тяжёлой близкой к наркотической ломке и дикому отвращению при взгляде на другие языки.

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

Теперь буду знать, откуда все эти вои. Спасибо.

u5er ★★
()

Собственно шел с башем + стандартные утилиты, ну пожалуй ещё вим с емаксом - последний оплот старого мира.

init уже всё, иксы на подходе, c/с++ непонятно где… (звучит как начало песни)

Развиваться надо, баш же совсем не развивается. Это очень хорошо что я могу запустить свой скрипт тридцатилетней давности, но это не значит что надо всё заморозить и ничего не менять.

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

Направление тупиковое. Всё, что можно, (т.е. небольшая унификация и устранение запутанных мест) уже сделано в rc из plan9. Но то, что делает bash успешным: строки с пробелами как базовый тип данных, ставит крест на дальнейшее развитие, т.к. код получается слишком хрупким. Большие скрипты на баше не написать как его ни улучшай, а маленькие и на текущей версии и так неплохо пишутся. Вот и нет прогресса.

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

Vi присутствует, так что можно сразу к работе приступать

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

отредактировать apt/source.list, чтобы установить emacs

Он же и так по умолчанию доступен для установки.

Так что нано ненуно %)

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

Разные бывают ситуации, особенно в этом нашем энтерпрайзе.

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

иксы на подходе

Уже прошли - пишу после переезда на Wayland. Причём ни единого приложения, требующего XWayland, у меня не осталось - всё давно готово и отлично работает.

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

Уже прошли - пишу после переезда на Wayland. Причём ни единого приложения, требующего XWayland, у меня не осталось - всё давно готово и отлично работает.

…кроме remote desktop, dpi/скейлинга и многого другого по мелочам…

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

«Жить тебе во времена перемен» @ древнее проклятье

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

Он просто работает, нет? нет

Хороший список ошибок «программистов». Там, кстати, в первой фразе так и написано.

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

Что угодно лучше, чем баш и другие POSIX-совместимые шеллы :)

Даёшь Перл в качестве коммандного шелла!!!

P. S. Bash идеален в балансе простота-фичастость-распростанённость.

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

Хороший список ошибок «программистов»

Гнилая отмазка. Инструмент должен помогать решать проблему, а не самому становиться проблемой. Там, где нормальный ЯП (например babashka) предлагает развитые средства, помогающие разработчику, баш предлагает быть внимательным и не ошибаться.

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

Даёшь Перл в качестве коммандного шелла

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

А вот сами команды (скрипты) таки да лучше писать на нормальных языках. В том числе и на перле, почему нет.

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

кроме remote desktop

Он и на иксах нахрен не сдался, хотя те кому надо вроде настраивали

dpi/скейлинга

Врёшь как дышишь: это как раз в иксах его хрен настроишь, а с вейландом завёлся мнгновенно.

и многого другого по мелочам…

В смысле тебе надоело новое враньё выдумывать? И то хорошо, ещё перенапряжёшься ненароком :)

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

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

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

где ещё нету bash’а?

За пределами Linux, очевидно:

  • macOS
  • FreeBSD
  • OpenBSD
  • NetBSD
  • DragonFly BSD
  • AIX
  • SunOS Solaris derivatives

Совместимость с Posix сильно переоценена

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


Смешнее всего то, что тот кто пропихивал POSIX, сам в итоге на него и поклал. (%

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

А какие средства баш предоставляет, для того чтобы предотвратить подобные ошибки?

А мозг юзеру на что? Или уже совсем атрофировался? (%

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

За пределами Linux, очевидно:

  • macOS

у меня для вас радость. Делайте brew install bash и будет вам счастье. Полагаю, с остальным то же самое.

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

Ну признайся, уродство баша как-то притягивает даже 😊

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

Полагаю, с остальным то же самое.

Установить можно хоть PowerShell в ArchLinux, дефолтом он от этого не станет. Как и Bash в macOS и остальных.

К чему это я? А к тому, что чтобы запустить какую-то автоматизацию на Bash, его нужно вначале установить, а значит вокруг такой автоматизации придётся ваять ещё одну автоматизацию на том, что уже имеется. А что у нас имеется в любой UNIX-like? Правильно, Bourne Shell (не Bourne Again Shell, a.k.a. Bash; хотя и он умеет в режим совместимости).

А ещё я в каком-то дистрибутиве Linux видел шелл по пути /usr/bin/sh, что нифига не хорошо.

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

А мозг юзеру на что?

Чтобы избегать проблемы заранее.

А какие средства предоставляет общество, чтобы ты случайно не попал под трамвай, не ограбили в тёмном переулке, не выпал из окна или не сдох от коронавируса? (%

Чтобы избегать проблем, нужно хоть иногда пользоваться мозгом.

Эволюция уже показала что отупение ведёт к вымиранию, так что я за естественный отбор!

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

А какие средства предоставляет общество, чтобы ты случайно не попал под трамвай, не ограбили в тёмном переулке, не выпал из окна или не сдох от коронавируса? (%

Цивилизация. Это называется цивилизация.

Чтобы избегать проблем, нужно хоть иногда пользоваться мозгом.

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

я за естественный отбор!

Я тоже. В том числе и среди языков программирования.

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

А к тому, что чтобы запустить какую-то автоматизацию на Bash,

Для этого есть более совершенные инструменты.

его нужно вначале установить, а значит вокруг такой автоматизации придётся ваять ещё одну автоматизацию на том, что уже имеется.

Да, именно так. И очевидно, это не является проблемой и делается одной командой.

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

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

Так и запишем: То, что пользователь треснул себе по пальцу молотком, виноват, безусловно, изобретатель молотка! (%

Это называется цивилизация.

То что я вижу, называется деградация. Это если без модной нынче подмены понятий. (%

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

Чтобы избегать проблем, нужно хоть иногда пользоваться мозгом

Предлагаю таки да воспользоваться и прекратить превращать интерпретатор команд в язык программирования (и наоборот) %)

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

это не является проблемой и делается одной командой

Попробуйте запустить сценарий Ansible на машине, где не установлен Python. Очевидно, что это "не является проблемой"? (%

С любым другим скриптом, ситуация ничуть не меняется.

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

То, что пользователь треснул себе по пальцу молотком, виноват, безусловно, изобретатель молотка! (%

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

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

прекратить превращать интерпретатор команд в язык программирования (и наоборот)

Где это я спутал эти два понятия?

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

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

Пруфы будут? (%

А пользователи могут просто выбирать более удобные молотки.

Но почему-то вместо этого продолжают ныть. (%

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

Попробуйте запустить сценарий Ansible на машине, где не установлен Python.

Легко. На машину ставится питон и задача сводится к предыдущей.

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

Попробуйте запустить сценарий Ansible на машине, где не установлен Python.

Легко. На машину ставится питон и задача сводится к предыдущей.

Усложним задачу (один из сценариев, с которыми я столкнулся какое-то время назад): машин сотни, дистрибутивы, их версии и версии Python в репозиториях отличаются, где-то нужно подключать другие репозитории (и не везде это делается тривиально как в Debian).

А когда машина одна, то можно и без Ansible обойтись, в этом случае оно времени ничуть не экономит, даже наоборот.

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

машин сотни, дистрибутивы, их версии и версии Python в репозиториях отличаются,

Найти сборку линукса без питона — та ещё задача. К версии питона ansible довольно толерантен, см подробности, т.е. в подавляющем большинстве случаев работает формула «любой питон3 на любом современном/поддерживаемом дистрибутиве».

А вот написать баш-скрипт, одинаково работающий на сотнях машин со всяко-разными дистрибутивами и разными версиями программ на них — та ещё задачка. Это можно сделать, но индустрия решила, что для таких задач есть лучшие инструменты. Ansible/Puppet/Chef и т.п.

Собственно, 20 лет назад баш использовался почти для всего. Сейчас — легаси да и того мало, вместо него выбирают ansible, terraform, CDK, либо вообще yaml/json конфиги для CI/CD. Потому что нужен результат, а не оправдания «это не инструмент кривой, это программисты с админами недостаточно старались». Такие дела.

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

То, что пользователь треснул себе по пальцу молотком, виноват,

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

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

Где это я спутал эти два понятия

Вы тут ярко демонстрируете мировоззрение превозмогателя, для которого не бывает неудобных и не подходящих под задачу инструментов — бывают только слабаки и хлюпики, не способные или не желающие подметать плац ломом превозмогать.

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

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

Направление тупиковое. Всё, что можно, (т.е. небольшая унификация и устранение запутанных мест) уже сделано в rc из plan9

про инит тоже так думали…

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