2009-06-30 4 views
4

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

15

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.)

+2

+1, Ich mag den Punkt über "casual" Benutzer ... – rmeador

+2

Für Python-Versionen des allgemeinen Bash-Codes, siehe http://stackoverflow.com/questions/209470/cani-i-use-python-as-a-bash-replacement – Nickolay

0

Sie können sogar Qt/C++ verwenden. QRegExp und QFile Dinge machen viel einfacher :-)

2

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;)

1

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.

1

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.

1

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.

2

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.

Verwandte Themen