Der Linux read Befehl
Die read Befehl in der Bash liest eine Zeile von der Standardeingabe und teilt sie in Felder auf.
Beispiele für den Linux-Befehl read
Der Befehl read
in Linux ist ein eingebauter Befehl, der in Shell-Skripten und Befehlszeilen verwendet wird, um eine Eingabezeile von der Standardeingabe (stdin) zu lesen und sie einer Variablen zuzuweisen. Hier sind einige Beispiele für die Verwendung des Befehls read
:
Grundlegende Verwendung:
read varname
echo "You entered: $varname"
Dieses Skript wartet darauf, dass der Benutzer einen Text eingibt, der dann in der Variablen varname
gespeichert wird. Wenn der Benutzer die Eingabetaste drückt, zeigt das Skript den eingegebenen Text an.
Mehrere Werte lesen:
echo "Enter two values:"
read var1 var2
echo "You entered: $var1 and $var2"
Hier kann der Benutzer zwei verschiedene Werte eingeben, die in var1
und var2
gespeichert werden. Die Werte sollten durch ein Leerzeichen getrennt werden.
Stumme Eingabe (nützlich für Passwörter):
read -s -p "Enter your password: " password
echo
echo "Password entered."
Mit der Option -s
wird read
stumm geschaltet, d.h. die Eingabe wird nicht an das Terminal zurückgesendet. Dies ist nützlich für sensible Informationen wie Passwörter. Mit der Option -p
kannst du eine Eingabeaufforderung anzeigen lassen.
Lesen einer ganzen Zeile einschließlich Leerzeichen:
IFS= read -r line
echo "You entered: $line"
Wenn du IFS
(Internal Field Separator) auf einen leeren Wert setzt und -r
verwendest (um zu verhindern, dass Backslash-Escapes interpretiert werden), wird die gesamte Eingabezeile, einschließlich Leerzeichen, in die Variable line
eingelesen.
Eine Zeitüberschreitung setzen:
read -t 5 -p "Enter your name (you have 5 seconds): " name
echo "Hello, $name"
Mit der Option -t
wird eine Zeitüberschreitung festgelegt. In diesem Beispiel wartet read
5 Sekunden lang, bis der Benutzer seinen Namen eingegeben hat.
Lesen aus einer Datei:
while IFS= read -r line
do
echo "Line: $line"
done < filename.txt
Dieses Skript liest eine Zeile nach der anderen aus einer Datei namens filename.txt
.
Kommandozeilenoptionen des read-Befehls
Hier sind einige der häufig verwendeten Optionen:
-r
: Diese Option verhindert, dass Backslashes als Escape-Zeichen verwendet werden. Bei-r
werden Backslashes als Literalzeichen behandelt. Dies wird im Allgemeinen empfohlen, um sicherzustellen, dass die Eingabe korrekt gelesen wird, ohne dass ungewollte Interpretationen von Backslash-escaped-Zeichen auftreten.-p
: Mit dieser Option kannst du eine Eingabeaufforderung angeben, die dem Benutzer angezeigt wird. Sie wird häufig verwendet, wenn du mit dem Benutzer interagierst und auf seine Eingaben wartest.read -p "Enter your name: " name
würde zum Beispiel „Geben Sie Ihren Namen ein: “ anzeigen und dann die Eingabe des Benutzers in der Variablenname
speichern.-a array
: Diese Option liest von der Standardeingabe und ordnet die gelesenen Wörter einem indizierten Array zu. Das ist nützlich, um eine Eingabezeile in ein Array zu lesen, wobei jedes Wort ein Element des Arrays wird.-d delim
: Die Option-d
gibt ein Begrenzungszeichen an, das die Eingabezeile abschließt, anstatt eines Zeilenumbruchs. Zum Beispiel liestread -d ":" var
die Eingabe so lange, bis es auf das Zeichen Doppelpunkt trifft.-n num
: Diese Option liestnum
Zeichen und nicht eine ganze Zeile. Sie ist nützlich, wenn du die Eingabe auf eine bestimmte Anzahl von Zeichen beschränken willst.-s
: Stiller Modus. Wenn du-s
verwendest, wird die Eingabe des Benutzers nicht auf dem Bildschirm angezeigt. Dies wird normalerweise für sensible Eingaben wie Passwörter verwendet.-t timeout
: Legt eine Zeitüberschreitung in Sekunden fest. Wenn der Benutzer innerhalb der angegebenen Anzahl von Sekunden keine Eingaben macht, wird der Befehlread
beendet. Dies ist nützlich für Skripte, bei denen du nicht unendlich lange auf Benutzereingaben warten willst.-u fd
: Mit dieser Option wirdread
angewiesen, Eingaben aus dem Dateideskriptorfd
statt aus der Standardeingabe zu lesen. Dies ist eine erweiterte Funktion, die in Szenarien verwendet wird, in denen du Dateideskriptoren in deinem Skript manipulierst.-N num
: Ähnlich wie-n
, aber es werdennum
Zeichen statt Bytes gelesen. Das ist vor allem im Zusammenhang mit Multi-Byte-Zeichen wichtig.-E
: In Verbindung mit-p
deaktiviert diese Option die Interpretation von Backslash-Escapes und Zeilenumbrüchen im Prompt-String.-i text
: Diese Option liefert einen Anfangstext für das Lesen. Sie ist besonders nützlich, wenn du einen Standardwert angeben willst, den der Benutzer bearbeiten kann.
Der Befehl read
ist ein mächtiges Werkzeug in der Bash, um Benutzereingaben zu verarbeiten und Text zu parsen. Du kannst diese Optionen je nach Bedarf kombinieren, um deine spezifischen Anforderungen zu erfüllen.