it-swarm.com.de

Wie erstelle ich eine Skriptdatei für Terminalbefehle?

Unter Windows kann ich eine Datei schreiben, die Befehle für cmd enthält (normalerweise .cmd oder .bat Dateien). Wenn ich auf diese Dateien klicke, wird cmd.exe geöffnet und es werden die in der Datei enthaltenen Befehle ausgeführt.

Wie würde ich das in Ubuntu machen?

Ich bin sicher, dass dies ein Duplikat ist, aber ich kann meine Antwort nicht finden.
Es ähnelt diesen Fragen, aber sie beantworten die Frage nicht:

Speichern Sie häufig verwendete Terminalbefehle in einer Datei

CMD.exe-Emulator in Ubuntu zum Ausführen der .cmd/.bat-Datei

110
Seth

Es gibt zwei Methoden.

Am häufigsten wird zuerst eine Datei geschrieben. Stellen Sie sicher, dass die erste Zeile vorhanden ist

#!/bin/bash

Speichern Sie dann die Datei. Als nächstes markieren Sie es als ausführbar mit chmod +x file

Wenn Sie dann auf klicken (oder die Datei vom Terminal ausführen), werden die Befehle ausgeführt. Konventionell haben diese Dateien normalerweise keine Erweiterung. Sie können sie jedoch auf .sh oder eine andere Weise enden lassen.

Ein paar Anmerkungen:

  • Jede (und ich meine jede) Datei kann unter Linux ausgeführt werden, vorausgesetzt, die erste Zeile ist ein Pfad zu dem Programm, das die Datei interpretieren soll. Häufige Beispiele sind /bin/python, /bin/sh, /bin/dash, aber auch seltsame Ballsachen funktionieren wie /bin/mysql
  • Bash ist eine vollständige Sprache. Es ist weitaus komplexer als cmd.exe in Windows. Es verfügt über eine starke Programmiersprache, die Funktionen, Schleifen, Bedingungen, Zeichenfolgenoperationen usw. unterstützt.
  • Diese Dokumente können helfen, wenn Sie auf Probleme stoßen.
  • Wenn Sie die Datei nicht ausführbar machen möchten, können Sie sie ausführen, indem Sie sie als Argument an bash übergeben: bash file/to/run.sh

Ein einfaches Bash-Beispiel

#!/bin/bash  
echo "This is a Shell script"  
ls -lah  
echo "I am done running ls"  
SOMEVAR='text stuff'  
echo "$SOMEVAR"

Die zweite Methode ist das Aufzeichnen von Befehlen mit script. Führe script aus und mache dann einfach was. Wenn Sie fertig sind, geben Sie exit ein und das Skript generiert eine Datei für Sie mit allen "Sachen", die Sie gemacht haben. Dies wird weniger häufig verwendet, eignet sich jedoch sehr gut zum Erstellen von Makros. man script für weitere Informationen.

146
coteyr

Sie meinen, mit einem Shell-Skript in eine Datei zu schreiben? Hier sind einige Möglichkeiten:

touch file

Diese Methode erstellt einfach eine Datei. Wenn die Datei jedoch bereits vorhanden ist, ändert sie einfach das Änderungsdatum in die Zeit, zu der Sie diesen Befehl verwendet haben.

echo "text" > file

Diese Methode überschreibt den Inhalt von file bis text. Wenn Sie eine Datei löschen möchten, können Sie dies einfach tun:

echo "" > file

Angenommen, Sie möchten mehr als eine Zeile schreiben und möchten nicht Tausende von echo Befehlen verwenden, verwenden Sie diesen Befehl:

cat << EOF > file
test
test1
foo
bar
EOF

Dadurch können Sie mehrere Zeilen in einem Befehl schreiben. Der Inhalt von file wäre dann:

test
test1
foo
bar

Wenn Sie eine Datei anhängen möchten, ersetzen Sie > durch >>.

Hoffe das hilft!


EDIT: Oh, ich verstehe, also würden Sie die Datei in gedit schreiben, mit der .sh -Erweiterung (optional, aber es ist eine gute Idee) und dann in einem Dateimanager. Klicken Sie mit der rechten Maustaste auf die Datei, wählen Sie Eigenschaften-> Berechtigungen und aktivieren Sie Allow executing file as program. Dann können Sie darauf doppelklicken und es wird ausgeführt :). Wenn Sie dies im Terminal tun möchten, können Sie diesen Befehl ausführen, um es ausführbar zu machen (möglicherweise möchten Sie Sudo voranstellen, wenn es Ihnen nicht gehört):

chmod +x file

Und um zu rennen:

./file
14
MiJyn

Das Äquivalent zu Windows-Batchdateien sind Shell-Skripte, und eine ausgezeichnete Anleitung für die ersten Schritte ist Bash Scripting .

Zum größten Teil können Befehle, die Sie in die Befehlszeile eingeben können, in ein Shell-Skript eingefügt werden.

Einige Dinge, die sich von Windows-Batchdateien unterscheiden:

  • Es gibt verschiedene Befehlsinterpretierer, sogenannte Shells. Die Standardeinstellung ist bash, aber wenn Sie interessiert sind, gibt es andere, wie zsh, ksh, dash, Perl, Python usw.

  • Um ein Shell-Skript auszuführen, müssen Sie die Datei ausführbar machen, was Sie mit chmod +x <filename> tun können.

  • In Ubuntu ist das aktuelle Verzeichnis nicht der Programm-Suchpfad, daher müssen Sie ./<filename>, nicht <filename> ausführen.

  • Variablennamen sind $<varname>, nicht %<varname>%

  • Befehle in einem Shell-Skript werden standardmäßig nicht wie in einer Batch-Datei gedruckt.

  • Die Dateinamenerweiterung kann .sh sein oder (üblicher) Sie müssen keine Erweiterung verwenden. Setze #!/bin/bash in die allererste Zeile der Datei , was Ubuntu mitteilt, mit welchem ​​Programm die Datei ausgeführt werden soll.

  • Kommentare beginnen mit #, nicht mit rem.

Hoffe das hilft und viel Spaß beim Schreiben!

14
iBelieve