Ich habe einige einfache Shell-Scripting-Aufgaben, die ich ausführen möchte
Beispiel: Auswählen einer Datei im Arbeitsverzeichnis aus einer Liste der Dateien, die einem regulären Ausdruck entsprechen.
Ich weiß, dass ich so etwas mit Standard-Bash und Grep machen kann, aber ich wäre schön, wenn ich schnelle Skripte hacken könnte, die unter Windows und Linux funktionieren, ohne dass ich mir einen Haufen Befehlszeilenprogramme und Flags usw. merken muss.
Ich habe versucht, dies in Gang zu bringen, war jedoch verwirrt darüber, wo ich Informationen wie einen Verweis auf das aktuelle Verzeichnis erhalten sollte
Die Frage ist also, welche Teile der Ruby-Bibliotheken ich wissen muss, um Ruby-Shell-Skripte zu schreiben.
Antworten:
Standardmäßig haben Sie bereits Zugriff auf Dir und File , die für sich genommen sehr nützlich sind.
Ebenfalls nützlich von der stdlib ist FileUtils
Welches ist ziemlich schön
quelle
Wie die anderen bereits gesagt haben, sollte Ihre erste Zeile sein
Und Sie müssen es auch ausführbar machen: (in der Shell)
Dann folgt der Ruby-Code. Wenn Sie eine Datei öffnen
Die Datei wird in dem aktuellen Verzeichnis geöffnet, mit dem Sie
pwd
in der Shell arbeiten würden.Der Pfad zu Ihrem Skript ist ebenfalls einfach zu finden. Mit erhalten
$0
Sie das erste Argument der Shell, das der relative Pfad zu Ihrem Skript ist. Der absolute Pfad kann folgendermaßen bestimmt werden:Für Dateisystemoperationen verwende ich fast immer den Pfadnamen. Dies ist ein Wrapper für viele andere Klassen, die sich auf das Dateisystem beziehen. Auch nützlich: Dir, File ...
quelle
In den anderen Antworten fehlt Folgendes: Die Befehlszeilenparameter werden über das ARGV-Array (global) für Ihr Ruby-Shell-Skript verfügbar gemacht.
Wenn Sie also ein Skript namens my_shell_script hatten:
... machen es ausführbar (wie andere erwähnt haben):
Und nenne es so:
Sie würden dies bekommen:
Die Argumente funktionieren gut mit der Dateinamenerweiterung:
Das meiste davon funktioniert nur unter UNIX (Linux, Mac OS X), aber Sie können ähnliche (wenn auch weniger bequeme) Dinge in Windows tun.
quelle
Hier gibt es viele gute Ratschläge, deshalb wollte ich noch ein bisschen mehr hinzufügen.
Mit Backticks (oder Back-Ticks) können Sie einige Skripte viel einfacher erstellen. Erwägen
Wenn Sie Probleme beim Abrufen der Ausgabe von Backticks haben, wird das Zeug auf Standardfehler anstatt auf Standardausgang umgestellt. Verwenden Sie diesen Rat
Backticks führen eine String-Interpolation durch:
Sie können auch in Ruby pfeifen . Es ist ein Link zu meinem Blog, aber es verlinkt hierher zurück, also ist es okay :) Es gibt wahrscheinlich fortgeschrittenere Dinge zu diesem Thema.
Wie andere Leute bemerkt haben, gibt es Rush, wenn Sie es ernst meinen wollen: nicht nur als Shell-Ersatz (was für mich etwas zu verrückt ist), sondern auch als Bibliothek für Ihre Verwendung in Shell-Skripten und -Programmen.
Verwenden Sie auf einem Mac Applescript in Ruby, um mehr Leistung zu erhalten. Hier ist mein
shell_here
Skript:quelle
Holen Sie sich eine Kopie von Everyday Scripting with Ruby . Es enthält viele nützliche Tipps, wie Sie die Dinge tun können, die Sie tun möchten.
quelle
Dies kann auch hilfreich sein: http://rush.heroku.com/
Ich habe es nicht viel benutzt, sieht aber ziemlich cool aus
Von der Website:
quelle
Nehmen wir an, Sie schreiben Ihr
script.rb
Skript. stellen:als erste Zeile und mache a
chmod +x script.rb
quelle
Wenn Sie komplexere Ruby-Skripte schreiben möchten, können diese Tools hilfreich sein:
Beispielsweise:
thor (ein Skript-Framework)
gli (git like interface)
Methadon (zum Erstellen einfacher Werkzeuge)
Sie bieten Ihnen einen schnellen Einstieg in das Schreiben eigener Skripte, insbesondere der 'Befehlszeilen-App'.
quelle
"Wie schreibe ich Ruby" geht etwas über den Rahmen von SO hinaus.
Um diese Ruby-Skripte in ausführbare Skripte umzuwandeln, setzen Sie dies als erste Zeile Ihres Ruby-Skripts:
Dann machen Sie die Datei ausführbar:
und los gehts.
quelle
Platzieren Sie dies am Anfang Ihrer script.rb
Markieren Sie es dann als ausführbar:
quelle
Die obigen Antworten sind interessant und sehr hilfreich, wenn Ruby als Shell-Skript verwendet wird. Für mich verwende ich Ruby nicht als meine tägliche Sprache und ich bevorzuge Ruby nur als Flusskontrolle und verwende immer noch Bash, um die Aufgaben zu erledigen.
Einige Hilfsfunktionen können zum Testen des Ausführungsergebnisses verwendet werden
Mit dem Helfer könnte das Ruby-Skript ähnlich sein:
quelle
Die Antwort per Webmat ist perfekt. Ich möchte Sie nur auf einen Zusatz hinweisen. Wenn Sie viel mit Befehlszeilenparametern für Ihre Skripte zu tun haben, sollten Sie optparse verwenden . Es ist einfach und hilft Ihnen enorm.
quelle
In Ruby
__FILE__
gibt Ihnen die Konstante immer den Pfad des Skripts an, das Sie ausführen.Unter Linux
/usr/bin/env
ist dein Freund:Unter Windows hängt es davon ab, ob .rb-Dateien mit Ruby verknüpft sind oder nicht. Wenn sie sind:
Wenn dies nicht der Fall ist, müssen Sie Ruby explizit aufrufen. Ich verwende eine CMD-Zwischendatei:
my_script.cmd:
my_script.rb:
quelle