Déplacer sur Shell-Scripts: Sh.py est ici, et c'est génial.

Je parie que vous ne saviez pas que vous pouviez écrire des scripts shell en Python: sh.py vous permet d'appeler des programmes, de passer des paramètres et de gérer les sorties.

Je parie que vous ne saviez pas que vous pouviez écrire des scripts shell en Python: sh.py vous permet d'appeler des programmes, de passer des paramètres et de gérer les sorties.
Publicité

Je parie que vous ne saviez pas que vous pouviez écrire des scripts shell en Python.

Pour tout programmeur ou administrateur système, les scripts shell sont une compétence essentielle à maîtriser. Il vous permet d'automatiser des tâches fastidieuses, en les transformant en actions cohérentes et reproductibles. Le problème est que cela peut être un peu intimidant, surtout quand on considère que la plupart des dialectes shell-scripting manquent de la finesse syntaxique trouvée dans les goûts de Python et Ruby.

Je serai encore plus brutal. La plupart des scripts shell sont plus laids que le pug moyen.

shpy-pug

En outre, il existe une variété de coquilles disponibles pour les plates-formes UNIX, y compris Bash, CSH, KSH et (mon préféré) FISH. Par conséquent, écrire des scripts shell cohérents qui fonctionnent sur chaque plate-forme peut s'avérer difficile.

Il doit y avoir un meilleur moyen, non?

Présentation de sh.py

Il y a. Quand je n'écris pas pour MakeUseOf, j'écris du code en Python pour le plaisir et le profit. J'aime vraiment Python en raison de sa flexibilité, de sa beauté inhérente et de la façon dont il commande l'écriture d'un bon code par conception. Si cela vous semble bien, mais vous ne connaissez pas déjà cette langue géniale, pourquoi ne pas consulter ces cinq grands sites Web pour apprendre la programmation Python Les 5 meilleurs sites Web pour apprendre la programmation Python Les 5 meilleurs sites Web pour apprendre la programmation Python Au cours de la dernière décennie, le langage de programmation Python a explosé en popularité auprès des programmeurs dans tous les domaines du codage. Des développeurs Web aux concepteurs de jeux vidéo en passant par les créateurs d'outils internes, de nombreuses personnes sont tombées ... En savoir plus?

Il y a quelques mois, je suis tombé sur cette incroyable bibliothèque appelée sh.py, qui vous permet d'appeler des programmes, de transmettre des paramètres et de gérer des sorties, le tout dans les limites d'un programme Python.

Qu'est-ce que cela signifie? Autrement dit, cela signifie que vous disposez de toutes les fonctionnalités des scripts shell, mais à partir d'un langage facile à lire, de nature modulaire et prenant en charge la programmation orientée objet. Cool, n'est-ce pas?

Alors, comment l'utilisons-nous?

Je fais quelques hypothèses à votre sujet. La première est que vous utilisez Linux, OS X ou FreeBSD. Comme c'est le cas actuellement, sh.py ne fonctionne pas sous Windows. Toutefois, si besoin est, vous pouvez toujours installer une machine virtuelle Linux. Mon collègue Justin Pot a écrit un article très utile à ce sujet, que vous pouvez consulter ici Comment utiliser VirtualBoxes Images libres pour tester et exécuter des systèmes d'exploitation Open Source [Linux] Comment utiliser VirtualBoxes Images libres pour tester et exécuter des systèmes d'exploitation Open Source [Linux] Essayez rapidement une grande variété de systèmes d'exploitation open source, certains que vous connaissez et d'autres pas. Vous pouvez commencer à naviguer maintenant sur Virtualboxes, un site Web qui prend presque tout le travail ... Lire la suite.

La deuxième hypothèse que je fais est que vous utilisez une version récente de Python (2.7 ou 3.2) et que vous avez installé le gestionnaire de paquets PIP. Si ce n'est pas le cas, jetez un oeil à la documentation officielle de Python.

Tout bon? Ensuite, nous continuerons.

Commençons le codage

Dans un terminal, installez sh.py avec la commande suivante.

 sudo pip installer sh 

La raison pour laquelle nous utilisons 'sudo' ici est parce que nous devons élever nos permissions pour ajouter de nouveaux paquets Python. Si sh.py s'installe correctement, les lignes suivantes s'affichent dans votre terminal.

 Téléchargement / dépaquetage sh Téléchargement sh-1.09.tar.gz Exécution de setup.py egg_info pour le paquet sh Installation des paquets collectés: sh Exécution de setup.py installation pour sh Installation réussie sh Nettoyage ... 

Si ce n'est pas le cas, les chances sont bonnes que votre installation ait échoué. Triste. Si c'est le cas, essayez de vérifier vos permissions et d'avoir installé PIP. Si ce n'est pas encore le cas, essayez de demander Stack Overflow (qui a déjà été discuté) 10 Sites Web qui peuvent aider le programmeur débutant avec des exemples de code 10 Sites Web qui peuvent aider le programmeur débutant avec des exemples de code Lire plus par notre éditeur Internet, Saikat Basu ) ou MakeUseOf Answers.

Maintenant que cela est trié, créez un nouveau répertoire. C'est ici que nous allons placer tout notre code. Ouvrez un éditeur de texte et créez un fichier appelé "shtest.py". Ici, nous allons simplement créer un nouveau fichier, puis lister le contenu du répertoire dans lequel nous sommes. Ça vous semble bien?

Dans shtest.py, ajoutez les lignes suivantes.

shpy-shtest

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

Trucs simples ici. Brisons-le.

 #! / usr / bin / env python 

Cette ligne est appelée hachage-bang et demande à votre shell d'ouvrir ce fichier en tant que programme Python. Cela vous permet de l'ouvrir comme vous le feriez avec un script shell (./shtest.py), au lieu de l'ouvrir directement avec Python (python shtest.py). Cool, n'est-ce pas?

 importer sh 

Cette ligne importe la bibliothèque sh que nous avons installée il y a quelques instants. Nous ne pouvons pas continuer sans cela, alors assurez-vous que c'est dans votre code!

 sh.touch ('bonjour') 

Vous connaissez peut-être la commande Linux, 'toucher'. Cela crée un fichier vide avec le nom de fichier que vous spécifiez. Ici, nous appelons directement 'touch' depuis Python. Comme vous pouvez le voir, nous avons préfacé ceci avec 'sh.', Et nous lui passons un paramètre de 'bonjour'.

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

Vous connaissez peut-être la commande 'print', qui affiche le texte sur la console. Ici, nous passons le 'sh.ls' comme paramètre. Cela appelle le programme Linux ls, qui répertorie le contenu d'un répertoire. Nous passons aussi un paramètre de '-l', qui imprime des informations plus détaillées sur le contenu du répertoire dans lequel nous l'exécutons.

Est-ce que ça marche? Voir par vous-même.

shpy-shtest-travaux

Ceux d'entre vous qui ont des yeux de faucon remarqueront qu'il y a un autre fichier flottant dans ce répertoire appelé 'gitsh.py'. Qu'est-ce qui pourrait éventuellement être là?

Sous-commandes

sh.py a quelques hooks pour les programmes populaires déjà cuits dedans. Ceux-ci incluent git, sudo et un nombre significatif d'utilités de Linux. Ceux-ci rendent encore plus facile l'interaction avec ces services depuis Python.

C'est facile? Eh bien, je vais vous montrer comment initialiser un dépôt Git vide dans seulement trois lignes de code. D'abord, créez un fichier appelé 'gitsh.py' et ouvrez-le dans votre éditeur de texte favori.

À l'intérieur, écrivez les trois lignes suivantes.

shpy-gitsh #! / usr / bin / env python de sh import git print (git.init ()) 

La plupart de cela devrait vous être assez familier. Vous remarquerez que nous avons importé 'git' de 'sh'. Cela signifie simplement que nous avons importé une fonctionnalité spécifique d'un module, tout en ignorant tout le reste.

Après cela, nous initialisons notre référentiel.

 print (git.init ()) 

Nous avons parlé de l'impression. Vous devriez remarquer que nous appelons 'git' sans '.sh'. C'est parce que nous avons spécifiquement importé la fonctionnalité git de la bibliothèque 'sh'.

shpy-gitsh-œuvres

Et c'est à peu près tout. Quand nous lancerons gitsh.py, nous devrions voir apparaître les lignes suivantes dans votre terminal.

Conclusion

C'était une introduction relativement facile à sh.py. Si vous souhaitez en savoir plus, consultez la documentation officielle ici. Cependant, si vous êtes coincé, n'hésitez pas à me laisser un commentaire ci-dessous et je vais essayer de vous aider.

In this article