Jestem (naprawdę) nowicjuszem w programowaniu funkcjonalnym (w rzeczywistości miałem z nim kontakt tylko za pomocą Pythona), ale wydaje się być dobrym podejściem do niektórych zadań wymagających dużej ilości list w środowisku powłoki.
Chciałbym zrobić coś takiego:
$ [ git clone $host/$repo for repo in repo1 repo2 repo3 ]
Czy jest jakaś powłoka uniksowa z tego rodzaju funkcjami? A może jakaś funkcja umożliwiająca łatwy dostęp do powłoki (polecenia, env / vars, readline itp.) Z poziomu Pythona (pomysł polega na użyciu interaktywnego interpretera Pythona jako zamiennika bash).
EDYTOWAĆ:
Może wyjaśniłby to przykład porównawczy. Powiedzmy, że mam listę złożoną z katalogu / pliku :
$ FILES=( build/project.rpm build/project.src.rpm )
Chcę wykonać naprawdę proste zadanie: skopiuj wszystkie pliki do dist / AND zainstaluj je w systemie (jest to część procesu kompilacji):
Za pomocą bash:
$ cp $ {pliki [*]} dist / $ cd dist && rpm -Uvh $ (dla f w $ {pliki [*]}; do basename $ f; gotowe))
Korzystanie z podejścia „powłoki pythonowej” (uwaga: jest to urojony kod):
$ cp [os.path.join ('dist', os.path.basename (plik)) dla pliku w PLIKACH] 'dist'
Czy widzisz różnicę ? O tym właśnie mówię. Jak jeszcze nie wyjść z powłoki z tego typu wbudowanymi funkcjami? Naprawdę trudno jest obsługiwać listy w powłoce, nawet jeśli jest to tak częste zadanie: lista plików, lista PID, lista wszystkiego.
I naprawdę, bardzo ważny punkt: używając składni / narzędzi / funkcji, które wszyscy już znają: sh i python.
IPython wydaje się być w dobrym kierunku, ale jest rozdęty: jeśli nazwa var zaczyna się od „$”, robi to, jeśli „$$” to robi. Jego składnia nie jest „naturalna”, więc wiele reguł i „obejść” ( [ ln.upper() for ln in !ls ]
-> błąd składni)