2 Stimmen

Wie erstelle ich ein "Makro", um einige Bash-Befehle im OS X Terminal zu automatisieren?

Ich bin ziemlich gut mit bash und UNIX-Befehlen sowie der Terminal-App, aber ich frage mich, ob es möglich ist, eine Art "Makro" (vielleicht ist das das falsche Wort!) zu erstellen, um einige Aufgaben zu automatisieren?

Zum Beispiel, um in mein aktuelles Projektverzeichnis zu gelangen, gebe ich ein:

$ cd ~/Dokumente/College/F13/CS362/lab3/os-lab-3

Und dann mache ich sofort:

$ hg pull

(Passwort)

Und dann

$ hg update

Gibt es also eine Möglichkeit, diesen ersten Schritt des cd-Aufrufs auch zu automatisieren? Ich habe so etwas noch nie ausprobiert, bin mir nicht sicher, ob das, was ich erreichen möchte, überhaupt möglich ist.

Bonus: Gibt es eine Möglichkeit, dass das Makro auch mein Passwort eingibt, wenn dazu aufgefordert wird? Sicherheit/Datenschutz ist hier nicht wirklich ein Problem, es verstecken sich keine nuklearen Codes im Repository.

11voto

gbeagle Punkte 126

Der Name, der in diesem Zusammenhang (einem Macro in bash) üblicherweise verwendet wird, ist Shell-Skript. Um die Befehle aus Ihrem Beitrag zu automatisieren, müssten Sie eine Datei mit einem Namen wie 'meinskript.sh' und folgendem Inhalt erstellen:

#!/bin/bash
cd ~/Dokumente/Studium/F13/CS362/lab3/os-lab-3
hg pull
hg update

Die erste Zeile des Skripts ist ein Hashbang. Dies ist eine spezielle Kommentarzeile, die angibt, dass die Datei mit dem angegebenen Programm ausgeführt werden soll. Hier Bash.

Um das Skript auszuführen, stellen Sie zunächst sicher, dass es ausführbar ist, indem Sie den folgenden Befehl ausführen:

chmod +x meinskript.sh

Von dort aus führen Sie das Skript im Terminalfenster aus, indem Sie den Pfad dazu angeben:

./meinskript.sh

Geben Sie jedoch keine Passwörter in Shell-Skripts ein! Es ist eine schlechte Angewohnheit. Bei der Authentifizierung mit Mercurial ist ein SSH-Schlüsselpaar der beste Weg. Der SSH-Schlüssel kann in den Schlüsselbund von MacOS geladen werden, sodass Sie nichts eingeben müssen, wenn Sie das Skript ausführen. Sie müssen außerdem den öffentlichen Teil Ihres SSH-Schlüsselpaars zur Liste der autorisierten Hosts im Remote-Mercurial-Repository hinzufügen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X