Sommario: E 'possibile configurare ipython a guardare come un terminale di riga di comando DOS di base/bash per l'utente medio (cd, ls, mkdir, rm ... ecc.), e quindi esporre alcuni comandi proprietari extra?Come configurare ipython come una shell di comando semplificato per l'utente medio
Approfondimenti: Io lavoro per una società di videogiochi in cui gli utenti non hanno mai sperimentato una CLI "buono" in una pipeline di produzione. Quindi in risposta ho lavorato per un po 'di tempo scrivendo una CLI usando cmd.py in python, ricreando i comandi DOS comunemente usati e poi aumentandoli con i miei comandi personalizzati per fare varie cose, es: saltare rapidamente attraverso le cartelle di produzione predefinite , comandi di gestione perforce semplificati, trovare/importare i file con pattern ant-glob ricorsivi nel nostro strumento di creazione ... ecc. ecc ...
Nel mezzo del processo mi sono imbattuto in ipython. Non ho molta familiarità con esso, ma sento già che è quello che dovrei usare, in quanto fa un sacco di quello che voglio gratuitamente. Gestisce perfettamente i colori ansi. Tutti i comandi della shell sono disponibili tramite, è possibile utilizzare "!" "|,>, <" e tutti costruiti in funzioni di shell per libero, i vantaggi vanno avanti e avanti ...
L'unico avvertimento è che il mio pubblico mirato è facilmente intimiditi dalla CLI di ... e così quando si digita "più textfile.txt" come input, si aspettano che il comportamento predefinito dos di stampare il contenuto del file, e non:
In [42]: more textfile.txt
File "<ipython-input-42-e442b4ca857b>", line 1
more file.txt
^
SyntaxError: invalid syntax
Naturalmente, " ! more textfile.txt "farebbe quello che si aspetta, ma non voglio che debbano digitare"! " per essenzialmente il 95% dei comandi che avrebbero usato.
Quindi sto cercando un modo per lanciare ipython in maniera del tutto semplificata dove nel mio ideale (fantasia forse) mondo:
- Tutti i comandi di shell (cd, ls/dir, mkdir, più , rm/del, ecc ...) sarebbero accessibili in prima linea senza "!"
- Tutti i comandi python (import, def, class, for, print, while, etc ...) sarebbero inaccessibili, ad eccezione di alcuni comandi proprietari predefiniti per eseguire varie operazioni di pipeline, forse lasciare accessibili i comandi aritmetici di base?
E come bonus: un modo per alternare ipython di default e la versione di sostituzione shell di comando molto sobrio e semplificato sto sognando ... Es: digitando "normale" sarebbe ripristinare tutti il comportamento predefinito di ipython. .. e digitando "cli" si tornerebbe alla versione semplificata.
Nota finale: Quello che sto cercando è probabile che prendono in giro e ho probabilmente dovrebbe attaccare con il lancio python.exe in una shell di comando con il mio modo di scrivere goffo CLI e chiamare un giorno ... Ma io Ho capito che se quello che vorrei che iPython faccia da remoto fosse possibile, Stackoverflow è dove troverei la risposta rapidamente :)
Mi sembra che quello che vuoi sia scrivere la tua shell che ha le caratteristiche specifiche che vuoi e non le altre? Ipython potrebbe essere un buon modello di codice per questo. – aestrivex
C'è qualcos'altro oltre a '!' Che non vuoi apparire in questa tua CLI? Anche escludendo questo indicatore speciale che ciò che si sta digitando un comando può imporre alcuni vincoli sulla nominare le cose (file, funzioni etc.). –
dai un'occhiata a% alias'. Digitare '% rehashx' allora avete tutti i binari nel tuo percorso come, pure, gli alias e comandi come' più file.txt' funziona. –