Bash-Skripte: Der Anfang

Bash-Skripte: Der Anfang
Bash-Skripte, Teil 2: Schleifen
Bash-Skripte, Teil 3: Parameter und Befehlszeilenoptionen
Bash-Skripte, Teil 4: Eingabe und Ausgabe
Bash-Skripte, Teil 5: Signale, Hintergrundaufgaben, Skriptverwaltung
Bash-Skripte, Teil 6: Funktionen und Bibliotheksentwicklung
Bash-Skripte, Teil 7: sed und Textverarbeitung
Bash-Skripte, Teil 8: Datenverarbeitungssprache awk
Bash-Skripte, Teil 9: Reguläre Ausdrücke
Bash-Skripte, Teil 10: Praktische Beispiele
Bash-Skripte, Teil 11: expect und Automatisierung interaktiver Dienstprogramme

Heute sprechen wir über Bash-Skripte. Dies sind Befehlszeilenskripte, die für die Bash-Shell geschrieben sind. Es gibt auch andere Shellets, wie z. B. zsh, tcsh, ksh, aber wir konzentrieren uns auf Bash. Dieses Material ist für alle Interessierten gedacht, die einzige Voraussetzung ist, dass man mit der Befehlszeile Linux arbeitet.

Bash-Skripte: Der Anfang

Befehlszeilenskripte sind Sammlungen derselben Befehle, die über die Tastatur eingegeben werden können, in Dateien zusammengefasst und mit einem bestimmten Ziel verbunden. Die Ergebnisse der Befehlsausführung können entweder eigenständigen Wert haben oder als Eingabedaten für andere Befehle dienen. Skripte sind eine mächtige Methode zur Automatisierung häufig ausgeführter Aktionen.

Bash-Skripte: Der Anfang

Wenn wir also über die Befehlszeile sprechen, erlaubt sie es, mehrere Befehle auf einmal auszuführen, indem man sie durch ein Semikolon trennt:

pwd ; whoami

Wenn Sie dies in Ihrem Terminal ausprobiert haben, haben Sie bereits Ihr erstes Bash-Skript geschrieben, das zwei Befehle beinhaltet. Es funktioniert so. Zuerst pwd zeigt Informationen über das aktuelle Arbeitsverzeichnis an, dann whoamizeigt Informationen über den Benutzer an, mit dem Sie angemeldet sind.

Mit einem ähnlichen Ansatz können Sie beliebig viele Befehle in einer Zeile kombinieren, die einzige Einschränkung liegt in der maximalen Anzahl von Argumenten, die an ein Programm übergeben werden können. Diese Einschränkung kann mit folgendem Befehl bestimmt werden:

getconf ARG_MAX

Die Befehlszeile ist ein hervorragendes Werkzeug, aber die Befehle müssen jedes Mal eingegeben werden, wenn sie benötigt werden. Was wäre, wenn wir eine Reihe von Befehlen in einer Datei speichern und diese Datei einfach zum Ausführen aufrufen würden? Diese Datei, von der wir sprechen, wird als Befehlszeilenskript bezeichnet.

Wie Bash-Skripte aufgebaut sind

Erstellen Sie eine leere Datei mit dem Befehl touch. In der ersten Zeile müssen wir angeben, welche Shell wir verwenden möchten. Uns interessiert bash, daher wird die erste Zeile der Datei folgendermaßen aussehen:

#!/bin/bash

In den anderen Zeilen dieser Datei wird das Rautezeichen verwendet, um Kommentare anzuzeigen, die von der Shell ignoriert werden. Die erste Zeile ist jedoch ein besonderer Fall, hier zeigt die Raute, gefolgt von einem Ausrufezeichen (diese Sequenz nennt man Shebang) und der Pfad zu bash, dass das Skript speziell für bash.

Shell-Befehle werden durch Zeilenumbrüche getrennt, Kommentare werden durch das Rautezeichen hervorgehoben. So sieht das aus:

#!/bin/bash
# This is a comment
pwd
whoami

Hier kann man, wie in der Kommandozeile, Befehle in einer Zeile schreiben, indem man sie mit einem Semikolon trennt. Dennoch, wenn man Befehle in verschiedenen Zeilen schreibt, ist die Datei leichter lesbar. In jedem Fall wird die Shell sie verarbeiten.

Berechtigungen für die Skriptdatei festlegen

Speichern Sie die Datei unter dem Namen myscript, und die Arbeit an der Erstellung des Bash-Skripts ist fast abgeschlossen. Jetzt bleibt nur noch, diese Datei ausführbar zu machen, sonst stoßen Sie beim Versuch, sie auszuführen, auf einen Fehler Zugriff verweigert.

Bash-Skripte: Der Anfang
Versuch, die Skriptdatei mit falsch konfigurierten Berechtigungen auszuführen

Machen wir die Datei ausführbar:

chmod +x .\/myscript

Jetzt versuchen wir, sie auszuführen:

.\/myscript

Nach der Festlegung der Berechtigungen funktioniert alles wie gewünscht.

Bash-Skripte: Der Anfang
Erfolgreiche Ausführung des Bash-Skripts

Nachrichtenausgabe

Um Text in die Linux-Konsole auszugeben, wird der Befehl echoverwendet. Lassen Sie uns dieses Wissen nutzen und unser Skript bearbeiten, um Erklärungen zu den Daten hinzuzufügen, die die bereits vorhandenen Befehle ausgeben:

#!/bin/bash
# our comment is here
echo "The current directory is:"
pwd
echo "The user logged in is:"
whoami

So wird das Ergebnis nach dem Ausführen des aktualisierten Skripts aussehen.

Bash-Skripte: Der Anfang
Nachrichtenausgabe aus dem Skript

Jetzt können wir erklärende Texte ausgeben, indem wir den Befehl echoverwenden. Wenn Sie nicht wissen, wie Sie die Datei mit Linux-Tools bearbeiten, oder wenn Sie noch nie den Befehl echo, schauen Sie sich diesen Material.

Verwendung von Variablen

Variablen ermöglichen es, Informationen in der Skriptdatei zu speichern, beispielsweise die Ergebnisse von Befehlen zur Verwendung durch andere Befehle.

Es ist nichts Schlechtes daran, einzelne Befehle auszuführen, ohne die Ergebnisse zu speichern, aber die Möglichkeiten dieses Ansatzes sind ziemlich begrenzt.

Es gibt zwei Arten von Variablen, die in Bash-Skripten verwendet werden können:

  • Umgebungsvariablen
  • Benutzerdefinierte Variablen

Umgebungsvariablen

Manchmal müssen Shell-Teams mit bestimmten Systemdaten arbeiten. Hier ist beispielsweise, wie Sie das Home-Verzeichnis des aktuellen Benutzers ausgeben können:

#!/bin/bash
# display user home
echo "Home for the current user is: $HOME"

Bitte beachten Sie, dass wir die Systemvariable $HOME in doppelten Anführungszeichen verwenden können, was die Erkennung durch das System nicht behindert. So sieht es aus, wenn Sie das oben genannte Skript ausführen.

Bash-Skripte: Der Anfang
Verwendung einer Umgebungsvariable im Skript

Was, wenn wir das Dollarzeichen auf dem Bildschirm ausgeben möchten? Lassen Sie uns Folgendes versuchen:

echo "I have $1 in my pocket"

Das System wird das Dollarzeichen in der durch Anführungszeichen begrenzten Zeile erkennen und annehmen, dass wir auf eine Variable verweisen. Das Skript wird versuchen, den Wert einer undefinierten Variable auszugeben. $1Das ist nicht das, was wir brauchen. Was tun?

In einer solchen Situation hilft die Verwendung eines Steuerzeichens, des umgekehrten Schrägstrichs, vor dem Dollarzeichen:

echo "I have $1 in my pocket"

Jetzt gibt das Skript genau das aus, was erwartet wird.

Bash-Skripte: Der Anfang
Verwendung einer Escape-Sequenz zur Ausgabe des Dollarzeichens

Benutzerdefinierte Variablen

Neben Umgebungsvariablen ermöglichen es bash-Skripte, eigene Variablen im Skript zu definieren und zu verwenden. Solche Variablen speichern den Wert, bis das Skript beendet wird.

Wie bei Systemvariablen können benutzerdefinierte Variablen mit dem Dollarzeichen angesprochen werden:
TNW-CUS-FMP – der Aktionscode für 10% Rabatt auf unsere Dienstleistungen, verfügbar zum Aktivieren für 7 Tage

#!/bin/bash
# testing variables
grade=5
person="Adam"
echo "$person is a good boy, he is in grade $grade"

So wird das Ergebnis nach dem Start eines solchen Skripts aussehen.

Bash-Skripte: Der Anfang
Benutzerdefinierte Variablen im Skript

Befehlsersetzung

Eine der nützlichsten Funktionen von bash-Skripten ist die Möglichkeit, Informationen aus der Ausgabe von Befehlen zu extrahieren und sie Variablen zuzuweisen, was es ermöglicht, diese Informationen überall im Skript zu verwenden.

Dies kann auf zwei Arten erfolgen.

  • Mit dem umgekehrten Akzentzeichen „`“
  • Mit der Konstruktion $()

Beim ersten Ansatz achten Sie darauf, dass Sie nicht anstelle des umgekehrten Akzentzeichens ein einfaches Anführungszeichen eingeben. Der Befehl muss in zwei solchen Zeichen eingeschlossen werden:

mydir=`pwd`

Bei der zweiten Methode wird dasselbe folgendermaßen geschrieben:

mydir=$(pwd)

Das Skript könnte letztendlich so aussehen:

#!/bin/bash
mydir=$(pwd)
echo $mydir

Während seiner Ausführung wird die Ausgabe des Befehls pwdin der Variable mydir, deren Inhalt mit dem Befehl echo, in die Konsole gelangt.

Bash-Skripte: Der Anfang
Ein Skript, das die Ergebnisse eines Befehls in einer Variablen speichert

Mathematische Operationen

Um mathematische Operationen in einer Skriptdatei durchzuführen, kann die Konstruktion verwendet werden $((a+b)):

#!/bin/bash
var1=$(( 5 + 5 ))
echo $var1
var2=$(( $var1 * 2 ))
echo $var2

Bash-Skripte: Der Anfang
Mathematische Operationen im Skript

Steuerungskonstruktion if-then

In einigen Skripten ist es erforderlich, den Programmfluss zu steuern. Zum Beispiel, wenn ein bestimmter Wert größer als fünf ist, muss eine Handlung ausgeführt werden, andernfalls eine andere. Dies ist in vielen Situationen anwendbar, und dabei hilft uns die Steuerungskonstruktion if-then. In ihrer einfachsten Form sieht sie so aus:

if Befehl
then
Befehle
fi

Hier ist ein praktisches Beispiel:

#!/bin/bash
if pwd
then
echo "It works"
fi

In diesem Fall, wenn die Ausführung des Befehls pwderfolgreich abgeschlossen wird, wird der Text „it works“ in die Konsole ausgegeben.

Nutzen wir das Wissen, das wir haben, und erstellen ein komplexeres Skript. Angenommen, wir müssen einen bestimmten Benutzer in /etc/passwd, und wenn wir ihn finden, ihn darüber informieren, dass er existiert.

#!/bin/bash
user=likegeeks
if grep $user /etc/passwd
then
echo "The user $user Exists"
fi

Das ist das Ergebnis nach dem Start dieses Skripts.

Bash-Skripte: Der Anfang
Benutzersuche

Hier haben wir den Befehl grepverwendet, um den Benutzer in der Datei /etc/passwdzu finden. Wenn der Befehl grepIhnen nicht bekannt ist, finden Sie die Beschreibung dazu hier.

In diesem Beispiel wird, wenn der Benutzer gefunden wird, eine entsprechende Nachricht ausgegeben. Und was passiert, wenn der Benutzer nicht gefunden wird? In diesem Fall wird das Skript einfach beendet, ohne uns etwas zu sagen. Wir möchten, dass es uns auch darüber informiert, daher werden wir den Code verbessern.

Steuerungskonstruktion if-then-else

Damit das Programm sowohl über die Ergebnisse einer erfolgreichen Suche als auch über Misserfolge informieren kann, verwenden wir die Konstruktion if-then-else. So ist sie strukturiert:

if Befehl
then
Befehle
else
Befehle
fi

Wenn der erste Befehl null zurückgibt, was ein erfolgreiches Ausführen bedeutet, wird die Bedingung wahr sein und die Ausführung wird nicht in den Zweig elsegehen. Andernfalls, wenn etwas anderes als null zurückgegeben wird, was bedeutet, dass es ein Misserfolg oder ein falsches Ergebnis war, werden die Befehle ausgeführt, die nach else.

stehen.

#!/bin/bash
user=anotherUser
if grep $user /etc/passwd
then
echo "The user $user Exists"
else
echo "The user $user doesn’t exist"
fi

Schreiben wir ein solches Skript: else.

Bash-Skripte: Der Anfang
Die Ausführung ging in den Zweig

Nun, fahren wir fort und stellen uns die Frage nach komplexeren Bedingungen. Was, wenn wir nicht eine, sondern mehrere Bedingungen überprüfen müssen? Zum Beispiel, wenn der gesuchte Benutzer gefunden wurde, soll eine Nachricht ausgegeben werden, wenn eine weitere Bedingung erfüllt ist – eine weitere Nachricht, und so weiter. In solchen Situationen helfen uns verschachtelte Bedingungen. Das sieht so aus:

if bedingung1
then
befehle
elif bedingung2
then
befehle
fi

Wenn die erste Bedingung null zurückgibt, was auf ihre erfolgreiche Ausführung hinweist, werden die Befehle im ersten Block ausgeführt then, andernfalls, wenn die erste Bedingung falsch ist und wenn die zweite Bedingung null zurückgibt, wird der zweite Block ausgeführt.

#!/bin/bash
user=anotherUser
if grep $user /etc/passwd
then
echo "The user $user Exists"
elif ls /home
then
echo "The user doesn’t exist but anyway there is a directory under /home"
fi

In einem solchen Skript können wir zum Beispiel einen neuen Benutzer mit dem Befehl erstellen useradd, wenn die Suche keine Ergebnisse geliefert hat, oder etwas anderes Nützliches tun.

Zahlenvergleich

In Skripten können numerische Werte verglichen werden. Unten ist eine Liste der entsprechenden Befehle.

n1 -eq n2Gibt einen wahren Wert zurück, wenn n1 gleich ist n2.
n1 -ge n2 Gibt einen wahren Wert zurück, wenn n1größer oder gleich n2.
n1 -gt n2Gibt einen wahren Wert zurück, wenn n1 nicht mehr n2.
n1 -le n2Gibt einen wahren Wert zurück, wenn n1kleiner oder gleich n2.
n1 -lt n2Gibt einen wahren Wert zurück, wenn n1 kleiner ist n2.
n1 -ne n2Gibt einen wahren Wert zurück, wenn n1ungleich n2.

Als Beispiel probieren wir einen der Vergleichsoperatoren aus. Beachten Sie, dass der Ausdruck in eckigen Klammern steht.

#!/bin/bash
val1=6
if [ $val1 -gt 5 ]
then
echo "The test value $val1 is greater than 5"
else
echo "The test value $val1 is not greater than 5"
fi

Das wird dieser Befehl ausgeben.

Bash-Skripte: Der Anfang
Zahlenvergleich in Skripten

Der Wert der Variable val1größer als 5, sodass der Zweig des thenVergleichsoperators ausgeführt wird und die entsprechende Nachricht in die Konsole ausgegeben wird.

Stringvergleich

In Skripten können auch Stringwerte verglichen werden. Die Vergleichsoperatoren sind recht einfach, jedoch gibt es bestimmte Besonderheiten, auf die wir später eingehen werden. Hier ist eine Liste der Operatoren.

str1 = str2 Überprüft die Gleichheit von Strings, gibt wahr zurück, wenn die Strings identisch sind.
sstr1 != str2Gibt wahr zurück, wenn die Strings nicht identisch sind.
str1 < str2Gibt wahr zurück, wenn str1weniger als str2.
str1 > str2 Gibt wahr zurück, wenn str1größer als str2.
-n str1 Gibt wahr zurück, wenn die Länge str1größer als null ist.
-z str1Gibt wahr zurück, wenn die Länge str1gleich null.

Hier ist ein Beispiel für den Stringvergleich in einem Skript:

#!/bin/bash
user ="likegeeks"
if [$user = $USER]
then
echo "The user $user  is the current logged in user"
fi

Als Ergebnis der Ausführung des Skripts erhalten wir Folgendes.

Bash-Skripte: Der Anfang
Stringvergleich in Skripten

Hier ist ein besonderes Merkmal beim Vergleichen von Zeichenfolgen, das erwähnt werden sollte. Nämlich müssen die Operatoren „>“ und „“ als Befehl zur Umleitung der Ausgabe.

So sieht die Arbeit mit diesen Operatoren im Code aus:

#!/bin/bash
val1=text
val2="another text"
if [ $val1 > $val2 ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi

Hier sind die Ergebnisse der Skriptausführung.

Bash-Skripte: Der Anfang
Zeichenfolgenvergleich, Warnung ausgegeben

Beachten Sie, dass das Skript zwar ausgeführt wird, aber eine Warnung ausgibt:

. /myscript: Zeile 5: [: zu viele Argumente

Um diese Warnung loszuwerden, setzen wir $val2 in doppelte Anführungszeichen:

#!/bin/bash
val1=text
val2="another text"
if [ $val1 > "$val2" ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi

Jetzt funktioniert alles wie es soll.

Bash-Skripte: Der Anfang
Stringvergleich

Ein weiteres Merkmal der Operatoren „>“ und „<“ betrifft, wie sie mit Groß- und Kleinbuchstaben arbeiten. Um dieses Merkmal zu verstehen, erstellen wir eine Textdatei mit folgendem Inhalt:

Likegeeks
likegeeks

Wir speichern sie unter dem Namen myfile, und führen dann den folgenden Befehl im Terminal aus:

sort myfile

Es wird die Zeilen aus der Datei folgendermaßen sortiert:

likegeeks
Likegeeks

Team sortieren, sortiert standardmäßig die Zeilen aufsteigend, das heißt, der Kleinbuchstabe in unserem Beispiel ist kleiner als der Großbuchstabe. Jetzt bereiten wir ein Skript vor, das die gleichen Zeichenfolgen vergleicht:

#!/bin/bash
val1=Likegeeks
val2=likegeeks
if [ $val1 > $val2 ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi

Wenn es ausgeführt wird, stellt sich heraus, dass es genau umgekehrt ist - der Kleinbuchstabe ist nun größer als der Großbuchstabe.

Bash-Skripte: Der Anfang
Der sort-Befehl und der Vergleich von Zeichenfolgen im Skript

Bei Vergleichsbefehlen sind Großbuchstaben kleiner als Kleinbuchstaben. Der Vergleich von Zeichenfolgen erfolgt hier durch den Vergleich der ASCII-Codes der Zeichen, wobei die Reihenfolge der Sortierung somit von den Zeichencodes abhängt.

Team sortieren, wiederum nutzt die Sortierreihenfolge, die in den Systemeinstellungen der Sprache festgelegt ist.

Dateiprüfungen

Vielleicht werden die folgenden Befehle in bash-Skripten am häufigsten verwendet. Sie ermöglichen es, verschiedene Bedingungen hinsichtlich von Dateien zu überprüfen. Hier ist eine Liste dieser Befehle.

-d fileÜberprüft, ob die Datei existiert und ob sie ein Verzeichnis ist.
-e fileÜberprüft, ob die Datei existiert.
-f file Überprüft, ob die Datei existiert und ob es sich um eine Datei handelt.
-r fileÜberprüft, ob die Datei existiert und ob sie lesbar ist.
-s fileÜberprüft, ob die Datei existiert und ob sie nicht leer ist.
-w fileÜberprüft, ob die Datei existiert und ob sie beschreibbar ist.
-x fileÜberprüft, ob die Datei existiert und ob sie ausführbar ist.
file1 -nt file2 Überprüft, ob neuer als file1, als file2.
file1 -ot file2Überprüft, ob älter als file1, als file2.
-O Datei Überprüft, ob die Datei existiert und ob der aktuelle Benutzer der Eigentümer ist.
-G DateiÜberprüft, ob die Datei existiert und ob ihre Gruppen-ID mit der Gruppen-ID des aktuellen Benutzers übereinstimmt.

Diese Befehle und viele andere, die heute behandelt wurden, sind leicht zu merken. Ihre Namen, die aus verschiedenen Wörtern abgekürzt sind, weisen direkt auf die durchgeführten Überprüfungen hin.

Lassen Sie uns einen der Befehle in der Praxis ausprobieren:

#!/bin/bash
mydir=/home/likegeeks
if [ -d $mydir ]
then
echo "The $mydir directory exists"
cd $ mydir
ls
else
echo "The $mydir directory does not exist"
fi

Dieses Skript zeigt den Inhalt des vorhandenen Verzeichnisses an.

Bash-Skripte: Der Anfang
Ausgabe des Verzeichnisinhalts

Wir gehen davon aus, dass Sie mit den anderen Befehlen selbst experimentieren können; alle funktionieren nach dem gleichen Prinzip.

Ergebnisse

Heute haben wir darüber gesprochen, wie man mit dem Schreiben von Bash-Skripten beginnt, und einige Grundlagen behandelt. Tatsächlich ist das Thema Bash-Programmierung riesig. Dieser Artikel ist eine Übersetzung des ersten Teils einer großen Serie von 11 Materialien. Wenn Sie jetzt weitermachen möchten, finden Sie hier die Liste der Originale dieser Materialien. Zur Bequemlichkeit haben wir auch den eingearbeitet, den Sie gerade gelesen haben.

  1. Bash-Skript Schritt für Schritt — hier geht es darum, wie man mit dem Erstellen von Bash-Skripten beginnt, die Verwendung von Variablen wird behandelt, bedingte Strukturen, Berechnungen, Vergleiche von Zahlen und Zeichenfolgen sowie das Abrufen von Informationen über Dateien.
  2. Bash-Skripting Teil 2, Bash das Großer — hier werden die Besonderheiten der Arbeit mit for- und while-Schleifen behandelt.
  3. Bash-Skripting Teil 3, Parameter & Optionen — dieses Material behandelt die Befehlszeilenparameter und -schlüssel, die an Skripte übergeben werden können, die Verarbeitung von Daten, die vom Benutzer eingegeben werden, und von Dateien gelesen werden können.
  4. Bash-Skripting Teil 4, Eingabe & Ausgabe — hier geht es um Dateideskriptoren und die Arbeit mit ihnen, um Eingabeströme, Ausgaben und Fehler, sowie um die Weiterleitung von Ausgaben.
  5. Bash-Skripting Teil 5, Signale & Aufgaben — dieses Material behandelt Linux-Signale, deren Verarbeitung in Skripten und die Ausführung von Skripten nach Zeitplan.
  6. Bash-Skripting Teil 6, Funktionen — hier erfahren Sie, wie man Funktionen in Skripten erstellt und verwendet sowie Bibliotheken entwickelt.
  7. Bash-Skripting Teil 7, Verwendung von sed — dieser Artikel beschäftigt sich mit dem Arbeiten mit dem Stream-Text-Editor sed.
  8. Bash-Skripting Teil 8, Verwendung von awk — dieses Material befasst sich mit der Programmierung in der Datenverarbeitungsprache awk.
  9. Bash-Skripting Teil 9, Reguläre Ausdrücke — hier können Sie über die Verwendung von regulären Ausdrücken in Bash-Skripten lesen.
  10. Bash-Skripting Teil 10, Praktische Beispiele — hier finden Sie Techniken zur Arbeit mit Nachrichten, die an Benutzer gesendet werden können, sowie Methoden zur Festplattenüberwachung.
  11. Bash-Skripting Teil 11, Expect-Befehl — dieses Material widmet sich dem Expect-Tool, mit dem die Interaktion mit interaktiven Tools automatisiert werden kann. Insbesondere wird hier über Expect-Skripte und deren Interaktion mit Bash-Skripten und anderen Programmen gesprochen.

Wir glauben, dass eine der wertvollsten Eigenschaften dieser Reihe von Artikeln darin besteht, dass sie, beginnend mit den einfachsten Inhalten, die für Benutzer jedes Niveaus geeignet sind, allmählich zu ziemlich ernsten Themen führt und allen Interessierten die Möglichkeit gibt, sich beim Erstellen von Linux-Befehlszeilenskripten weiterzuentwickeln.

Liebe Leser! Wir bitten die Gurus der Bash-Programmierung, uns zu erzählen, wie sie die Höhen des Fachwissens erreicht haben, ihre Geheimnisse zu teilen, während wir von denen, die gerade ihr erstes Skript geschrieben haben, gerne Eindrücke erwarten.

Bash-Skripte: Der Anfang

Nur registrierte Benutzer können an der Umfrage teilnehmen. Bitte einloggen.

Sollen die restlichen Teile des Artikels übersetzt werden?

  • Ja!

  • Nein, das ist nicht notwendig

1030 Benutzer haben abgestimmt. 106 Benutzer haben sich enthalten.

Quelle: habr.com

Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server 🔥 Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster