Domanda

Sono stato innamorato di zsh per lungo tempo, e più di recente mi è stato scoprire i vantaggi del interprete interattivo ipython sopra python stessa. Essere in grado di cd , ls , Esegui o è davvero molto utile. Ma ora ci si sente strano avere una shell come goffo quando in ipython, e mi chiedo come ho potuto integrare la mia e la mia zsh ipython migliore.

Naturalmente, ho potuto riscrivere il mio .zshrc e tutti i miei script in python, e di emulare la maggior parte del mio mondo shell da ipython, ma non mi sembra giusto. E io sono, ovviamente, non pronto per l'uso ipython come un guscio principale comunque.

Quindi, ecco che arriva la mia domanda: come si fa a lavorare in modo efficiente tra il guscio e il vostro python comando-ciclo? Mi sto perdendo un po 'di strategia di integrazione ovvio? Devo fare tutto questo in Emacs?

È stato utile?

Soluzione

Ho fatto questa domanda sulla lista zsh e questa risposta lavorato per me. YMMV.

Nel genutils.py dopo la riga

  

se non di debug:

Rimuovere la riga:

  

stat = os.system (cmd)

Sostituirlo con:

  

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

che si vede, il problema è che che "!" chiamata utilizza os.system per eseguirlo, che per default è manky vecchia / bin / sh.

Come ho detto, ha funzionato per me, anche se non sono sicuro di quello che viene però borked dietro le quinte.

Altri suggerimenti

È possibile eseguire comandi di shell da loro a partire con un punto esclamativo e catturare l'output in una variabile pitone. Esempio: vendita di directory nella vostra directory /tmp:

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

L'oggetto lista è un oggetto speciale ipython con diversi metodi utili. Esempio: l'elenco dei file che terminano con .pdf

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

Ci sono un sacco di cose che potete fare leggendo l'elenco dei comandi magici:

ipy> %magic

leggi sezione shell di la documentazione ipython.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top