GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Nützliche Bash-Befehle, die Sie vielleicht nicht kennen

Bash ist eine ziemlich leistungsfähige Sprache zum Programmieren, und es ist auch recht einfach, damit anzufangen.

Schließlich ist es fast immer die Shell, die Sie sehen werden, wenn Sie Ihr Terminal öffnen. Das macht es äußerst nützlich, sich daran zu gewöhnen.

Es gibt einige mächtige Befehle in Bash, die Sie möglicherweise nicht kennen, selbst wenn Sie mit der Verwendung der Sprache ziemlich vertraut sind. All diese Befehle können jedoch sehr nützlichen Zwecken dienen und die Shell-Skripte, die Sie schreiben, sauberer, wartbarer und geradezu leistungsfähiger machen, als sie zuvor hätten sein können.

Lesen:Eingabe vom Benutzer erfragen

Der Lesebefehl ermöglicht es Ihnen, Eingaben von einem Benutzer entgegenzunehmen und in einer Variablen zu speichern.

#!/usr/bin/env bash
echo "What is your name?"
read name
echo "Your name is ${name}!"

Dieser wartet auf Eingaben von Ihnen, dem Benutzer, und setzt dann den Wert für name Variable auf die Zeichenfolge, die Sie eingeben.

Zum Beispiel, wenn Sie Ihren Namen als Linux Handbook angegeben haben Beim Ausführen des obigen Skripts würde es Your name is Linux Handbook! ausgeben .

Sie können das obige Beispiel auch kompakter gestalten, indem Sie -p angeben Option zum read Befehl, der die nach -p angegebene Zeichenfolge ausgibt , und fragen Sie dann den Benutzer nach einer Eingabe:

#!/usr/bin/env bash
read -p "What is your name? " name
echo "Your name is ${name}!"

Sie werden auch bemerken, dass ich nach What is your name? ein Leerzeichen eingefügt habe . Wenn wir es nicht hinzufügen würden, würde es buchstäblich What is your name? ausgeben ohne Leerzeichen, wodurch es etwas seltsamer aussehen würde, wenn der Benutzer seine Eingabe eingibt:

Mapfile:Einer Variablen die Werte der Zeilen einer Datei zuweisen

Sie können das mapfile verwenden Befehl, den Inhalt einer Datei zu lesen und diese Ausgabe dann einem Bash-Array zuzuweisen, wobei jedes Array-Element erstellt wird, wenn eine neue Zeile in der Datei gefunden wird.

Lassen Sie uns beispielsweise eine Datei mit dem Namen file.txt erstellen das den folgenden Text enthält:

Line 1
Line 2
Line 3
Line 4
Line 5

Sie könnten diese Datei in ein Bash-Array konvertieren, indem Sie den folgenden Befehl ausführen, der den Inhalt der Datei der file_var zuweist Variable:

#!/usr/bin/env bash
mapfile file_var < file.txt

for i in "${file_var[@]}"; do
	echo "${i}"
done

Sie werden feststellen, dass das Obige auch eine Ausgabe mit seltsamen Abständen erzeugt, die nicht mit dem Inhalt der Datei übereinstimmt, was durch Hinzufügen des -t behoben werden kann Option zum mapfile Befehl:

#!/usr/bin/env bash
mapfile -t file_var < file.txt

for i in "${file_var[@]}"; do
	echo "${i}"
done

Schließlich stellen Sie möglicherweise fest, dass Folgendes nicht funktioniert:

#!/usr/bin/env bash
cat file.txt | mapfile -t file_var

Das liegt daran, dass die mapfile Der Befehl auf der rechten Seite der Pipe wird in einer Subshell (oder mit anderen Worten, einer neuen Instanz von Bash) ausgeführt, die Ihre aktuelle Shell nicht beeinflussen kann.

Quelle:Setzen Sie Variablen aus einer Datei in die Umgebung Ihrer Shell

Angenommen, Sie haben die folgende imaginäre Datei config.sh , mit folgendem Inhalt:

username=linuxhandbook
domain=linuxhandbook.com

Was ist, wenn Sie den Inhalt dieser Datei nehmen und in die Umgebung Ihrer aktuellen Shell einfügen möchten?

Das geht ganz einfach mit dem Quellbefehl:

source config.sh

Sie können dann überprüfen, ob die Variablen wie erwartet zugewiesen wurden:

Unter der Haube die source Der Befehl führt tatsächlich die angegebene Datei in der Umgebung Ihrer aktuellen Shell aus, sodass die Eingabe von Befehlen in dieser Datei tatsächlich dazu führen würde, dass sie ausgeführt werden, wenn source ausgeführt wird .

Lassen Sie uns beispielsweise Folgendes in config.sh einfügen :

name="Linux Handbook"
echo "Hello ${name}!"
echo "Have a good day!"

Wenn wir dann soure config.sh ausführen , sehen Sie, dass die beiden echo Befehle ausgeführt werden, sowie der name Variable wird zugewiesen:

Sie können auch . verwenden anstelle von source , die sich genauso verhält wie source würde.

Abschluss

Und schon sind Sie auf dem besten Weg, mächtigere und nützlichere Aufgaben zu erledigen, während Sie gleichzeitig in Bash bleiben können.

Gibt es noch andere Befehle, die Sie häufig in Bash verwenden? Fühlen Sie sich frei, einen von ihnen in den Kommentaren unten zu hinterlassen.


Linux
  1. 30 Dinge, die Sie nicht über den Linux-Kernel wussten

  2. Was Sie wahrscheinlich noch nicht über sudo wussten

  3. 4 Nützliche Möglichkeiten, den Namen des angeschlossenen USB-Geräts unter Linux zu ermitteln

  4. Was Systemadministratoren über die Verwendung von Bash wissen müssen

  5. Wie normalisiert man einen Dateipfad in Bash?

Bash-If-Else-Anweisungen – Alles, was Sie wissen müssen

3 Linux-Befehle, die Sie vergessen haben

Alles, was Sie über das Linux-Dateisystem wissen müssen

Alles, was Sie über den Linux-Chmod-Befehl wissen müssen

Alles, was Sie über Linux Zorin OS wissen müssen

Alles, was Sie über Peppermint Linux OS wissen müssen