J'ai remarqué beaucoup de questions et réponses et de commentaires exprimant du dédain pour (et parfois même la peur de) l'écriture de scripts au lieu de lignes simples. Je voudrais donc savoir:
Quand et pourquoi devrais-je écrire un script autonome plutôt qu'un "one-liner"? Ou vice versa?
Quels sont les cas d'utilisation et les avantages et inconvénients des deux?
Certaines langues (par exemple awk ou perl) sont-elles mieux adaptées aux lignes simples que d'autres (par exemple python)? Si oui, pourquoi?
S'agit-il simplement d'une préférence personnelle ou existe-t-il de bonnes raisons (c'est-à-dire objectives) d'écrire l'une ou l'autre dans des circonstances particulières? Quelles sont ces raisons?
Définitions
one-liner
: toute séquence de commandes tapées ou collées directement dans une ligne de commande shell . Souvent liés à des pipelines et / ou l' utilisation des langues telles quesed
,awk
,perl
et / ou des outils similairesgrep
oucut
ousort
.C'est l'exécution directe sur la ligne de commande qui est la caractéristique déterminante - la longueur et le formatage ne sont pas pertinents. Un "one-liner" peut être tout sur une seule ligne, ou il peut avoir plusieurs lignes (par exemple sh pour la boucle, ou un code awk ou sed intégré, avec des sauts de ligne et une indentation pour améliorer la lisibilité).
script
: toute séquence de commandes dans n'importe quel langage interprété qui sont enregistrées dans un fichier , puis exécutées. Un script peut être écrit entièrement dans une langue, ou il peut être un wrapper de script shell autour de plusieurs "one-liners" utilisant d'autres langues.
J'ai ma propre réponse (que je publierai plus tard), mais je veux que cela devienne un Q&A canonique sur le sujet, pas seulement mon opinion personnelle.