Tipps und Trick -Beispiele für nützliche Bash -Bash -Befehlszeilen - Teil 3
- 3122
- 136
- Marleen Weight
Bash ist eine abwechslungsreiche Shell -Schnittstelle mit vielen Programmieroptionen und eine reichhaltige Unterrichtssprache. Es ist einfach, Bash -Funktionen und Dynamik zu verpassen, daher führt diese Serie in einer Reihe von Tipps, Tricks, Beispielen und Gotchas ein. Für den ersten beiden Artikel in dieser Serie finden Sie in unserem Artikel Nützliche Bash -Befehlszeilenzeilen und Tricks Beispiele Teil 2 und nützliche Bash -Befehlszeilen -Tipps und -Tipps und Tricks Beispiele Teil 3.
In dieser Tutorial -Serie lernen Sie:
- Nützliche Bash -Befehlszeilen -Tipps, Tricks und Methoden
- So interagieren Sie mit der Bash -Befehlszeile fortschrittlich
- So schärfen Sie Ihre Bash -Fähigkeiten insgesamt und werden zu einem kompetenteren Bash -Benutzer
Softwareanforderungen und Konventionen verwendet
Kategorie | Anforderungen, Konventionen oder Softwareversion verwendet |
---|---|
System | Linux-Verteilungsunabhängige |
Software | BASH -Befehlszeile, Linux -basiertes System |
Andere | Jedes Dienstprogramm, das standardmäßig nicht in der Bash -Shell enthalten ist sudo apt-Get Installieren Sie den Dienstprogramm (oder yum install Für Redhat -basierte Systeme) |
Konventionen | # - Erfordert, dass Linux -Commands mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mithilfe von verwendet werden sudo Befehl$-erfordert, dass Linux-Commands als regulärer nicht privilegierter Benutzer ausgeführt werden |
Beispiel 1: korrekt nach der Existenz von Dateien und Verzeichnissen überprüft
Wir können auf das Vorhandensein eines Verzeichnisses checken, indem wir die verwenden -D
(Hat ein Verzeichnis mit dem angegebenen Namen existiert) Klausel in einer Wenn
Stellungnahme:
$ MypathoCheckforexistence = "$ pwd" $ echo "$ mypatoCheckForexistence"/home/roel/iamhappy $ if [-d $ mypathoCheckFexistence]; dann existiert Echo "!"; fi existiert!
Es ist jedoch ebenso einfach, in einigen Bereichen der Bash einen schwer zu entschlossenen Fehler zu machen. Lassen Sie uns beispielsweise nachdenken (und sehen Sie, ob Sie den Fehler finden können)
$ MypathoCheckforexistance = "/macht nichtReallyexist" $ if [-d $ mypathoCheckForexistence]; dann existiert Echo "!"; fi existiert! $ ls /doNotreallyexist ls: Kann nicht zugreifen ' /doNotReallyexist': Keine solche Datei oder Verzeichnis
Warum das Wenn
Überprüfen Sie die Schlussfolgerung, dass die /macht nicht
Verzeichnis existiert? Kannst du den Fehler sehen??
Das Problem hier ist, dass im Variablennamen ein Tippfehler eingeschaltet ist. Existenz
vs EXISTENZ
…
Vielleicht ein bisschen frech, aber in aller Ernsthaftigkeit sollte dies auch sehr leicht zu gotcha eingehen:
$ wenn [-d]; dann existiert Echo "!"; fi existiert!
Und bedeutender;
$ Var1 = "; if [-d $ var1]; dann existiert echo"!"; fi existiert!
Wenn Sie also die initialisierende Verzeichnisname -Variable vergessen haben, die Sie anschließend überprüfen, oder der Variablenname wird falsch geschrieben, dann wird das Ergebnis sein, dass die Bash die Bash ist Wenn
Die Erklärung gibt zurück, dass das Verzeichnis existiert! Es gibt keine weitere Erwähnung dieser interessanten Ausnahme im Handbuch (Ref (Ref " Mann Bash
) was das nur verdeutlicht -D
Ist Wahr, wenn die Datei existiert und ein Verzeichnis ist..
Wie können wir das beheben??
Beispiel 2: Ein besserer Weg, um die Existenz von Dateien und Verzeichnissen zu überprüfen
Das Fix ist einfach; Wir können unsere Variable mit doppelten Zitaten zitieren ("
), was dann das macht Wenn
Nicht standardmäßig das Ergebnis von immer zu True. Als interessante Randnotiz für weitere Gedanken und vielleicht Ihr sachkundiger Kommentar unten muss man sich fragen, warum es so implementiert wurde und was die zugrunde liegende Implementierung im Always-True ist.
$ Var1 = "; if [-d" $ var1 "]; dann existiert Echo"!"; fi $
Eine einfache und elegante Lösung. Anstatt der Wenn
Aussage jetzt analysiert als Wenn [-d]
Was, wie wir gesehen haben, immer auf wahr bewertet, jetzt wird es als analysiert (vorausgesetzt, das Var1
ist mindestens leer) wenn [-d ""]
das führt zu falsch und damit die Dann
Klausel wird nicht ausgeführt.
Beispiel 3: Wollte schon immer den Inhalt von a extrahieren .DEB -Datei?
Manchmal bricht etwas auf einem System aus, und wir möchten möglicherweise eine einzige Datei von a erhalten .Deb
Paket. .Deb
Pakete (Installationspakete im Debian-Stil, die auch von Ubuntu und Mint verwendet werden), können online leicht gefunden werden, aber es ist nicht immer so selbstverständlich, wie Dateien daraus extrahieren können. Um dies zu tun, können wir:
AR X SOLE_DEB_FILE.DEB TAR -XF -Daten.Teer.xz
ar
ist ein Werkzeug zu Erstellen, modifizieren und extrahieren Sie aus den Archiven, als Handbuch (Mann ar
) erklärt. Diese Befehle liefern die Dateien innerhalb der .Deb
Paket. Jede .Deb
Die Datei hat zwei Archivdateien, nämlich Kontrolle.Teer.xz
Und Daten.Teer.xz
(ein gemeinsamer Standard) und - wie Sie aus dem Beispiel sehen können - es ist das Daten.Teer.xz
Archiv, das erweitert werden muss, um die Dateien innerhalb der zu sehen .Deb
Paket.
Abschluss
In diesem Artikel haben wir Möglichkeiten untersucht, um die Existenz von Dateien und Verzeichnissen korrekt zu überprüfen, indem wir ordnungsgemäß angegeben haben, und veranschaulicht, wie leicht es in diesem Bereich Fehler machen, Fehler zu machen. Testen Sie immer Ihre Skripte und probieren Sie eine Vielzahl verschiedener Situationen und Szenarien aus. Wir haben uns auch untersucht, wie wir Inhalte von a extrahieren können .Deb
Datei mit dem ar
Und Teer
Befehle. Genießen Sie wie immer die Bash -Codierung und hinterlassen Sie uns unten einen Kommentar mit Ihren Erkenntnissen!
- Tipps und Trick -Beispiele für nützliche Bash -Bash -Befehlszeilen - Teil 1
- Tipps und Trick -Beispiele für nützliche Bash -Bash -Befehlszeilen - Teil 2
- Tipps und Trick -Beispiele für nützliche Bash -Bash -Befehlszeilen - Teil 3
- Tipps und Trick -Beispiele für nützliche Bash -Bash -Befehlszeilen - Teil 4
- Tipps und Trick -Beispiele für nützliche Bash -Bash -Befehlszeilen - Teil 5
Verwandte Linux -Tutorials:
- Eine Einführung in Linux -Automatisierung, Tools und Techniken
- Mastering -Bash -Skriptschleifen beherrschen
- Tipps und Trick -Beispiele für nützliche Bash -Bash -Befehlszeilen - Teil 1
- Tipps und Trick -Beispiele für nützliche Bash -Bash -Befehlszeilen - Teil 2
- Tipps und Trick -Beispiele für nützliche Bash -Bash -Befehlszeilen - Teil 4
- Dinge zu installieren auf Ubuntu 20.04
- Ubuntu 20.04 Tricks und Dinge, die Sie vielleicht nicht wissen
- Verschachtelte Schleifen in Bash -Skripten
- Ubuntu 20.04 Leitfaden
- Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
- « Tipps und Trick -Beispiele für nützliche Bash -Bash -Befehlszeilen - Teil 2
- Tipps und Trick -Beispiele für nützliche Bash -Bash -Befehlszeilen - Teil 4 »