Я (действительно) новичок в функциональном программировании (на самом деле имел дело только с ним с помощью Python), но, похоже, является хорошим подходом для некоторых задач с интенсивным списком в среде оболочки.
Я хотел бы сделать что-то вроде этого:
$ [ git clone $host/$repo for repo in repo1 repo2 repo3 ]
Есть ли оболочка Unix с такими функциями? Или, может быть, какая-то функция, позволяющая легкий доступ к оболочке (команды, env / vars, readline и т. Д.) Изнутри python (идея состоит в том, чтобы использовать интерактивный интерпретатор python вместо замены bash).
РЕДАКТИРОВАТЬ:
Может быть, сравнительный пример уточнит. Допустим, у меня есть список, состоящий из dir / file :
$ FILES=( build/project.rpm build/project.src.rpm )
И я хочу сделать действительно простую задачу: скопировать все файлы в dist / и установить его в системе (это часть процесса сборки):
Используя bash:
$ cp $ {files [*]} dist / $ cd dist && rpm -Uvh $ (для f в $ {files [*]}; сделать базовое имя $ f; сделано))
Используя подход «pythonic shell» (осторожно: это воображаемый код):
$ cp [os.path.join ('dist', os.path.basename (file)) для файла в файлах] 'dist'
Вы видите разницу? Вот о чем я говорю. Как еще нельзя выйти из оболочки с такими встроенными вещами? Работать со списками в оболочке очень сложно, даже если это такая распространенная задача: список файлов, список идентификаторов PID, список всего.
И действительно, очень важный момент: используя синтаксис / инструменты / функции, которые все уже знают: sh и python.
IPython выглядит хорошо, но он раздут: если имя переменной начинается с «$», он делает это, если «$$» это делает. Это синтаксис не "естественный", так много правил и "обходных путей" ( [ ln.upper() for ln in !ls ]
-> синтаксическая ошибка)