Je viens de migrer vers un poste de travail UNIX. Ma mémoire des scripts shell Bash s'est estompée depuis l'école et je trouve la syntaxe très déroutante. Je me demande quels autres langages de script sont utilisés pour automatiser les tâches. Les deux plus populaires dont j'ai entendu parler sont Perl et Python.
- Quel langage de script est le plus utilisé par les boutiques du monde réel?
- Quel langage de script ressemble le plus à la syntaxe C / C ++?
- Existe-t-il un autre langage de script que je ne connais pas?
Merci de votre aide,
Scott
Réponses:
Dans une certaine mesure, c'est une question de préférence personnelle. Perl et Python sont définitivement là-bas en termes de popularité.
Pour répondre à deux de vos trois questions, cependant:
Ma recommandation est cependant Python. Il est facile à lire et à écrire, extrêmement puissant et il existe des tonnes de ressources utiles sur le Web pour l'apprendre, sans parler du code que vous pouvez copier et réutiliser.
la source
sh
rend l'utilisation de python comme langage de script shell accessible; Cependant, si vous rencontrez des cas marginaux (comme le multitraitement), vous devrez apprendre le module de sous-processus que je trouve trop difficile à utiliser à ce jour.Perl et Python sont évidemment les réponses; mais chacun d'eux est utilisé pour effectuer différentes tâches:
Concernant celui à apprendre en ce moment (puisque vous ne connaissez probablement aucun d'eux), j'apprendrais Python. C'est le plus simple et le plus utile à connaître.
Et quant aux réponses à vos questions:
Quel langage de script est le plus utilisé par les boutiques du monde réel?
Tous, mais j'imagine que Perl a un petit avantage ici (étant qu'il est utilisé depuis plus longtemps dans l'administration système).
Quel langage de script ressemble le plus à la syntaxe C / C ++?
Perl
Existe-t-il un autre langage de script que je ne connais pas?
Ruby, Tcsh / Csh, http://en.wikipedia.org/wiki/Interpreted_language
la source
awk pour les petits travaux, python pour plus que les oneliners.
Python (si vous n'utilisez pas d'API spécifiques et d'autres choses dépendantes de la plate-forme) a une riche "bibliothèque standard" qui est disponible sur toutes les plates-formes où vous obtenez la version python en cours d'utilisation. C'est très bien car vous pouvez réutiliser vos scripts facilement et signifie que vos connaissances sont un bon investissement même si vous changez de plate-forme.
Dans notre entreprise, nous utilisons python pour tous les scripts, la surveillance, ... et java pour l'application, et nous sommes bien lotis dans un environnement hétérogène.
la source
Je dirais que perl et python sont probablement les deux meilleures alternatives. Vous pouvez aussi faire beaucoup avec sed et awk.
la source
Sh (bourne shell), grep, awk et sed est toujours une bonne chose à reprendre. Perl est excellent si vous ne voulez pas beaucoup de regexing de texte et la maintenabilité n'est pas si importante (ne pas dire que ce n'est pas possible). Python; si la lisibilité est importante pour vous. Ma préférence est Python, mais tous ces outils sont bons pour la plupart des choses que vous lui lancez. Vous voudrez peut-être reconsidérer votre exigence de syntaxe c / c ++, rester fidèle ne vous aidera pas à long terme.
la source
Si vous cherchez à apprendre quelque chose à partir de zéro, il est probablement préférable de (ré) apprendre bash.
Au-delà, perl et python sont populaires de nos jours; Je suis amateur de Perl, mais mon style de script Perl n'a pas beaucoup changé depuis la sortie de Perl 4.
Je ne connais aucun langage de script "semblable à la syntaxe c".
la source
Perl, haut la main, ne serait-ce que pour l'incroyable ressource du CPAN ( http://search.cpan.org/ ). L'avantage d'utiliser un langage de script avec une communauté contributive aussi massive est que vous n'aurez probablement jamais besoin d'inventer quelque chose vous-même.
Perl a également l'avantage d'être aussi complexe que nécessaire pour la situation actuelle. Vous pouvez le traiter comme un simple langage de script pour une administration rapide ou des scripts à usage unique, mais vous pouvez utiliser des concepts orientés objet ou des systèmes de méta-objets étendus lorsque vous souhaitez créer des applications plus grandes et faciles à entretenir (comme les démons, les serveurs, les clients).
Les différences entre les langages de script à eux seuls ne sont pas assez graves pour choisir un gagnant clair, mais vous devez principalement regarder à quel point il vous sera facile de trouver des informations sur les sujets qui vous intéressent.
La syntaxe Perl peut également être très proche de C, tant que vous pouvez contourner le manque de frappe et les sceaux; l'utilisation avancée de perl viendrait naturellement à mesure que vous finirez par apprendre les forces du langage.
Et pour les opposants sur le plan de la lisibilité: vous pouvez écrire du code difficile à lire dans n'importe quelle langue. Si vous regardez votre code d'il y a 4 mois et que vous ne le comprenez pas, vous faites quelque chose de mal.
ps Ce message était rempli de liens vers divers modules conviviaux d'administration sur CPAN, mais apparemment, les nouveaux utilisateurs ne peuvent publier qu'un seul lien, alors utilisez ce lien CPAN pour rechercher des choses comme 'CVS' 'SVN' 'Cron' 'et `` Moose' '(un vaste système d'objets)
la source
la source
[pour des conseils généraux de script, voir les autres réponses]
Cette réponse concerne l'utilisation de programmes en ligne de commande et également de grandes chaînes d'entre eux.
Pour exécuter des chaînes de programmes CLI, et peut-être plusieurs chaînes en séquence, bash est le plus simple. Perl peut faire la même chose mais le langage est beaucoup plus difficile à apprendre et est beaucoup plus complexe, et comme beaucoup l'ont souligné, il est facile d'écrire du Perl intelligible.
Si vous parcourez des fichiers et des paramètres, bash est plus facile à démarrer b / c, vous pouvez prototyper dans le shell, puis copier dans un script et ajouter des tableaux et des boucles avec un minimum de surcharge.
Exemples de ce que je veux dire:
En bash, il est facile d'envelopper cela en quelques boucles sur certains de ces paramètres. pourtant , le code devient difficile à lire une fois que le script fait plus de quelques dizaines de lignes. --- imaginez 30 ensembles de commandes (quelques lignes chacune) pour trente tracés de données différents ---
Perl et Python pourraient être meilleurs pour les gros scripts car ils ont une syntaxe plus propre pour les boucles et les variables, mais les commandes bash doivent être générées sous forme de chaînes, exécutées en tant que sous-processus et stdin, stdout capturé. Cela peut être fait, mais il ne peut pas remplacer complètement l'environnement shell natif.
Si les obus avaient une meilleure langue, tout cela serait évité.
la source
le plus utilisé: Perl, principalement pour des raisons historiques. Python est largement disponible dans toutes les distributions Linux et BSD (il est même installé sur Mac OSX), et est beaucoup plus agréable à apprendre / à programmer. Bien sûr, une fois que vous obtenez la syntaxe, Bash est plus simple pour presque tout ce que vous pouvez faire sur la ligne de commande. Après tout, il est la ligne de commande.
Syntaxe C: il y a csh , mais vous pouvez facilement installer TCC et utiliser le vrai C comme langage de script, compilé à partir de la source en moins de temps que le démarrage d'autres langages.
autres langages de script: beaucoup! Lua , Ruby , JavaScript ...
la source
Vous devriez utiliser une combinaison de tous ceux où cela est approprié. Je n'aime vraiment pas perl (lisibilité), mais c'est bon pour beaucoup de choses. Python, d'autre part, était quelque chose de nouveau pour moi en termes d'administration système, jusqu'à ce que je doive gérer (et dois encore) quelques machines KVM. Démarrer, arrêter, enregistrer, charger, migrer toutes ces machines via un script est devenu réalité après 1 heure de déconner avec les liaisons python de libvirt.
Enfin et surtout, je n'utiliserais pas perl ou python si je dois, disons, vider toutes les bases de données d'un serveur mysql chaque nuit (chaque base de données dans son propre fichier de vidage), les tarer et les synchroniser vers un autre serveur. Pourquoi ? Parce que c'est plus rapide et plus facile de l'écrire en bash :)
En fin de compte, vous devez utiliser le langage qui correspond le mieux à votre tâche actuelle et ne pas utiliser uniquement un langage de script donné simplement parce que vous l'aimez le plus.
la source
J'aime le rubis. C'est simple et facile à programmer avec. Il y a un excellent livre sur l' administration du système utilisant ruby .
Ruby est utilisé dans plusieurs systèmes de gestion de configuration (capistrano, chef, marionnette) et dans la dernière version de metasploit.
Vous pouvez utiliser rush , un remplacement du shell Unix avec la syntaxe ruby et faire des choses comme ceci:
la source
Exemple de rubis à une ligne:
J'utiliserais du rubis.
Comparé à sh, il est moderne et puissant.
Comparé à python, c'est la cohérence, une édition, un gestionnaire de paquets. Et je n'aime pas la syntaxe d'indentation.
Comparez avec Perl, un peu old-school et la syntaxe est trop complexe pour moi.
la source