Als je de Bash-shell al een behoorlijke tijd gebruikt, weet je waarschijnlijk hoe je strings in de Linux-terminal moet afdrukken met het echo-commando. De opdracht printf maakt het afdrukken van tekst met een specifieke opmaak echter veel gemakkelijker.
Vandaag leren we hoe we de functie printf kunnen gebruiken om onze Bash-scriptvaardigheden te verbeteren.
Wat is de Bash printf-functie?
Zoals de naam al doet vermoeden, is printf een functie die opgemaakte tekenreeksen afdrukt. Dat betekent dat je een stringstructuur (het formaat) kunt schrijven en deze later kunt invullen met waarden (de argumenten).
Als u bekend bent met de programmeertalen C / C ++, weet u misschien al hoe printf werkt. Printf in de Bash-shell lijkt erg op elkaar, maar heeft een paar kleine verschillen.
Kom meer te weten: Beste sites om aan de slag te gaan met programmeren in C ++
Hoe printf te gebruiken in de Bash Shell
De basissyntaxis voor printf is:
printf formaat [argument]
Printf zal het formaat string tijdens het implementeren
ontsnapt (\) en richtlijnen (%) door het gebruik van gespecificeerd argumenten. Let op de uitvoer van het volgende commando:$ printf "Hallo,% s" wereld
Hallo Wereld
Printf nam de wereld- argument en verving de % s teken in de opgegeven tekenreeks ermee.
Het valt je misschien op dat Bash na de uitvoer geen nieuwe regel voor je maakt. In tegenstelling tot het echo-commando, gaat printf er niet van uit dat u een nieuwe regel wilt nadat de uitvoer is afgedrukt. U moet dus het nieuwe lijnteken gebruiken \ n in elk geval.
Om een string af te drukken en vervolgens naar een nieuwe regel te gaan, typt u printf "Hallo wereld \ n".
Hallo Wereld
Het is belangrijk om in gedachten te houden dat printf zal proberen het formaat voor al uw argumenten opnieuw te gebruiken. U kunt dit in uw voordeel gebruiken, maar als u niet oppast, kunt u de volgende resultaten behalen:
$ printf "Mijn naam is% s" Jordan Gloor
Mijn naam is Jordan. Mijn naam is Gloor
U moet zich er ook van bewust zijn dat als een argument ontbreekt, printf alle richtlijnen zal interpreteren als 0 (voor een nummer) en nul (voor een string).
$ printf "Hallo,% s."
Hallo, .
Nu je weet hoe Bash-scripting met printf in Linux werkt, ben je klaar om het in je opdrachten te gebruiken.
Linux Bash printf Voorbeelden
Printf beschikt over veel indelingsspecificaties die u in uw scripts kunt gebruiken. Maar vandaag behandelen we alleen enkele veelvoorkomende voor de functie.
1. Formatteer de uitvoer met een string
Om de uitvoer op te maken met tekenreeksen, gebruikt u de % s richtlijn.
$ printf "% s is een van de grootste online% s." MUO "technologie publicaties"
MUO is een van de grootste online technologiepublicaties.
2. Formatteer de uitvoerstring met decimalen
Om een string op te maken met een geheel getal, kunt u de % d richtlijn voor een ondertekende decimaal.
$ printf "MUO is opgericht in% d." 2007
MUO is opgericht in 2007.
Merk op dat als u een ongetekende decimaal in de uitvoer wilt gebruiken, u de % u richtlijn.
Verwant: Wat betekent "Bash" in Linux?
3. Voer wiskundige functies uit met printf
Wiskundige functies opmaken met de opdracht printf is eenvoudig. Plaats gewoon uw uitdrukking tussen dubbele haakjes zoals u normaal doet in Bash, en specificeer de uitdrukking in de argumentenlijst.
$ printf "1 + 1 is% d" $ ((1 + 1))
1 + 1 is 2
4. Formatteer hexadecimale getallen
Als u een hexadecimaal getal moet opmaken, gebruikt u %X voor kleine letters en %X voor hoofdletters.
$ printf% X 1000
3E8C
5. Datum en tijd afdrukken
Om de huidige datum en tijd af te drukken, kunt u printf combineren met de datum commando en geef de volgende richtlijnen door.
$ printf "% (% m-% d-% Y% H:% M:% S) T" $ (datum +% s)
03-26-2021 15:27:57
U kunt de formaatspecificaties voor maand, dag, jaar, uur, minuut en seconde in de bovengenoemde uitvoer zien.
6. Formatteer tekenreeksen met Unicode-tekens
Om Unicode-tekens af te drukken met printf, gebruikt u de \ u escape voor 16-bits Unicode en \ U voor 32-bits Unicode.
U kunt bijvoorbeeld het auteursrechten symbool met het volgende commando:
$ printf "\ u00A9"
©
7. Voeg afstand toe aan de uitvoer
U kunt uw tekenreeksen opmaken met spatiëring door vóór de richtlijnspecificatie een minimaal aantal afgedrukte tekens te definiëren. Ongebruikte tekens worden ingevuld met spaties.
Bijvoorbeeld typen printf "% s:% 5d \ n" "Waarde 1" 25 "Waarde 2" 120 zal uitvoeren:
Waarde 1:25
Waarde 2: 120
De % 5d formaatspecificatie in de uitvoer geeft aan dat de opgemaakte tekenreeks minimaal vijf tekens zal bevatten. Aangezien 25 slechts twee cijfers heeft, worden er spaties toegevoegd aan de overige tekens.
Als u een negatief getal als breedte doorgeeft, wordt de instructie links uitgelijnd in plaats van rechts uitgelijnd.
$ printf "% -10s:% d" "Cirkels" 25 "Dozen" 120
Cirkels: 25 dozen: 120
Als je de breedte variabel wilt maken, kun je een asterisk doorgeven in plaats van een getal, en printf zal het volgende getal gebruiken dat het in de argumentenlijst vindt.
$ printf "% * s:% d" -10 "Cirkels" 25-10 "Dozen" 120
Cirkels: 25 dozen: 120
Verwant: Alles wat u moet weten over Bash For Loops in Linux
Leren van de Linux printf-opdracht
Met het printf commando in je Bash scripting utility belt, ben je klaar om complexe en variërende strings in je terminal af te drukken. Terwijl u uw Bash-scripts ontwikkelt, is het belangrijk om ervoor te zorgen dat u in een zo productief mogelijke omgeving werkt. Dit zal niet alleen uw opdrachtregelvaardigheden verbeteren, maar ook uw workflow in het algemeen.
Klaar om te beginnen met de ontwikkeling op een open source besturingssysteem? Hier zijn de beste Linux-distributies voor programmeren.
Lees Volgende
- Linux
- Linux Bash Shell
- Linux-opdrachten
Jordan is een tutor en journalist met een passie om Linux voor iedereen toegankelijk en stressvrij te maken. Hij heeft een BA in Engels en houdt van hete thee. Tijdens de warme seizoenen fietst hij graag door de heuvels van de Ozarks waar hij woont.
Abonneer op onze nieuwsbrief
Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!
Nog een stap…!
Bevestig uw e-mailadres in de e-mail die we u zojuist hebben gestuurd.