La programmation Shell est amusante. Mais Python l'est aussi. Les personnes ayant des antécédents de C, ou surtout les personnes qui utilisent des fenêtres ne seront pas d'accord. Les gens ont souvent tendance à préférer utiliser une interface graphique plutôt qu'une interface en ligne de commande. Mais c'est totalement faux. L'interface utilisateur graphique est destinée aux personnes qui pensent que le logiciel fait ce que sa description dit. Mais ce n'est pas toujours le cas. Surtout dans le cas des fenêtres de programmation shell où les virus et malwares ont créé des ravages de la taille d'une tornade. Donc, les gens qui utilisent une interface de ligne de commande conviennent généralement que ce qu'ils font est bien, et je suis d'accord avec eux qu'ils ont raison.

Plusieurs fois, vous seriez généralement coincé et tout l'ordinateur se bloque en raison d'un simple logiciel basé sur une interface graphique. Travailler sur une interface de ligne de commande est souvent plus élégant, rapide et surtout vous savez ce que vous exécutez. Mais encore une fois, l'utilisation de shells et d'écriture de programmes n'est pas quelque chose que tout le monde préférerait faire.

En outre, écrire des programmes en C ou Java serait en réalité bien pire que d'utiliser un logiciel basé sur une interface utilisateur graphique sous Windows. Je ne maudis pas C ou Java ici, c'est juste qu'ils ne conviennent pas à un usage quotidien. Et c'est là que les langages de script comme la programmation Shell et les langages Python excellent. Donc, aujourd'hui, nous sommes en guerre ici, lequel convient mieux aux applications plus petites et plus grandes. Ou est-ce que nous pouvons réellement combiner les deux ensemble et faire quelque chose de nouveau et de meilleur à partir des deux. Jetons un regard plus approfondi sur les deux et voyons où cela nous mène.

Bash Shell Scripting

Shell Scripting est vraiment génial. Vous pouvez presque faire la plupart de vos travaux ici en une seule ligne de code. Par exemple pour dire, prenez ce morceau de code: -

$ touch file.txt | echo -e 'bonjour \ n Nouveau \ n Monde \ n bonjour \ n Bonjour' >> file.txt | cat file.txt | trier | uniq | wc -l

Donc, comme vous pouvez le voir, beaucoup de scripts shell se déroulent ici, mais que se passe-t-il exactement? D'abord le '| 'est connu comme le tuyau. Il est utilisé pour transférer la sortie d'un fichier vers un autre. La syntaxe «tactile» est utilisée pour créer n'importe quel fichier et la syntaxe écho est utilisée pour imprimer n'importe quelle instruction. Les flèches doubles à droite «>>» sont utilisées pour insérer la sortie dans n'importe quel fichier ou programme. La syntaxe 'cat' est utilisée pour lire le contenu d'un fichier. Trier est utilisé pour trier tout dans l'ordre et 'uniq' est utilisé pour supprimer les doublons du tri. Le 'wc' est utilisé pour compter les lignes et -l est juste un drapeau pour les imprimer. Donc, toutes ces commandes chaînées font ce qui suit.

  1. Tout d'abord, un fichier est créé avec le fichier de nom avec l'extension txt pour informer qu'il s'agit d'un fichier texte.
  2. Deuxièmement, echo -e est utilisé pour imprimer plusieurs mots à l'intérieur du fichier file.txt et 'slash n' ou '\ n' est utilisé pour entrer une nouvelle ligne ou passer à la ligne suivante.
  3. Après avoir entré des chaînes dans le fichier, le fichier est lu, trié dans l'ordre et transféré dans la syntaxe uniq pour supprimer tous les doublons existants, ici qui dans notre cas est «bonjour».
  4. Enfin, nous imprimons le nombre de lignes en utilisant 'wc -l' pour compter et l'imprimer sur l'écran du terminal.

Ainsi, bien que ce qui précède ne soit qu'une ligne de code, cela peut avoir tendance à se compliquer lorsque davantage de conditions sont insérées. Ainsi, les scripts shell sont bons, mais ils ne peuvent pas être utilisés pour faire de nouveaux travaux tout le temps. Parfois, vous voulez que les choses soient plus simples, aussi simples qu'une interface utilisateur graphique. Les scripts shell sont en fait très bons pour exécuter des scripts batch et effectuer des tâches répétées, mais en même temps, ils présentent certains inconvénients: -

  1. Les scripts shell ont tendance à devenir extrêmement compliqués à mesure qu'ils deviennent volumineux.
  2. La réutilisation des scripts est presque nulle. Ce que je veux dire ici, c'est que les scripts bash sont extrêmement difficiles à insérer dans C ou d'autres codes Java.
  3. Les fonctionnalités avancées telles que l'analyse HTML ne sont pas facilement disponibles pour bash.

Cependant, il y a Python ici pour le sauvetage et le remplacement le plus approprié pour le même. Mais le script Bash Shell est-il totalement remplaçable? Nous allons jeter un coup d'oeil.

Cours recommandés

  • Formation de certification en ligne complète sur J2EE
  • Formation professionnelle en programmation R
  • Formation de certification en ligne dans la programmation Go
  • Formation sur le programme Haskell

Script de shell Python

Python est installé par défaut sur presque tous les systèmes Linux et UNIX. Parfois, la distribution peut avoir une version plus ancienne, mais elle peut être mise à jour par une simple commande. La programmation Python Shell est beaucoup plus facile à comprendre et plus propre à écrire, même pour les débutants. En outre, par défaut, Python a le style de lecture de boucle d'impression Eval qui aide à essayer de nouveaux codes dans l'interpréteur. Mais utiliser python peut être un peu difficile sans l'aide de scripts shell bash. En outre, dans notre précédent programme d'une ligne, nous avons utilisé la syntaxe «uniq» pour supprimer les doublons, mais elle ne nous montrait pas quels étaient les doublons. Alors, écrivons un programme python pour faire de même: -

#! / usr / bin / env pythonimport sys # importation de modules système pour travailler avec des fichiers de répertoire si __name__ == “__main __”: # Commencer avec un dictionnaire vide ici. Qui est appelé comme l'ordre # Toutes les clés de ce dictionnaire apparaissent comme un nom et les valeurs spécifiées pour elles # seront le nombre de fois que ce nom spécifique apparaîtra. Order = () # sys.stdin est un objet utilisé pour les fichiers. Toutes ces fonctions qui sont appliquées à

# un objet fichier peut également être utilisé pour sys.stdin.

pour la commande dans sys.stdin.readlines ():

order = order.strip ()

si commande en commandes:

commandes (commande) + = 1

autre:

commandes (commande) = 1

pour la commande, comptez dans Orders.iteritems ():

sys.stdout.write ("% d \ t% s \ n"% (nombre, ordre))

Maintenant, ce fichier lit d'abord l'entrée de l'objet sys.stdin. Toute la sortie est écrite dans l'objet sys.stdout. Après avoir créé ce script, en supposant que vous l'avez nommé order.py, vous pouvez simplement exécuter le script shell suivant dans le terminal et vous trouverez le nombre total de toutes les chaînes en double.

$ cat file.txt | python order.py

De même, nous pouvons également trier cela en utilisant la syntaxe de tri: -

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

Python Shell vs Bash Shell Programmation Scripting

Nous avons maintenant vu comment combiner des scripts python et shell pour créer une chaîne de commandes et les exécuter ensemble. Maintenant, allons plus loin et voyons si Python peut remplacer totalement Bash Shell.

En parlant de programmation shell bash, en termes de performances, bash bat totalement la merde de python. Mais si vous le comparez aux types de données et à d'autres choses avancées, bash n'a pas beaucoup de compatibilité. Le temps de démarrage d'un script shell bash est de 2, 8 mili secondes tandis que celui de python est de 11, 1 mili secondes. Pour être plus franc, bash est un langage à usage général tout comme Python, mais les deux ont leurs propres forces et faiblesses. La programmation shell Bash est le terminal par défaut dans la plupart des distributions Linux et sera donc toujours plus rapide en termes de performances. Mais cela signifie-t-il qu'il peut remplacer totalement Python? Nan. Lorsqu'il s'agit de gros programmes, Bash continuera de se compliquer, contrairement à Python. Pour autant que je sache, Python peut également être utilisé comme un langage orienté objet. Si vous n'êtes qu'un débutant, vous ne connaissez peut-être même pas la différence entre les deux. Python est le langage de script le plus élégant, encore plus que Ruby et Perl. D'autre part, la programmation du shell Bash est très excellente pour canaliser la sortie d'une commande dans une autre.

Shell Scripting est simple et n'est pas aussi puissant que python. Il ne traite pas des frameworks et il est difficile de démarrer avec des programmes liés au Web à l'aide de Shell Scripting. La véritable puissance des scripts shell réside dans l'éditeur de texte Stream ou sed, les programmes Awk et des applications similaires.

Gestion de fichiers et développement d'applications Web

Bash Shell Scripting fonctionne parfaitement et rapidement lorsqu'il s'agit de fichiers. En manipulant des fichiers, je veux dire copier, cloner des disques, écrire des applications de sauvegarde pour la mise en réseau, des serveurs ftp, stocker des entrées de fichiers et y accéder plus tard et transférer ces sorties plus tard à autre chose à l'aide de pipe. Python, d'autre part, est plus utile pour traiter des morceaux de données tels que la lecture de données à partir d'un fichier et le traitement de données. Si je suis plus précis, bash n'est même pas un langage de programmation. Il s'agit plus d'un simple shell qui visait à traiter les fichiers système à l'aide de la ligne de commande afin que le processus soit plus rapide et plus rapide.

Ainsi, si vous connaissez correctement la programmation shell bash, vous savez également que les variables et les étendues dans bash sont extrêmement limitées. Python, d'autre part, est plus un langage de script shell qu'un langage de programmation. Si nous appelons Bash un langage de programmation, cela ressemble plus à dire que Python est un langage de programmation shell orienté objet. On peut traiter le python d'une manière orientée objet, mais il ne sera jamais purement orienté objet comme C ou Java. De même, Bash est un langage de script; il vaut mieux l'utiliser comme quelque chose qui est nécessaire pour traiter les fichiers rapidement plutôt que d'y écrire de gros programmes. De plus, bien que Python soit un langage de script shell, il traite en fait dans son propre shell. Par exemple, déplacer tous les fichiers qui se trouvent sur le bureau vers un autre répertoire aléatoire via le shell Bash ressemblerait à ceci:

$ cd Desktop $ mv * randomDirectory

Mais d'un autre côté, faire la même chose en python est un peu plus compliqué. Ca fait plutot comme ca: -

importer os, glob pour fname dans glob.glob ('*'): os.rename (fname, 'randomdirectory')

Cependant, au mieux, on peut en faire le plus compact de cette manière: -

importer os, glob (os.rename (fname, 'randomdirectory') pour fname dans glob.glob ('*'))

Lors de l'apprentissage d'une langue, les gens vous diront souvent comment nettoyer les bases et toutes ces choses, mais ils ne vous diront pas comment traiter d'abord le système lui-même qui est le plus important. De plus, Python et Bash sont tous deux des langages de script Shell, ce qui signifie que les deux sont développés principalement pour gérer le système et ses fichiers.

Bash à l'intérieur de Python?

Oui, vous l'avez bien lu. Jusqu'à présent, nous avons lu comment introduire des scripts Python dans Shell. Mais nous pouvons également introduire des scripts shell dans les scripts de python. Prenons ceci par exemple: - Tapez 'apt-get update' dans le shell python? Vous obtiendrez évidemment une erreur comme une syntaxe invalide. Donc, le truc, c'est que si vous voulez utiliser les codes bash comme 'ls, cd, mv' ou quoi que ce soit d'autre en python, vous devrez importer le module OS. Maintenant, faites une chose, copiez le code suivant et collez-le dans le shell de python, et vérifiez comment cela fonctionne: -

$ python >>> from os import * >>> system ('sudo apt-get update')

Et maintenant ça marche… ouais. C'est une autre façon de faire fonctionner ensemble les scripts python et bash. En outre, il existe un autre module python spécialement conçu pour fonctionner avec bash. Ce module est appelé pexpect. Pexpect est un module python qui est utilisé pour générer des processus enfants, les contrôler et renvoyer des résultats conformément à la demande du processus enfant. Le module pexpect possède une interface extrêmement simple pour importer les modules requis et les processus enfants à l'intérieur de celui-ci et les exécuter en conséquence. On a juste besoin que le pip soit installé dans leur système pour installer pexpect et on peut installer le module comme suit: -

$ pip install pexpect

La version de Pexpect nécessite une version python supérieure à 3.3 ou spécifiquement 2.7.

Il y a en fait beaucoup plus à mélanger python et bash et rien ne fonctionne aussi bien qu'un mélange de script de Python et Bash. Ce mélange rend le script rapide à cause de Bash et inclut des fonctionnalités avancées à cause de Python. On peut lire sur pexpect et sa documentation sur https://pexpect.readthedocs.org/online.

Articles recommandés

Voici quelques articles qui vous aideront à obtenir plus de détails sur le Bash Scripting et Python, alors suivez simplement le lien.

  1. Différences entre Python et JavaScript
  2. Top 25 des questions et réponses incroyables sur Python
  3. Python vs différences JavaScript
  4. Programmation R vs Python
  5. Gestion des fichiers PHP