So schreiben und verwenden Sie eine Text-Batch-Befehlsdatei

So schreiben und verwenden Sie eine Text-Batch-Befehlsdatei

Wie kann ich eine typische Text-Batch-Befehlsdatei schreiben und anschließend verwenden?

Ich spreche von einer Datei, die die folgenden Befehle enthält:

sudo -i
sudo apt-get update
sudo apt-get upgrade
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get check
exit

Ich denke, ich kann es mit Leafpad schreiben, aber ...

  1. Wo muss ich es speichern?

  2. Welches Format? Welcher Name und welche Erweiterung?

  3. Wie kann ich es anschließend in einer LXTerminal-Sitzung mit nur einer Anweisung verwenden (idealerweise, wenn es eine Möglichkeit gäbe, es bei jedem Systemstart automatisch zu verwenden)?

Vielen Dank für Ihre Zeit!

Antwort1

In der unixähnlichen Welt gibt es keine „Batch“-Dateien. Wir verwenden Skripte, die „She-Bangs“ enthalten. Um ein solches Skript zu erstellen, öffnen Sie einen Texteditor (wie Leafpad) und beginnen Sie mit einer Zeile wie dieser:

#!/path/to/interpreter

Wo /path/to/interpreterbefindet sich die Binärdatei, die zur Interpretation Ihres Skripts verwendet wird? Unter Linux verwenden wir normalerweise „bash“ (Bourne Again SHell), eine „Weiterentwicklung“ der guten alten Bourne Shell. Bash führt im Wesentlichen Binärdateien mit im Skript angegebenen Argumenten aus Pfaden aus, die in der Umgebungsvariable PATH enthalten sind (normalerweise umfasst dies /bin, /sbin, /usr/bin, /usr/sbin und andere).

Sie können aber auch andere Interpreter wie Python, Perl, Ruby, sh, csh, zsh, dash, ksh und viele weitere Optionen verwenden.

Unter dem ganzen Kram kommt Ihr Skript. In Ihrem speziellen Fall können wir zum Ausführen der angegebenen Befehle Bash in einem Skript wie diesem verwenden:

#!/bin/bash

# the line above sets bash as the interpreter

# note that "sudo" is not required here because we will run the script as super user later.

apt-get update
# updates APT repositories

apt-get upgrade
# check for software upgrades and upgrade them

apt-get autoremove
# remove obsolete packages

apt-get autoclean
# remove stored .deb files

apt-get check
# update package cache and check for broken dependencies

Speichern Sie nun Ihre Datei. Eine Erweiterung ist nicht erforderlich, aber aus symbolischen Gründen sollten Sie ihr die Erweiterung .sh geben. Wir führen das Skript als Superuser aus, daher müssen die Dateiberechtigungen nicht geändert werden.

Öffnen Sie ein Terminal und wechseln Sie per CD zu dem Pfad, in dem Sie Ihr Skript gespeichert haben. Nehmen wir an, Sie haben es als script.sh gespeichert. Führen Sie den folgenden Befehl aus:

chmod +x script.sh

chmodbedeutet "Änderungsmodus" und wird verwendet, um zu ändern, wer was mit Ihrem Skript tun kann. +xfügt die Ausführungsberechtigung für alle Benutzer hinzu, wodurch jeder das Skript wie ein beliebiges anderes Programm ausführen kann. Ich werde nicht auf eine vollständige Liste der Bedeutungen der verschiedenen Berechtigungen eingehen, aberdiese Fragefasst sie ziemlich gut zusammen. Danach können Sie Folgendes eingeben:

sudo ./script.sh

Vergessen Sie nicht den Teil ./ und lassen Sie keine Leerzeichen zwischen dem ., dem / und dem s. Der sudoBefehl wird mit Root-Rechten ausgeführt ./script.sh, daher ist Ihr Passwort erforderlich (Sie müssen natürlich der Systemadministrator sein).

Antwort2

Was in der Windows-Welt als „Batch“-Datei bezeichnet wird, wird in der *NIX-Welt als „Skript“ bezeichnet. In den meisten Fällen sind Skripte Dateien mit mehreren Befehlen oder Befehlen, die auf bestimmte Weise angeordnet sind. Hier sind einige Dinge, die Sie wissen sollten:

Grundstruktur

Normalerweise sehen Sie etwa Folgendes:

#!/bin/sh
# Comments 
printf "Hello world"

Die erste Zeile gibt einen Interpreter an (allgemein als Zeile bezeichnet shebang), die zweite ist ein Kommentar (alles danach #wird nicht interpretiert, nur einfacher Text), die dritte ist der eigentliche Befehl

Im Terminal können Sie eine Datei ohne die Shebang-Zeile aufrufen. Dadurch wird das Skript von Ihrer aktuellen Shell (auch Befehlsinterpreter genannt) gelesen und interpretiert. Ich verwende beispielsweise mksheine Shell. Ich gebe an, dass #!/bin/shes von der Standard-Shell von Ubuntu ausgeführt wird - dash. Jede Shell hat bestimmte Besonderheiten in Bezug auf die Befehlssyntax, daher müssen Sie Ihr Skript entsprechend anpassen.

Skript schreiben

Dies muss in einem Texteditor erfolgen, Sie können es aber auch in LibreOffice Writer schreiben und dann im Klartext speichern. Persönlich verwende ich ( nanomeistens oder vim) einfach Befehlszeilen-Texteditoren. Eine Analogie hierzu wären editWindows-Versionen vor Windows 7.

Dateinamen und Erweiterungen spielen auf *NIX-Systemen keine Rolle, da das System die ersten paar Bytes der Datei liest, um ihren Typ zu bestimmen. Ich habe mir angewöhnt, .shErweiterungen hinzuzufügen, aber eigentlich ist das unnötig.

Skript ausführbar machen

Dies wird mit chmod 755 scriptName.sheinem Befehl gemacht. Es bedeutet read-write-executeBerechtigungen für den Eigentümer (Sie), read-executefür Benutzer, die sich in der Eigentümergruppe befinden (z. B. könnte der Dateieigentümer sein admin, wenn Sie also zur adminGruppe gehören, können Sie die Datei lesen und ausführen) und read-executefür alle anderen. Geben Sie anderen niemals Schreibberechtigungen! Wenn Sie Superuser-Berechtigungen haben, könnte dies zu bösen Folgen führen (d. h. Sie könnten gehackt werden und böswillige Benutzer könnten Ihre Skripte so ändern, dass Ihre persönlichen Daten geschützt werden).

Ausführen von Skripten

Sie können ein Skript jederzeit ausführen, indem Sie im Terminal zum Skriptspeicherort navigieren und eingeben ./scriptName.

Um einen Befehl irgendwo ausführen zu können, einschließlich Skripts, müssen diese irgendwo auf dem System gespeichert sein, das in die $PATHVariable aufgenommen wird. Das meine ich damit:

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/xieerqi/bin

$PATHVariable sagt mir, dass ich, wenn sich ein Skript oder eine ausführbare Binärdatei in einem dieser Verzeichnisse befindet /usr/local/sbin, /usr/local/bindiesen Befehl einfach durch Eingabe in das Terminal ausführen kann.

Jetzt sollten Sie für Ihre eigenen Skripte einen Ordner erstellen und die Skripte dort speichern. Wenn Sie Ihre Konfigurationsdatei binverwenden, enthält sie die folgenden Zeilen:bash.profile

# set PATH so it includes user's private bin if it exists
#if [ -d "$HOME/bin" ] ; then
#    PATH="$HOME/bin:$PATH"
#fi

#Wenn Sie vor den letzten drei Zeilen (von ifbis ) die Auskommentierung entfernen , wird fiIhr persönlicher Ordner in die Variable aufgenommen.bin$PATH

verwandte Informationen