LINUX.ORG.RU

А есть ли сделанный с умом shell scripting language?

 ,


1

5

sh, bash, ksh это всё пережитки каких-то очень древних годов. Использовать их для каких-то относительно сложных вещей — тот ещё квест. Современные языки программирования ушли далеко вперёд.

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

Хочется и то и другое. Хочется такой язык программирования, который с одной стороны был достаточно современным (ООП, ФП, модули и тд), с другой стороны манипулировать файлами, запускать программы, соединять их было бы не сложней и не многословней, чем в bash-е. Ну и хорошая поддержка манипуляции с текстом, хотя бы на уровне регэкспов.

Есть ли такое в природе?

★★★★★

Swiss Army chainsaw of scripting languages.

Ну сам же знаешь.

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

Без понятия. Не пишу на нем. Но скрипты только на нем встречаю.

RazrFalcon ★★★★★
()

PowerShell, конечно.

Но до вас, до линуксов, он нескоро дойдет, как и все достижения белых людей. У вас вон куча народу даже systemd противилась.

lovesan ★★
()

Яростно лорчую вопрос.

Я в последнее время вообще порываюсь сделать шеллоподобный DSL на плюсах(!). Типа procxx, только ещё DSL'нее.

intelfx ★★★★★
()
Ответ на: комментарий от quantum-troll

quantum-troll

Уродов тут не любят, уходи!

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

PowerShell
systemd
lovesan

Почему ты перечислил 3 говна в одном постинге?

anonymous
()

Чтобы прям не хуже баша - такого нет.

Но для питона есть shell-модуль, https://amoffat.github.io/sh/

print(sort(du(glob("*"), "-sb"), "-rn"))

ls(_out="files.list")

ipython дает интерактивность, но я его не осилил.

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

Перечисли, какие именно примитивные операции требуют куча якобы писанины?

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

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

По ссылке есть реализация на ps и на bash/coreutils. Разница существенная.

Ну и моё любимое - засечь время выполнения проги:

time cmd
vs
$sw = [Diagnostics.Stopwatch]::StartNew()
cmd
$sw.Stop()
$sw.Elapsed

https://stackoverflow.com/questions/3513650/timing-a-commands-execution-in-po...

RazrFalcon ★★★★★
()

нормальная версия шелла — это шелл без перделок. Если бы шелл не лез наперед батьки, не решал за пользователя как парсить и выполнять строку, не имел бы встроенных комманд, он был бы нормальным. Такового нет

filequest
()

Современные языки программирования ушли далеко вперёд.

Но до мощи Common Lisp, который времён холодной войны, никто так и не дотягивает.

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

CL не мощный. Мощные языки — это смоллток и его наследники.

filequest
()

Проблема не в «современности», а в «назначении» языка. Язык, заточенный на запуск программ, может себе позволить удобные имена программ/файлов, всё остальное в нём будет неудобно, т.к. «буквы» закончились и придётся заворачивать оное в вычурный и неудобный «синтаксис». Наоборот, языки, заточенные на обработку данных вынуждены оптимизировать использование переменных, функций, классов, и т.п. - и заворачивать уже придётся имена файлов и вызов программ.

Т.е. ближе всего к поставленной задаче - использовать '|' и '#!', как то

for i in files* ; do то, что удобно в sh ; done \
| то.что.удобно.в.awk \
| то.что.удобно.в.sed \
| все другие удобные для разного языки

PS. Куда оптимизирован powershell я пока не понял.

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

По ссылке есть реализация на ps и на bash/coreutils, потому что без coreutils на баше задачу решить невозможно, в отличие от ps.

Ну и моё любимое - засечь время выполнения проги:

Measure-Command

thesis ★★★★★
()

В любом утюге можно найти всего лишь три вещи: шелл (где-то ksh, где-то bash), перл и питон. Хочешь чтобы везде работало - выбирай из этих трех.

alex_the_v ★★★
()

современным

PowerShell

(ООП, ФП, модули и тд)

PowerShell

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

PowerShell

Ну и хорошая поддержка манипуляции с текстом, хотя бы на уровне регэкспов

PowerShell

Есть ли такое в природе?

Как насчет PowerShell?

nikolnik ★★★
()

Есть JavaScript, Perl и Ruby
Для админских дел за глаза
Bash + awk, sed и куча утилит - тоже мощный инструмент в крутых руках

mystery ★★
()

Подправлю высказавшихся выше: не perl, а Perl Shell (psh)

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

Делается на питоне за полчаса. Просто чтение строк + выполнение через попен.

batekman ★★★
()

Shell сделан с умом (всем бы так), но безнадежно устарел. А приличного shell в Linux не завезли, всё какое-то динамически типизированное говно. Хотя была мода писать shell-подобные DSL на Haskell.

tailgunner ★★★★★
()

Ты сейчас описал PowerShell. Вся мощь дотнета к твоим услугам.

ritsufag ★★★★★
()

для такого беру python, но честно сказать, я почти для любой личной задачи беру его, благо модулей хватает всех мастей. Некоторые для такого берут JS + какой-нибудь node. Ну или perl, конечно.

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

Потому что баш убог.

Потому что UNIX-way.

Незачем пихать всё в один баш, когда есть coreutils, которые могут использовать и другие шеллы.

batekman ★★★
()

sh, bash, ksh это всё пережитки каких-то очень древних годов.

Если рассмотреть абстрактный shell как наиболее тонкий из всех возможных интерфейс пользователя к сервисам ядра (сисколлы, процессы, файлы) операционной системы, то устарел он ровно настолько, насколько устарели эти самые интерфейсы ядра. И ни на грамм больше.

Использовать их для каких-то относительно сложных вещей — тот ещё квест.

Как и с любым низкоуровневым инструментом.

d_a ★★★★★
()

Хочется и то и другое.

и то

Perl/Python.

и другое.

Всякие zsh/psh/etc (но лучше bash, ибо к хорошему быстро привыкаешь).

и то и другое.
Есть ли такое в природе?

Не встречал. Тут вот говорят о PS, но религия не позволяет, поэтому хз.

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

Да-да, конечно. Покажи мне однострочник на поверщели, который делает элементарнейшую вещь - выводит дату, логин и IP коннектов к терминальному серверу. :)

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

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