Ben (gerçekten) fonksiyonel programlama için acemi (aslında sadece python kullanarak temas vardı) ama bir kabuk ortamında bazı liste yoğun görevler için iyi bir yaklaşım gibi görünüyor.
Böyle bir şey yapmak isterdim:
$ [ git clone $host/$repo for repo in repo1 repo2 repo3 ]
Bu tür özelliklere sahip herhangi bir Unix kabuğu var mı? Ya da python içinden kolay kabuk erişimine (komutlar, env / vars, readline, vb ...) izin veren bazı özellikler (fikir, python'un interaktif yorumlayıcısını bash'ın yerine kullanmaktır).
DÜZENLE:
Belki karşılaştırmalı bir örnek açıklığa kavuşabilirdi. Diyelim ki dir / dosyadan oluşan bir listem var :
$ FILES=( build/project.rpm build/project.src.rpm )
Ve gerçekten basit bir görev yapmak istiyorum: tüm dosyaları dist / AND'e sisteme kopyalamak (bir oluşturma işleminin parçası):
Bash kullanma:
$ cp $ {dosya [*]} dist / $ cd dist && rpm -Uvh $ ($ {files [*]} içindeki f için; $ f basename yapın; tamamlandı))
Bir "pitonik kabuk" yaklaşımı kullanarak (dikkat: bu hayali koddur):
FILES içindeki dosya için $ cp [os.path.join ('dist', os.path.basename (dosya))] 'dist'
Farkı görebiliyor musunuz? Demek istediğim bu. Henüz bu tür şeylerle bir kabuktan nasıl çıkamazsınız? Kabuktaki listeleri işlemek için gerçek bir acıdır, hatta çok yaygın bir görevdir: dosya listesi, PID listesi, her şeyin listesi.
Ve gerçekten, gerçekten, önemli bir nokta: herkesin bildiği sözdizimi / araçlar / özellikler kullanmak: sh ve python.
IPython iyi bir yönde dikiş yapıyor, ancak şişti: var name '$' ile başlıyorsa bunu yapar, '$$' ise bunu yapar. Sözdizimi "doğal" değil, birçok kural ve "geçici çözüm" ( [ ln.upper() for ln in !ls ]
-> sözdizimi hatası)