Für Jobs, die wiederholt ausgeführt werden müssen und aus Dingen wie dem Verschieben von Dateien und dem Anhängen von Text bestehen, ist Bash Scripting immer noch der richtige Weg? Wenn ich momentan nur eine kleine Menge an Bash-Fähigkeiten habe, sollte ich Zeit investieren, um es gut zu lernen, oder sollte ich etwas anderes wie Perl oder Python verwenden?Ist Bash Scripting immer noch der richtige Weg?
Antwort
Es lohnt sich immer eine Vielzahl von Fähigkeiten natürlich mit, aber ich schätze, dass die Zeit oft knapp ist :)
Ich würde sagen, Python ist wahrscheinlich ein geben Wartbare Lösung, wenn es eine ziemlich große Aufgabe wird, aber Bash ist gut für kleinere Skripte. Ich würde anfangen, bei 100 Zeilen nervös zu werden, oder wenn Sie beginnen, viele Funktionen zu benötigen. (Natürlich können sich bash-Experten in wesentlich komplexeren Skripten zurechtfinden, aber Skripte werden eher von "zufälligen" bash-Benutzern gelesen, als Java beispielsweise von "zufälligen" Java-Programmierern gelesen wird.)
Sie können sogar Qt/C++ verwenden. QRegExp und QFile Dinge machen viel einfacher :-)
Zu keiner großen Überraschung werde ich Jon Skeet zustimmen. Obwohl ich meine Listenkompromittierungen immer vermisse, sind sie einfach nicht in meiner Shell, und für Skripte unter 10 Zeilen (meine Schwelle ist viel niedriger als Skeets, aber auch meine Fähigkeiten), bash oder jede andere Shellsprache ist meine schnelle/sichere Route. Und ich werde keine Argumente nehmen, die mich zu ipython als eine native Shell bewegen, ernsthaft;)
Wenn die Lösung Listen, Hashes oder andere nicht triviale Datenstrukturen beinhaltet, würde ich mit einem dl wie Ruby gehen, Python oder Perl.
Auf der anderen Seite, wenn das, was ich baue, auf mehreren Plattformen laufen wird, ohne die Garantie für ein Standard-Tool-Set, dann würde ich mit bash gehen, oder sogar sh für diese Angelegenheit. Alles hängt von der Komplexität der Lösung ab und davon, wo sie ausgeführt wird.
In meiner Erfahrung verwenden Sie, was auch immer Befehlszeilenprogramm, das Sie kennen. Ich kenne einige Pythons, aber etwa die Hälfte meiner Skripte sind in PHP geschrieben, weil ich das besser kenne.
Ich weiß, dass Bash ist die Standardeinstellung/bin/sh für die meisten, wenn nicht alle, Linux-Distributionen, so dass Sie nicht falsch gehen können mit lernen, wie man es verwendet. Allerdings würde ich noch einen Schritt weiter gehen und versuchen, die strikte Bourne-Shell-Syntax einzuhalten. Auf diese Weise ist Ihre Skriptbibliothek leicht zu anderen UNIX-Varianten portierbar. Dies setzt voraus, wie andere darauf hinweisen, dass Sie keine erweiterten Funktionen benötigen, wie Arrays und ähnliches, in welchem Fall eine fortgeschrittenere Sprache in Ordnung wäre.
In jedem Fall, zum Lernen Bash, würde ich empfehlen, die Advanced Bash-Scripting Guide als eine hervorragende Referenz.
Ich benutze sowohl Bash und Python. Gleichzeitig. bash ist gut für kurze Skripte (besonders zsh, mein Favorit, wenn ich nicht auf Portabilität Wert lege), Python ist gut für längere, komplexere Skripte ... aber Python mit «eingebetteten» Bash-Skripten ist noch besser ... os. Popen ist dein Freund.
Zum Beispiel schreibe ich oft:
for file in os.popen('find ...'):
...
anstatt das zu tun os.walk manuell, da auf diese Weise schneller ist, darüber nachzudenken, und oft viel kürzer. Und ... diese Technik ist noch besser, wenn Sie Rohre verwenden ...
Natürlich tun Sie dies vorsichtig, da die Portabilität ein Problem sein könnte. Auch müssen Sie beide Tools ziemlich gut kennen, um zu wissen, welcher Teil in welcher Sprache geschrieben wird.
- 1. Scripting für Bash-Bildschirm
- 2. Bash Scripting und bc
- 3. Bash Scripting unerwarteten Operator
- 4. AngularJS - Was ist der richtige Weg dafür?
- 5. Was ist der richtige Weg um umzuleiten?
- 6. was ist der richtige Weg Schleife
- 7. .htaccess RewriteRule: ist das der richtige Weg?
- 8. Bash Scripting - Überprüfen Sie, ob die Bash-Variable 0 ist
- 9. Ist C++ immer noch effektiv?
- 10. DAO-Test: der richtige Weg?
- 11. Begin Bash Scripting in Linux
- 12. Scripting einen Wagenrücklauf in bash
- 13. Warum ist ECMAScript immer noch keine Empfehlung von W3C?
- 14. Sind Masterseiten der richtige Weg?
- 15. Was der richtige Weg ist, diese Elemente zu schweben
- 16. Was ist der richtige Weg, um sowohl stdout als auch stderr in bash umzuleiten?
- 17. Was ist der richtige Weg, um log4j in JSP-Seiten
- 18. Was ist der aktuelle richtige Weg, um Edelsteine zu veröffentlichen?
- 19. Django_comments: Was ist der richtige Weg, post_comment() zu überschreiben?
- 20. Was ist der richtige Weg innerHTML- von iframe
- 21. Was ist der richtige Weg, um die Argumente eines Konstruktor
- 22. parse mysql Fehler msg - ist es der richtige Weg?
- 23. Was ist der richtige Weg, Eigenschaften mit Guice einzustellen?
- 24. Entwerfen einer PHP-Klasse. Der richtige Weg
- 25. Ermitteln des iPhone-Dokumentenverzeichnisses. Ist NSSearchPathForDirectoriesInDomains immer noch der einzige Weg?
- 26. Ist Mark V. Shaney immer noch der beste Weg, Text zu generieren?
- 27. Ist ClickOnce immer noch der Weg zur Bereitstellung von Windows Forms-Anwendungen?
- 28. Was ist der "richtige" Weg, einen C# -Delegaten zu initialisieren?
- 29. Was ist der richtige Weg, auf Verbindungen zu warten?
- 30. Was ist der richtige Weg, um diese Informationen zu erhalten?
+1, Ich mag den Punkt über "casual" Benutzer ... – rmeador
Für Python-Versionen des allgemeinen Bash-Codes, siehe http://stackoverflow.com/questions/209470/cani-i-use-python-as-a-bash-replacement – Nickolay