La programmazione della shell è divertente. Ma lo è anche Python. Le persone con lo sfondo di C o, soprattutto, le persone che usano Windows non saranno d'accordo. Le persone spesso tendono a preferire l'uso di un'interfaccia grafica basata su quelle a riga di comando. Ma è così totalmente sbagliato. L'interfaccia utente grafica è per le persone che pensano che il software stia facendo ciò che dice la sua descrizione. Ma questo non è sempre il caso. Soprattutto nel caso delle finestre di programmazione della shell in cui virus e malware hanno creato un caos delle dimensioni di un Tornado. Quindi le persone che usano un'interfaccia a riga di comando di solito concordano sul fatto che ciò che stanno facendo è giusto, e sono d'accordo con loro sul fatto che abbiano ragione.

Molte volte di solito ti blocchi e l'intero computer si blocca a causa di un semplice software basato su interfaccia grafica. Lavorare su un'interfaccia a riga di comando è spesso più elegante, veloce e, soprattutto, sai cosa stai eseguendo. Ma ancora una volta, usare shell e scrivere programmi non è qualcosa che tutti preferirebbero fare.

Inoltre, scrivere programmi in C o Java sarebbe in realtà molto più peggio che usare un software basato su interfaccia utente grafica in Windows. Non sto maledendo C o Java qui, è solo che non sono adatti per l'uso quotidiano. Ed è qui che eccellono i linguaggi di scripting come la programmazione Shell e i linguaggi Python. Quindi, oggi siamo in guerra qui quale è più adatto per applicazioni più piccole e più grandi. O è che possiamo effettivamente combinarli entrambi e creare qualcosa di nuovo e migliore dei due. Diamo uno sguardo più approfondito a entrambi e vediamo dove ci porta.

Bash Shell Scripting

Shell Scripting è davvero fantastico. Puoi quasi fare la maggior parte dei tuoi lavori qui in una sola riga di codice. Ad esempio per dire, prendi questo pezzo di codice: -

$ touch file.txt | echo -e 'ciao \ n Nuovo \ n mondo \ n ciao \ n Ciao' >> file.txt | cat file.txt | ordina | uniq | wc -l

Quindi, come puoi vedere, molti script di shell stanno succedendo qui, ma cosa sta succedendo esattamente? Prima il '| 'è noto come pipe. Viene utilizzato per trasferire l'output di un file all'altro. La sintassi 'touch' viene utilizzata per creare qualsiasi file e la sintassi dell'eco viene utilizzata per stampare qualsiasi istruzione. Le frecce a doppia faccia destra '>>' vengono utilizzate per inserire l'output in qualsiasi file o programma. La sintassi 'cat' viene utilizzata per leggere il contenuto di un file. L'ordinamento viene utilizzato per ordinare tutto in ordine e 'uniq' per rimuovere i duplicati dall'ordinamento. Il 'wc' è usato per contare le linee e -l è solo una bandiera per stamparle. Quindi tutti questi comandi concatenati eseguono le seguenti operazioni.

  1. Innanzitutto viene creato un file con il nome file con estensione txt per informare che è un file di testo.
  2. In secondo luogo, echo -e viene utilizzato per stampare più parole all'interno del file file.txt e 'barra n' o '\ n' viene utilizzata per inserire una nuova riga o passare alla riga successiva.
  3. Dopo aver inserito le stringhe nel file, il file viene letto, ordinato in ordine e trasferito alla sintassi uniq per rimuovere eventuali duplicati esistenti, qui che nel nostro caso è 'ciao'.
  4. Infine, stampiamo il numero di righe usando 'wc -l' per contare e stamparlo sullo schermo del terminale.

Quindi, sebbene quanto sopra sia solo una riga di codice, può tendere a complicarsi quando vengono inserite più condizioni. Pertanto, gli script di shell sono buoni, ma non possono essere utilizzati per fare nuovi lavori in ogni momento. A volte, vuoi che le cose siano più semplici, semplici come un'interfaccia utente grafica. Gli script Shell sono in realtà molto buoni per l'esecuzione di script batch e l'esecuzione di lavori ripetuti, ma allo stesso tempo presentano alcuni svantaggi: -

  1. Gli script Shell tendono a diventare estremamente complicati man mano che diventano grandi.
  2. Il riutilizzo degli script non è quasi nessuno. Quello che intendo qui è che gli script bash sono estremamente difficili da inserire in C o altri codici Java.
  3. Funzionalità avanzate come l'analisi HTML non sono facilmente disponibili per bash.

Tuttavia, c'è Python qui per il salvataggio e il sostituto più adatto per lo stesso. Ma gli script di Bash Shell sono totalmente sostituibili? Diamo un'occhiata.

Corsi consigliati

  • Formazione sulla certificazione online in J2EE completa
  • Formazione professionale sulla programmazione R
  • Formazione sulla certificazione online nella programmazione Go
  • Formazione sul programma Haskell

Scripting di Python Shell

Python è installato di default su quasi tutti i sistemi Linux e UNIX. A volte la distribuzione può avere una versione precedente, ma può essere aggiornata con un semplice comando. La programmazione di Python Shell è molto più facile da capire e da scrivere anche per i principianti. Inoltre, per impostazione predefinita Python ha lo stile di Read Eval Print Loop che aiuta a provare nuovi codici nell'interprete. Ma usare semplicemente Python può essere un po 'difficile senza l'aiuto dello script di shell bash. Inoltre, nel nostro precedente programma a una riga, abbiamo usato la sintassi "uniq" per rimuovere i duplicati, ma non ci mostrava quali fossero i duplicati. Quindi, consente di scrivere un programma Python per fare lo stesso: -

#! / usr / bin / env pythonimport sys # importando moduli di sistema per lavorare con i file di directory se __name__ == “__main __”: # A partire da un dizionario vuoto qui. Che è definito come l'ordine # Tutte le chiavi di questo dizionario appaiono come un nome e i valori specificati per loro # saranno la quantità di volte in cui apparirà quel nome specifico.order = () # sys.stdin è un oggetto usato per i file. Tutte quelle funzioni a cui viene applicato

# un oggetto file può essere utilizzato anche per sys.stdin.

per ordine in sys.stdin.readlines ():

order = order.strip ()

se l'ordine negli ordini:

ordini (ordine) + = 1

altro:

ordini (ordine) = 1

per ordine, conta in ordini.iteritem ():

sys.stdout.write (“% d \ t% s \ n”% (conteggio, ordine))

Ora, questo file legge prima l'input dall'oggetto sys.stdin. Tutto l'output viene scritto nell'oggetto sys.stdout. Dopo aver creato questo script, supponendo che tu l'abbia nominato come order.py, puoi semplicemente eseguire il seguente script shell nel terminale e troverai il conteggio totale di tutte le stringhe duplicate.

$ cat file.txt | python order.py

Allo stesso modo, possiamo anche risolvere questo problema usando la sintassi dell'ordinamento: -

$ cat file.txt | python order.py | ordina -rn

Python Shell vs Bash Shell Scripting di programmazione

Ora abbiamo visto come combinare gli script python e shell per creare una catena di comandi ed eseguirli insieme. Ora facciamo un ulteriore passo avanti e vediamo se Python può sostituire totalmente Bash Shell.

Parlando della programmazione della shell bash, in termini di prestazioni, bash batte totalmente la merda di Python. Ma se lo confronti con tipi di dati e altre cose avanzate, bash non ha molta compatibilità. Il tempo di avvio di uno script di shell bash è di 2, 8 mili secondi mentre quello di Python è di 11, 1 mili secondi. Per essere più franco, bash è un linguaggio generico proprio come Python, ma entrambi hanno i loro punti di forza e di debolezza. La programmazione della shell Bash è il terminale predefinito nella maggior parte delle distribuzioni Linux e quindi sarà sempre più veloce in termini di prestazioni. Ma questo significa che può sostituire totalmente Python? No. Quando si ha a che fare con programmi di grandi dimensioni, Bash continuerà a complicarsi, mentre Python no. Python può anche essere usato come linguaggio orientato agli oggetti per quanto ne so. Se sei solo un principiante, potresti non conoscere nemmeno la differenza tra i due. Python è il linguaggio di scripting più elegante, anche più di Ruby e Perl. D'altra parte, la programmazione della shell Bash è davvero eccellente nel convogliare l'output di un comando in un altro.

Shell Scripting è semplice e non è potente come Python. Non si occupa di framework ed è difficile andare avanti con programmi relativi al web usando Shell Scripting. Il vero potere dello scripting della shell risiede nell'editor o nella sed Stream Text, nei programmi Awk e in app simili.

Gestione dei file e sviluppo di applicazioni Web

Bash Shell Scripting funziona in modo impeccabile e veloce quando si tratta di file. Gestendo i file, intendo copiare, clonare dischi, scrivere app di backup per reti, server ftp, archiviare input di file e accedervi in ​​seguito e trasferirli successivamente su qualcos'altro con l'aiuto di pipe. Python d'altra parte è più utile per gestire blocchi di dati come la lettura di dati da un file e l'elaborazione dei dati. Se sono più specifico, bash non è nemmeno un linguaggio di programmazione. È più una semplice shell che ha avuto come obiettivo la gestione dei file di sistema usando la riga di comando in modo che il processo sia più veloce e veloce.

Quindi, se conosci correttamente la programmazione della shell bash, allora sai anche che le variabili e gli ambiti in bash sono estremamente limitati. Python d'altra parte è più un linguaggio di script di shell che un linguaggio di programmazione. Se chiamiamo Bash un linguaggio di programmazione, è più come dire a Python che è un linguaggio di programmazione shell orientato agli oggetti. Si può gestire Python in modo orientato agli oggetti, ma non sarà mai orientato esclusivamente agli oggetti come C o Java. Allo stesso modo, Bash è un linguaggio di scripting; è meglio usato come qualcosa che è necessario per gestire rapidamente i file piuttosto che scrivere programmi di grandi dimensioni in esso. Inoltre, sebbene Python sia un linguaggio di scripting di shell, in realtà si occupa della propria shell. Ad esempio, spostare tutti i file che si trovano sul desktop in un'altra directory casuale tramite shell Bash andrebbe in questo modo:

$ cd Desktop $ mv * randomDirectory

D'altra parte, fare la stessa cosa in Python è un po 'più complicato. Va qualcosa del genere: -

import os, glob per fname in glob.glob ('*'): os.rename (fname, 'randomdirectory')

Tuttavia, nella migliore delle ipotesi, si può renderlo il più compatto in questo modo: -

import os, glob (os.rename (fname, 'randomdirectory') per fname in glob.glob ('*'))

Durante l'apprendimento di qualsiasi lingua, le persone spesso ti diranno come pulire le basi e tutte quelle cose, ma non ti diranno come affrontare prima il sistema stesso che è il più importante. Inoltre, Python e Bash sono entrambi linguaggi di scripting Shell, il che significa che entrambi sono sviluppati principalmente per gestire il sistema e i suoi file.

Bash dentro Python?

Sì, hai letto bene. Fino ad ora abbiamo letto come introdurre gli script Python all'interno di Shell. Ma possiamo anche introdurre Shell Script all'interno degli script di Python. Prendi questo per esempio: - Digita 'apt-get update' nella shell di Python? Ovviamente otterrai alcuni errori come una sintassi non valida. Quindi, il problema è che se vuoi usare i codici bash come 'ls, cd, mv' o qualsiasi altra cosa in Python, dovrai importare il modulo OS. Ora, fai una cosa, copia il seguente codice e incollalo nella Shell di Python, e controlla come funziona: -

$ python >>> dal sistema di importazione os * >>> ('sudo apt-get update')

E ora funziona … yay. Questo è un altro modo su come far funzionare insieme gli script Python e Bash. Inoltre, c'è un altro modulo Python che è stato creato appositamente per funzionare con bash. Questo modulo è noto come pexpect. Pexpect è un modulo Python che viene utilizzato per generare processi figlio, controllandoli e restituendo risultati secondo la richiesta del processo figlio. Il modulo pexpect ha un'interfaccia estremamente semplice per importare moduli richiesti e processi figlio al suo interno ed eseguirli di conseguenza. Basta installare il pip nel proprio sistema per installare pexpect e si può installare il modulo come segue: -

$ pip installa pexpect

La versione di Pexpect richiede una versione di Python maggiore di 3.3 o specificamente 2.7.

In realtà c'è molto di più nel mescolare python e bash e niente funziona meglio di una miscela di script di Python e Bash. Questa miscela rende lo script veloce grazie a Bash e include funzionalità avanzate grazie a Python. È possibile leggere informazioni su pexpect e la sua documentazione su https://pexpect.readthedocs.org/online.

Articoli consigliati

Ecco alcuni articoli che ti aiuteranno a ottenere maggiori dettagli su Bash Scripting e Python, quindi passa attraverso il link.

  1. Python vs JavaScript-Differenze di valore
  2. Le 25 migliori domande e risposte sull'intervista a Python
  3. Differenze tra Python e JavaScript
  4. R Programmazione vs Python
  5. Gestione dei file PHP

Categoria: