Sposta gli script di shell Sh.py è qui ed è fantastico.

Sposta gli script di shell Sh.py è qui ed è fantastico. / Linux

Scommetto che non sapevi che potresti scrivere script di shell in Python.

Per qualsiasi programmatore o amministratore di sistema, lo scripting di shell è un'abilità vitale da padroneggiare. Ti consente di automatizzare compiti noiosi, trasformandoli in azioni coerenti e ripetibili. Il problema è che può essere un po 'scoraggiante, specialmente se si considera che la maggior parte dei dialoghi con shell-scripting non ha la finezza sintattica trovata in Python e Ruby..

Sarò anche blunter. La maggior parte degli script di shell è più brutta rispetto al pug medio.

Inoltre, c'è una varietà di shell disponibili per piattaforme tipo UNIX, tra cui Bash, CSH, KSH e (il mio preferito) FISH. Di conseguenza, scrivere script coerenti e di shell che funzionano su ogni piattaforma può essere difficile.

Ci deve essere un modo migliore, giusto?

Presentazione di sh.py

C'è. Quando non scrivo per MakeUseOf, sto scrivendo codice in Python per divertimento e profitto. Mi piace molto Python per la sua flessibilità, la sua bellezza intrinseca e il modo in cui impone la scrittura di un buon codice in base alla progettazione. Se questo ti suona bene, ma non conosci già questo fantastico linguaggio, perché non dai un'occhiata a questi cinque grandi siti web per imparare la programmazione Python I 5 migliori siti web per imparare la programmazione Python I 5 migliori siti web per imparare la programmazione Python imparare la programmazione Python? Ecco i modi migliori per imparare Python online, molti dei quali sono completamente gratuiti. Leggi di più ?

Mi sono imbattuto in questa fantastica libreria di qualche mese fa chiamata sh.py, che ti permette di chiamare programmi, passare parametri e gestire uscite, tutto all'interno dei confini di un programma Python.

Che cosa significa questo? In poche parole, significa che hai la piena funzionalità degli script di shell, ma all'interno di un linguaggio che è facile da leggere, è di natura modulare e supporta la programmazione orientata agli oggetti. Cool, giusto?

Quindi, come lo usiamo?

Sto facendo alcune supposizioni su di te. Il primo è che stai usando Linux, OS X o FreeBSD. Come è adesso, sh.py non funziona su Windows. Tuttavia, se necessario, è sempre possibile installare una macchina virtuale Linux. Il mio collega Justin Pot ha scritto un articolo molto utile su questo argomento, che puoi controllare qui Come utilizzare le immagini virtuali di VirtualBox per testare ed eseguire sistemi operativi open source [Linux] Come utilizzare le immagini virtuali di VirtualBox per testare ed eseguire sistemi operativi open source [Linux] Prova rapidamente una vasta gamma di sistemi operativi open source, alcuni con cui hai familiarità e altri no. Puoi iniziare a navigare su Virtualboxes, un sito Web che richiede quasi tutto il lavoro ... Per saperne di più .

La seconda ipotesi che sto facendo è che si sta eseguendo una versione recente di Python (o 2.7 o 3.2) e si è installato il gestore pacchetti PIP. Se questo non è il caso, dai un'occhiata alla documentazione ufficiale di Python.

Tutto bene? Quindi continueremo.

Iniziamo la codifica

In un terminale, installare sh.py con il seguente comando.

sudo pip installa sh

Il motivo per cui stiamo usando 'sudo' qui è perché abbiamo bisogno di elevare le nostre autorizzazioni per aggiungere nuovi pacchetti Python. Se sh.py si installa correttamente, vedrai le seguenti linee presenti nel tuo terminale.

Download / disimballaggio sh Download di sh-1.09.tar.gz Esecuzione setup.py egg_info per il pacchetto sh Installazione dei pacchetti raccolti: sh Esecuzione setup.py install per sh Installato con successo sh Pulizia in corso ... 

Se non lo dice, le probabilità sono buone a causa del fallimento dell'installazione. Triste. In tal caso, prova a verificare le autorizzazioni e a installare PIP. Se non c'è ancora, prova a chiedere su Stack Overflow (che è stato precedentemente discusso 10 siti Web che possono aiutare il programmatore principiante con frammenti di codice di esempio 10 siti Web che possono aiutare il programmatore principiante con frammenti di codice di esempio Ulteriori informazioni dal nostro editor di Internet, Saikat Basu ) o MakeUseOf Answers.

Ora che è ordinato, crea una nuova directory. È qui che inseriremo tutto il nostro codice. Apri un editor di testo e crea un file chiamato "shtest.py". Qui, creeremo semplicemente un nuovo file e quindi elenceremo il contenuto della directory in cui ci troviamo. Sembra buono?

In shtest.py, aggiungi le seguenti linee.

#! / usr / bin / env python import sh
sh.touch ('hello') stampa (sh.ls ('- l'))

Roba semplice qui Rompiamo questo.

#! / usr / bin / env python

Questa linea è chiamata hash-bang e indica alla shell di aprire questo file come programma Python. Questo ti permette di aprirlo come faresti con uno script di shell (./shtest.py), invece di aprirlo direttamente con Python (python shtest.py). Cool, giusto?

importazione sh

Questa linea importa la libreria sh che abbiamo installato pochi istanti fa. Non possiamo andare avanti senza questo, quindi assicurati che sia nel tuo codice!

sh.touch ( 'ciao')

Potresti avere familiarità con il comando di Linux, 'touch'. Questo crea un file vuoto con nome file specificato. Qui, chiamiamo direttamente "touch" da Python. Come puoi vedere, abbiamo preimpostato questo con 'sh.', E lo passiamo a parametro 'ciao'.

stampa (sh.ls ( '- l'))

Si potrebbe avere familiarità con il comando 'print', che emette il testo sulla console. Qui, lo stiamo passando 'sh.ls' come parametro. Questo chiama il programma Linux ls, che elenca il contenuto di una directory. Stiamo anche passando un parametro di '-l', che stampa informazioni più dettagliate sul contenuto della directory in cui lo eseguiamo.

Funziona? Vedi di persona.

Quelli di voi con gli occhi da falco noteranno che c'è un altro file in giro in quella directory chiamata 'gitsh.py'. Cosa potrebbe esserci dentro?

Comandi secondari

sh.py ha alcuni ganci per i programmi più popolari già cotti. Questi includono git, sudo e un numero significativo di utilità Linux. Questi rendono l'interazione con questi servizi all'interno di Python ancora più semplice.

Com'è facile? Bene, ho intenzione di mostrarvi come inizializzare un repository Git vuoto in sole tre righe di codice. Per prima cosa, crea un file chiamato "gitsh.py" e aprilo nel tuo editor di testo preferito.

All'interno, scrivi le seguenti tre righe.

 #! / usr / bin / env python da sh import git print (git.init ())

La maggior parte di questo dovrebbe essere abbastanza familiare per te. Noterai che abbiamo importato "git" da "sh". Questo significa che abbiamo importato una specifica funzionalità da un modulo, ignorando tutto il resto.

Dopodiché, inizializziamo il nostro repository.

stampa (git.init ())

Abbiamo parlato di stampa. Dovresti notare che stiamo chiamando 'git' senza '.sh' procedendo. Questo perché abbiamo importato in modo specifico la funzionalità git dalla libreria 'sh'.

E questo è tutto. Quando eseguiamo gitsh.py, dovremmo vedere le seguenti linee apparire nel tuo terminale.

Conclusione

Questa è stata un'introduzione ragionevolmente facile a sh.py. Se sei desideroso di saperne di più, consulta la documentazione ufficiale qui. Tuttavia, se rimani bloccato, sentiti libero di lasciarmi un commento qui sotto e cercherò di aiutarti.

Scopri di più su: Programming, Python, Terminal.