Bash printf Funktion: 7 Beispiele für Linux
Wenn Sie die Bash-Shell längere Zeit verwendet haben, wissen Sie wahrscheinlich, wie Sie mit dem Befehl echo Zeichenfolgen im Linux-Terminal drucken. Der Befehl printf erleichtert jedoch das Drucken von Text mit einer bestimmten Formatierung erheblich.
Heute lernen wir, wie wir die printf-Funktion nutzen können, um unsere Bash-Scripting-Fähigkeiten zu verbessern.
Was ist die Bash printf Funktion?
Wie der Name schon sagt, ist printf eine Funktion, die formatierte Textzeichenfolgen druckt. Das heißt, Sie können eine Zeichenfolgenstruktur (das Format) schreiben und später mit Werten (den Argumenten) füllen.
Wenn Sie mit den Programmiersprachen C / C ++ vertraut sind, wissen Sie möglicherweise bereits, wie printf funktioniert. Printf in der Bash-Shell ist sehr ähnlich, weist jedoch einige kleine Unterschiede auf.
Verwendung von printf in der Bash Shell
Die grundlegende Syntax für printf lautet:
printf format [argument]
Printf wird das Format – String drucken , während entkommt Umsetzung () und Richtlinien (%) durch die Verwendung von angegebenen Argumenten. Beachten Sie die Ausgabe des folgenden Befehls:
$ printf "Hello, %s" world
Hello, world
Printf hat die Welt Argument und ersetzt den Charakter s% in der angegebenen Zeichenfolge mit ihm.
Möglicherweise stellen Sie fest, dass Bash nach der Ausgabe keine neue Zeile für Sie erstellt. Im Gegensatz zum Befehl echo geht printf nicht davon aus, dass Sie nach dem Drucken der Ausgabe eine neue Zeile wünschen. Daher müssen Sie in jeder Instanz das neue Zeilenzeichen n verwenden .
Um eine Zeichenfolge zu drucken und dann in eine neue Zeile zu wechseln, geben Sie printf "Hallo Welt n" ein .
Hello, world
Es ist wichtig zu beachten, dass printf versucht, das Format für alle Ihre Argumente wiederzuverwenden. Sie können dies zu Ihrem Vorteil nutzen, aber wenn Sie nicht vorsichtig sind, können Sie folgende Ergebnisse erzielen:
$ printf "My name is %s " Jordan Gloor
My name is Jordan My name is Gloor
Sie sollten sich auch darüber im Klaren sein, dass printf bei fehlendem Argument alle Anweisungen als 0 (für eine Zahl) und null (für eine Zeichenfolge) interpretiert.
$ printf "Hello, %s."
Hello, .
Nachdem Sie nun wissen, wie Bash-Scripting mit printf unter Linux funktioniert, können Sie es in Ihren Befehlen verwenden.
Linux Bash printf Beispiele
Printf bietet viele Formatspezifizierer, die Sie in Ihren Skripten verwenden können. Aber heute werden wir nur einige gebräuchliche für die Funktion behandeln.
1. Formatieren Sie die Ausgabe mit einem String
Verwenden Sie die Direktive % s , um die Ausgabe mit Textzeichenfolgen zu formatieren.
$ printf "%s is one of the largest online %s." MUO "technology publications"
MUO is one of the largest online technology publications.
2. Formatieren Sie die Ausgabezeichenfolge mit Dezimalstellen
Um eine Zeichenfolge mit einer Ganzzahl zu formatieren, können Sie die Direktive % d für eine vorzeichenbehaftete Dezimalstelle verwenden.
$ printf "MUO was founded in %d." 2007
MUO was founded in 2007.
Beachten Sie, dass Sie stattdessen die Direktive % u verwenden müssen, wenn Sie in der Ausgabe eine vorzeichenlose Dezimalstelle verwenden möchten.
3. Mathematische Funktionen mit printf ausgeben
Das Formatieren von mathematischen Funktionen mit dem Befehl printf ist einfach. Platzieren Sie Ihren Ausdruck einfach in doppelten Klammern, wie Sie es normalerweise in Bash tun, und geben Sie den Ausdruck in der Argumentliste an.
$ printf "1 + 1 is %d" $((1+1))
1 + 1 is 2
4. Hexadezimalzahlen formatieren
Wenn Sie eine Hexadezimalzahl formatieren müssen, verwenden Sie % x für Kleinbuchstaben und % X für Großbuchstaben.
$ printf %X 1000
3E8C
5. Datum und Uhrzeit drucken
Um das aktuelle Datum und die aktuelle Uhrzeit zu drucken, können Sie printf mit dem Befehl date kombinieren und die folgenden Anweisungen übergeben.
$ printf "%(%m-%d-%Y %H:%M:%S)T" $(date +%s)
03-26-2021 15:27:57
Sie können die Formatspezifizierer für Monat, Tag, Jahr, Stunde, Minute und Sekunde in der oben genannten Ausgabe sehen.
6. Formatieren Sie Zeichenfolgen mit Unicode-Zeichen
Verwenden Sie zum Drucken von Unicode-Zeichen mit printf das Escapezeichen u für 16-Bit-Unicode und U für 32-Bit-Unicode.
Beispielsweise können Sie das Copyright- Symbol mit dem folgenden Befehl drucken:
$ printf "u00A9"
©
7. Fügen Sie dem Ausgang einen Abstand hinzu
Sie können Ihre Zeichenfolgen mit Abständen formatieren, indem Sie vor dem Direktivenbezeichner eine minimale Anzahl gedruckter Zeichen definieren. Nicht verwendete Zeichen werden mit Leerzeichen ausgefüllt.
Wenn Sie beispielsweise printf "% s:% 5d n" "Wert 1" 25 "Wert 2" 120 eingeben, wird Folgendes ausgegeben:
Value 1: 25
Value 2: 120
Der Formatbezeichner % 5d in der Ausgabe gibt an, dass die formatierte Zeichenfolge mindestens fünf Zeichen enthält. Da 25 nur zwei Ziffern hat, werden den verbleibenden Zeichen Leerzeichen hinzugefügt.
Wenn Sie eine negative Zahl als Breite übergeben, wird die Direktive nicht rechtsbündig, sondern linksbündig ausgerichtet.
$ printf "%-10s: %d " "Circles" 25 "Boxes" 120
Circles : 25 Boxes : 120
Wenn Sie die Breite variabel machen möchten, können Sie anstelle einer Zahl ein Sternchen übergeben, und printf verwendet die nächste Zahl, die in der Argumentliste gefunden wird.
$ printf "%*s: %d " -10 "Circles" 25 -10 "Boxes" 120
Circles : 25 Boxes : 120
Erlernen des Linux-Befehls printf
Mit dem Befehl printf in Ihrem Bash-Skript-Dienstprogramm können Sie komplexe und unterschiedliche Zeichenfolgen in Ihrem Terminal drucken. Bei der Entwicklung Ihrer Bash-Skripte ist es wichtig, dass Sie in einer möglichst produktiven Umgebung arbeiten. Dies verbessert nicht nur Ihre Befehlszeilenfähigkeiten, sondern auch Ihren Workflow im Allgemeinen.