Soy (realmente) novato en la programación funcional (de hecho, solo tuve contacto con él usando python) pero parece ser un buen enfoque para algunas tareas intensivas en listas en un entorno de shell.
Me encantaría hacer algo como esto:
$ [ git clone $host/$repo for repo in repo1 repo2 repo3 ]
¿Hay algún shell de Unix con este tipo de características? O tal vez alguna característica para permitir un fácil acceso de shell (comandos, env / vars, readline, etc.) desde Python (la idea es utilizar el intérprete interactivo de Python como reemplazo de bash).
EDITAR:
Quizás un ejemplo comparativo aclararía. Digamos que tengo una lista compuesta de dir / archivo :
$ FILES=( build/project.rpm build/project.src.rpm )
Y quiero hacer una tarea realmente simple: copiar todos los archivos para dist / AND instalarlo en el sistema (es parte de un proceso de compilación):
Usando bash:
$ cp $ {archivos [*]} dist / $ cd dist && rpm -Uvh $ (para f en $ {archivos [*]}; nombre base $ f; hecho))
Usando un enfoque de "capa pitónica" (precaución: este es un código imaginario):
$ cp [os.path.join ('dist', os.path.basename (file)) para el archivo en ARCHIVOS] 'dist'
Puedes ver la diferencia ? ESO es de lo que estoy hablando. ¿Cómo no se puede salir de un shell con este tipo de cosas incorporadas todavía? Es realmente difícil manejar listas en shell, incluso si es una tarea tan común: lista de archivos, lista de PID, lista de todo.
Y un punto muy, muy importante: usar la sintaxis / herramientas / características que todos ya conocen: sh y python.
IPython parece estar en una buena dirección, pero está hinchado: si el nombre var comienza con '$', lo hace, si '$$' lo hace. Su sintaxis no es "natural", hay muchas reglas y "soluciones" ( [ ln.upper() for ln in !ls ]
-> error de sintaxis)