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

command.com? А, не, там встроенные команды есть.

arturpub ★★
()

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

Но до мощи 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 ★★★
()

escript

anonymous
()

Есть 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 ★★★★★
()
Ответ на: комментарий от thesis

Хорошо, я буду знать, что он тебе не нравится.

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