Der Bericht, den Sie jeden Montag tippen
Ein Shell-Skript ist eine Datei mit Befehlen, die Sie einmal schreiben und jederzeit starten. Ein Paket ist die Form, in der ein Programm auf eine Linux-Maschine kommt, zum Beispiel ein Programm, das Ihr Skript benutzt.
Ein Laden schickt Ihnen jede Woche eine Datei mit Besucherzahlen. Jeden Montag tippen Sie dieselben drei Befehle, um den stärksten Tag zu finden. An einem Montag vertippen Sie sich und schicken Ihrer Chefin den falschen Tag. Ein Skript hätte sich nicht vertippt.
Am Ende dieser Lektion
Notiz
Ich kann ein kleines Shell-Skript schreiben und starten und sagen, aus welchem Paket ein Programm stammt.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Skript | Befehle, die in einer Datei gespeichert sind, damit man sie wieder starten kann | |
| Shebang | die erste Zeile eines Skripts, die das Programm nennt, das es liest | #!/bin/bash |
| Argument | ein Wort nach dem Befehl, das der Befehl verwenden kann | $1 |
| Exit-Status | eine Zahl, die ein Befehl hinterlässt: 0 heißt, es hat geklappt | $? |
| Paket | ein Programm mit seinen Dateien, zusammengepackt, damit das System es installieren kann | |
| Paketverwaltung | das Werkzeug, das Pakete installiert, aktualisiert und entfernt | apt |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Eine Pipeline beantwortet eine Frage
Das Lab hat eine kleine Datei mit Besucherzahlen unter /srv/lab-web/report.csv. Jede Zeile hat einen Tag, ein Komma und eine Zahl. Die Datei ist englisch.
cut -d, -f1 behält die erste Spalte. -d, sagt, dass die Spalten durch Kommas getrennt sind. tail -n +2 überspringt die Titelzeile. sort -t, -k2 -n -r sortiert nach der zweiten Spalte, als Zahlen, die größte zuerst. head -n 1 behält die oberste Zeile.
Die erste Spalte herausschneiden
cut -d, -f1 /srv/lab-web/report.csvHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Den stärksten Tag finden
tail -n +2 /srv/lab-web/report.csv | sort -t, -k2 -n -r | head -n 1Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein häufiger Fehler
Warnung
Viele glauben, sort ordne Zahlen nach ihrer Größe. Standardmäßig sortiert es als Text: 98 kommt nach 175, weil 9 nach 1 kommt. Ohne -n gibt die Pipeline oben Tuesday,98 aus. Setzen Sie -n, wenn die Spalte aus Zahlen besteht.
Ein Skript sind Befehle in einer Datei
Ein Skript ist eine Textdatei mit Befehlen. Die Shell führt sie von oben nach unten aus, als hätten Sie sie getippt.
Die erste Zeile ist der Shebang. Er nennt das Programm, das die Datei liest. Eine Zeile mit # am Anfang ist ein Kommentar, den die Shell überspringt.
In einem Skript steht $1 für das erste Wort nach seinem Namen. So passt das Skript auf jede Datei.
Das Skript in eine Datei schreiben
printf '#!/bin/bash\n# Zeigt den stärksten Tag einer CSV-Datei.\ntail -n +2 "$1" | sort -t, -k2 -n -r | head -n 1\n' > bester_tag.shHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Versuchen, es zu starten
./bester_tag.sh /srv/lab-web/report.csvHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
bash die Datei lesen lassen
bash bester_tag.sh /srv/lab-web/report.csvHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Das Starten erlauben
chmod +x bester_tag.shHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Es starten
./bester_tag.sh /srv/lab-web/report.csvHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Jeder Befehl hinterlässt einen Exit-Status
Wenn ein Befehl endet, hinterlässt er eine Zahl. 0 heißt, es hat geklappt. Jede andere Zahl meldet ein Problem.
$? enthält die Zahl des letzten Befehls. Skripte und cron nutzen sie, um zu wissen, ob eine Arbeit geklappt hat.
Ein Befehl, der scheitert
ls /nothere ; echo "status $?"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Das Skript, das funktioniert
./bester_tag.sh /srv/lab-web/report.csv ; echo "status $?"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein häufiger Fehler
Warnung
Viele glauben, eine Datei, die cat anzeigen kann, lasse sich auch starten. Lesen und Starten sind verschiedene Rechte. Eine neue Datei hat für niemanden ein x. Setzen Sie erst chmod +x, oder lassen Sie bash die Datei lesen.
Software kommt in Paketen
Unter Ubuntu kommt ein Programm als Paket. Die Paketverwaltung führt Buch darüber, was installiert ist und zu welchem Paket jede Datei gehört.
dpkg liest diese Liste. apt installiert aus dem Internet und braucht sudo. Mit -s spielt apt-get install nur durch, man kann es also gefahrlos ausprobieren.
Wo liegt das Programm?
command -v curlHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Zu welchem Paket gehört diese Datei?
dpkg -S /usr/bin/curlHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ist das Paket installiert?
dpkg -s curl | grep -E "^(Package|Status)"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Installation nur durchspielen
apt-get install -s curl 2>&1 | tail -n 3Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Beispiel: die Verben von apt
| Sie tippen | Was es macht | Braucht sudo? |
|---|---|---|
| sudo apt update | Erneuert die Liste dessen, was sich installieren lässt | Ja |
| sudo apt install htop | Installiert ein Paket und das, was es braucht | Ja |
| sudo apt remove htop | Entfernt das Paket | Ja |
| apt-get install -s htop | Zeigt, was eine Installation täte, ohne etwas zu ändern | Nein |
| dpkg -S /usr/bin/curl | Nennt das Paket, zu dem eine Datei gehört | Nein |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Zum Weiterdenken
Tippen Sie das selbst. Ändern Sie das Skript so, dass es den ruhigsten Tag ausgibt. Welche eine Option fügen Sie hinzu oder lassen Sie weg?
Finden Sie dann die cron-Zeit, die bester_tag.sh jeden Montag um 07:30 startet. Auf einem Server schreiben Sie diese Zeile in /etc/cron.d, mit dem Nutzer vor dem Befehl.