Hvis du har brukt Bash-skallet i en anstendig tid, vet du sannsynligvis hvordan du skriver ut strenger i Linux-terminalen ved hjelp av ekkokommandoen. Printf-kommandoen gjør det imidlertid lettere å skrive ut tekst med spesifikk formatering.

I dag lærer vi hvordan vi kan bruke printf-funksjonen for å forbedre våre Bash-skriptferdigheter.

Hva er Bash printf-funksjonen?

Som navnet antyder, er printf en funksjon som skriver ut formaterte tekststrenger. Det betyr at du kan skrive en strengstruktur (formatet) og senere fylle den ut med verdier (argumentene).

Hvis du er kjent med C / C ++ programmeringsspråk, vet du kanskje allerede hvordan printf fungerer. Printf i Bash-skallet er veldig likt, men det har noen få små forskjeller.

Lære mer: De beste stedene å komme i gang med C ++ programmering

Hvordan bruke printf i Bash Shell

Den grunnleggende syntaksen for printf er:

printf format [argument]

Printf vil skrive ut format streng mens du implementerer rømmer (\) og direktiver (%) gjennom bruk av spesifisert argumenter. Legg merke til utdataene fra følgende kommando:

$ printf "Hei,% s" verden
Hei Verden

Printf tok verden argument og erstattet % s tegn i den angitte strengen med den.

Du vil kanskje legge merke til at Bash ikke oppretter en ny linje for deg etter utgangen. I motsetning til ekkokommandoen, vil printf ikke anta at du vil ha en ny linje etter at utskriften er skrevet ut. Dermed må du bruke den nye linjekarakteren \ n i hvert tilfelle.

For å skrive ut en streng og deretter flytte til en ny linje, skriv inn printf "Hei, verden \ n".

Hei Verden

Det er viktig å huske at printf vil prøve å gjenbruke formatet for alle argumentene dine. Du kan bruke dette til din fordel, men hvis du ikke er forsiktig, kan du ende opp med resultater som dette:

$ printf "Mitt navn er% s" Jordan Gloor
Jeg heter Jordan Jeg heter Gloor

Du bør også være klar over at hvis et argument mangler, vil printf tolke alle direktiver som 0 (for et tall) og null (for en streng).

$ printf "Hei,% s."
Hallo, .

Nå som du vet hvordan Bash-skripting med printf i Linux fungerer, er du klar til å begynne å bruke den i kommandoene dine.

Linux Bash printf Eksempler

Printf har mange formatspesifikasjoner som du kan bruke i skriptene dine. Men i dag vil vi bare dekke noen vanlige for funksjonen.

1. Format utdata med streng

For å formatere utdataene med tekststrenger, bruk % s direktivet.

$ printf "% s er en av de største% s på nettet." MUO "teknologipublikasjoner"
MUO er en av de største elektroniske teknologipublikasjonene.

2. Formater utdata streng med desimaler

For å formatere en streng med et helt tall, kan du bruke % d direktiv for en signert desimal.

$ printf "MUO ble grunnlagt i% d." 2007
MUO ble grunnlagt i 2007.

Merk at hvis du vil bruke en usignert desimal i utgangen, må du bruke % u direktivet i stedet.

I slekt: Hva betyr "Bash" i Linux?

3. Matematikkfunksjoner ved bruk av printf

Formatering av mattefunksjoner med printf-kommandoen er enkelt. Bare plasser uttrykket ditt i doble parenteser som du vanligvis gjør i Bash, og spesifiser uttrykket i argumentlisten.

$ printf "1 + 1 er% d" $ ((1 + 1))
1 + 1 er 2

4. Formater heksadesimale tall

Hvis du trenger å formatere et heksadesimalt tall, bruk % x for små bokstaver og % X for store bokstaver.

$ printf% X 1000
3E8C

5. Skriv ut dato og klokkeslett

For å skrive ut gjeldende dato og klokkeslett, kan du kombinere printf med Dato kommandere og vedta følgende direktiver.

$ printf "% (% m-% d-% Y% H:% M:% S) T" $ (dato +% s)
03-26-2021 15:27:57

Du kan se formatspesifikasjonene for måned, dag, år, time, minutt og sekund i ovennevnte utdata.

6. Formater strenger med Unicode-tegn

For å skrive ut Unicode-tegn med printf, bruk \ u flykte for 16-biters Unicode og \ U for 32-biters Unicode.

Du kan for eksempel skrive ut opphavsrett symbol med følgende kommando:

$ printf "\ u00A9"
©

7. Legg til avstand til utgangen

Du kan formatere strengene dine med mellomrom ved å definere et minimum antall tegn som skrives ut før direktivet. Ubrukt tegn vil bli fylt ut med mellomrom.

For eksempel å skrive printf "% s:% 5d \ n" "Verdi 1" 25 "Verdi 2" 120 vil sende ut:

Verdi 1: 25
Verdi 2: 120

De % 5d formatspesifikator i utgangen angir at den formaterte strengen vil inneholde minst fem tegn. Siden 25 bare har to sifre, blir mellomrom lagt til de resterende tegnene.

Hvis du passerer et negativt tall som bredden, vil direktivet være venstrejustert i stedet for høyrejustert.

$ printf "% -10s:% d" "Circles" 25 "Boxes" 120
Sirkler: 25 Bokser: 120

Hvis du vil gjøre bredden variabel, kan du sende en stjerne i stedet for et tall, og printf vil bruke det neste tallet det finner i argumentlisten.

$ printf "% * s:% d" -10 "Sirkler" 25 -10 "Bokser" 120
Sirkler: 25 Bokser: 120

I slekt: Alt du trenger å vite om Bash For Loops i Linux

Lære Linux printf Command

Med printf-kommandoen i Bash-skriptverktøybeltet, er du klar til å begynne å skrive ut komplekse og varierende strenger i terminalen. Når du utvikler Bash-skriptene dine, er det viktig å sørge for at du jobber i et mest produktivt miljø. Dette forbedrer ikke bare kommandolinjeferdighetene dine, men forbedrer også arbeidsflyten generelt.

E-post
10 beste Linux Distros for utviklere

Klar til å starte utviklingen på et operativsystem med åpen kildekode? Her er de beste Linux-distribusjonene for programmering.

Les Neste

Relaterte temaer
  • Linux
  • Linux Bash Shell
  • Linux-kommandoer
Om forfatteren
Jordan Gloor (32 artikler publisert)

Jordan er en veileder og journalist som brenner for å gjøre Linux tilgjengelig og stressfritt for alle. Han har en BA i engelsk og en ting for varm te. I de varme årstidene liker han å sykle åsene i Ozarks der han bor.

Mer fra Jordan Gloor

Abonner på vårt nyhetsbrev

Bli med på nyhetsbrevet vårt for tekniske tips, anmeldelser, gratis e-bøker og eksklusive tilbud!

Ett steg til…!

Bekreft e-postadressen din i e-posten vi nettopp sendte deg.

.