Я (действительно) новичок в функциональном программировании (на самом деле имел дело только с ним с помощью 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 $(for f in ${files[*]}; do basename $f; done))
Используя подход "pythonic shell" (осторожно: это воображаемый код):
$ cp [ os.path.join('dist', os.path.basename(file)) for file in FILES ] 'dist'
Вы видите разницу? Вот о чем я говорю. Как не может выйти из оболочки с такими встроенными вещами? Работать со списками в оболочке очень сложно, даже если это такая распространенная задача: список файлов, список PID, список всего.
И действительно, очень важный момент: используя синтаксис / инструменты / функции, которые все уже знают: sh и python.
IPython выглядит хорошо, но он раздут: если имя переменной начинается с «$», он делает это, если «$$» это делает. Его синтаксис не является "естественным", поэтому существует много правил и "обходных путей" ([ ln.upper() for ln in !ls ]
-> синтаксическая ошибка)