Pregunta

He estado enamorado de zsh durante mucho tiempo, y más recientemente he estado descubriendo las ventajas del intérprete interactivo ipython sobre python sí. Ser capaz de cd , ls , Ejecutar o es realmente muy práctico. Pero ahora se siente raro tener una concha tan torpe cuando en ipython, y me pregunto cómo podría integrar mi zsh y mi ipython mejor.

Por supuesto, podría volver a escribir mi .zshrc y todos mis scripts en Python, y emular la mayor parte de mi mundo exterior desde ipython, pero no se siente bien. Y estoy obviamente no listo para usar ipython como una concha principal de todos modos.

Por lo tanto, aquí viene mi pregunta: ¿cómo trabajar de forma eficaz entre su concha y su python-bucle de comandos? Me estoy perdiendo algo de estrategia de integración obvio? Debería hacer todo lo que en emacs?

¿Fue útil?

Solución

hice esta pregunta en la lista zsh y esta respuesta trabajó para mí. Tu caso es distinto.

En genutils.py después de la línea

  

Si no depuración:

Eliminar la línea:

  

stat = os.system (cmd)

Reemplazar con:

  

stat =   subprocess.call (cmd, shell = True, ejecutable = '/ bin / zsh')

se ve, el problema es que esa "!" os.system llamada utiliza para ejecutarlo, que por defecto es manky de / bin / sh.

Como dije, que trabajó para mí, aunque no estoy seguro de lo que consiguió borked detrás de las escenas.

Otros consejos

Puede ejecutar comandos de shell se inician con un signo de exclamación y capturar el resultado en una variable pitón. Ejemplo: listado de directorios en el directorio /tmp:

ipy> import os
ipy> tmplist = !find /tmp
ipy> [dir for dir in tmplist if os.path.isdir(dir)]

El objeto de lista es un objeto especial ipython con varios métodos útiles. Ejemplo: lista de archivos que terminan en .pdf

ipy> tmplist.grep(lambda a: a.endswith('.pdf')) # using a lambda
ipy> tmplist.grep('\.pdf$') # using a regexp

Hay un montón de cosas que puede hacer mediante la lectura de la lista de comandos mágicos:

ipy> %magic

Consulte el sección shell de la documentación IPython.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top