Linuxi käsk printf

printf käsk

Peal Unixi moodi opsüsteemid, printf käsk sisestab argumendid kasutaja määratud string vormindatud väljundi loomine.

See leht hõlmab GNU / Linux versioon printf .

Kirjeldus

printf prindib a vormindatud string standardväljundini. Selle juured on C programmeerimiskeel , mis kasutab a funktsioon sama nimega. See on mugav viis täpselt vormindatud väljundi loomiseks arvulistest või tekstilistest argumentidest.

Süntaks

printf  FORMAT  [  ARGUMENT  ]...
printf  OPTION  

Valikud

VORMITADA VORMITADA kontrollib väljundit ja määratleb viisi, kuidas ARGUMENT s väljendatakse väljundis. Vaadake Vormindus jaotises.
ARGUMENT Iga ARGUMENT lisatakse vormindatud väljundisse vastavalt VORMITADA .
- aidata Kuva abisõnum ja väljuge.
--versioon Kuva versiooni teave ja väljuge.

Vormindus

The VORMITADA string sisaldab kolme tüüpi objekte:

  • tavalised märgid, mis kopeeritakse sõna-sõnalt väljundisse.
  • tõlgendatud tähemärkide järjestused, mis on pääses tagasilöögiga (' ').
  • teisenduse spetsifikatsioonid, mis määratlevad viisi, kuidas ARGUMENT s väljendatakse väljundi osana.

Siin on kiire näide, mis kasutab neid kolme tüüpi objekte:

printf 'My name is '%s'.
It's a pleasure to meet you.' 'John'

See käsk annab väljundi:

My name is 'John'. It's a pleasure to meet you.

Siin, VORMITADA on lisatud jutumärkidesse ( ' ). On üks teisenduse spetsifikatsioon: % s , mis tõlgendab argumenti 'John' stringina ja lisab selle väljundisse. Põgenenud tähemärkide järjestusi on kolm: kaks esinemissagedust ' ja üks esinemine n . Järjestus ' tõlgib sõna otseses mõttes topeltpakkumisi; sellest pääseb tagasilöögiga nii, et printf teab seda käsitleda sõnasõnalise tegelasena, mitte aga nime lõpuna VORMITADA string. n on a järjestus uus rida iseloomu ja räägib printf uue rea alustamiseks ja sealt väljundi jätkamiseks.

Võimsus printf peitub selles, et iga konkreetse VORMITADA string, ARGUMENT s saab väljundi mõjutamiseks muuta. Näiteks ülaltoodud näite käsu väljundit saab muuta, muutes argumenti 'John'. Kui seda kasutatakse a stsenaarium , saab selle argumendi seada väärtuseks a muutuv . Näiteks käsk

printf 'Hi, I'm %s.
' $LOGNAME

... sisestab väärtuse keskkonnamuutuja $ LOGNAME , mis on kasutajanimi sellest, kes käsku juhtis.

Teisenduse spetsifikatsioonid

Iga teisenduse spetsifikatsioon algab tähega % ja lõpeb teisendusmärgiga. Vahel % ja teisendusmärk võib olla järgmises järjekorras:

- Miinusmärk. See ütleb printf argumendi teisendamise vasakule reguleerimiseks.
number Täisarv, mis määrab välja laiuse; printf prindib teisenduse ARGUMENT vähemalt põllul number tähemärki lai. Vajaduse korral polsterdatakse see vasakule (või paremale, kui on vaja vasakpoolset reguleerimist), et moodustada välja laius.
. Periood, mis eraldab välja laiuse täpsusest.
number Täisarv, täpsus, mis määrab stringist väljaprinditavate tähemärkide maksimaalse arvu või arvude arvu pärast ujukoma kümnendkoha või täisarvu minimaalse arvu numbrite arvu.
h või l Need eristavad vastavalt lühikest ja pikka täisarvu ning neid on tavaliselt vaja ainult arvutiprogrammeerimiseks.

Teisendustähed ise, mis ütlevad printf millist argumenti oodata, on järgmised:

teisendusmärk argumendi tüüp
d , i Kümnendarvuna väljendatud täisarv.
või Täisarv, väljendatuna märkimata kaheksanumbrina.
x , X Täisarv, väljendatuna allkirjata kuueteistkümnendkoht number
u Täisarv, väljendatuna allkirjastamata kümnendarvuna.
c Märkidena väljendatud täisarv. Täisarv vastab märgi omadele ASCII kood .
s Nöör.
f Ujukomaarv vaiketäpsusega 6.
on , ON Ujukoma arv, mis on väljendatud teaduslikus märgistuses, vaiketäpsusega 6.
lk Mälu aadressi kursor.
% Üleminek puudub; sõna otseses mõttes protsendi märk (' % Selle asemel trükitakse ').

Laiust või täpsust võib tähistada tärniga (' * '); kui jah, loeb tärn argumendi, mis peab olema täisarv, ja kasutab seda väärtust. Näiteks,

printf '%.*s' 5 'abcdefg'

... toodab järgmise väljundi:

abcde

Järgmine tabel näitab seda printf väljastaks selle ARGUMENT , ' arvutilootus ', kasutades erinevaid VORMITADA stringid. Iga string on ümbritsetud jutumärkidega, nii et nende täpset ulatust on lihtsam näha:

sd -kaarti ei loeta
VORMISTADA string ARGUMENT string väljundstring
'% s' 'arvutilootus'
'computerhope'
'% 8s' 'arvutilootus'
'computerhope'
'% .8s' 'arvutilootus'
'computer'
'% -8s' 'arvutilootus'
'computerhope'
'% -15s' 'arvutilootus'
'computerhope '
'% 15,8s' 'arvutilootus'
' computer'
'% -15,8' 'arvutilootus'
'computer '
'% -15,2' 'arvutilootus'
'co '

Pange tähele, et printf nõuab konversioonistringide arvu, et need vastaksid arvule ARGUMENT s; see kaardistab nad üks-ühele ja loodab leida täpselt ühe ARGUMENT iga teisendusstringi jaoks. Ainus erand on teisendustring, mis kasutab tärni; sellised stringid nõuavad mõlemat kahte argumenti.

Konversioonistringid tõlgendatakse alati vasakult paremale. Näiteks järgmine printf käsk:

printf '%d plus %5f %s %.*f.' 5 5.05 'equals' 3 10.05

... toodab järgmise väljundi:

5 plus 5.050000 equals 10.050.

Tõlgendatud põgenenud tähemärkide järjestused

Järgmisi tähemärkide järjestusi tõlgendab erimärkidena printf :

' prindib a topeltpakkumine ( ' )
\ prindib a tagasilöögi ( )
to väljastab märguande (mängib kella)
b prindib a tagasilükkeklahv
c juhendab printf enam väljundit ei tooda
on prindib põgenemismärgi (ASCII kood 27)
f prindib vormivoo
n prindib a uus rida
r prindib vaguni tagastamise
t prindib horisontaalse vaheleht
v prindib vertikaalse vahelehe
NNN prindib kaheksandväärtusega baidi NNN (1 kuni 3 numbrit)
x HH prindib baidi kuueteistkümnendsüsteemis HH (1-2 numbrit)
u Hhhh prindib unicode täht kuueteistkümnendsüsteemis Hhhh (4 numbrit)
U HHHHHHHH prindib unicode-märgi kuueteistkümnendsüsteemis HHHHHHHH (8 numbrit)
% b prindib ARGUMENT stringina tähega 'põgenemised tõlgendatuna ülaltoodud loeteluna, välja arvatud see, et kaheksandapõgenikud saavad kuju 0 või 0 NN

Kestis tsiteerides

Olge ettevaatlik, kuidas teie shell tsiteeritud stringe tõlgendab. Kui teie kest ei tõlgenda teie tsiteeritud stringi õigesti, proovige kasutada topeltpakkumisi.

Näited

printf 'hello
world
!'

Prindib järgmise väljundi:

hello world !
printf '%b' 'hello
world
!'

Prindib sama väljundi nagu ülaltoodud näide.

printf 'Your home folder is %s.
' $HOME

Prindib stringi, mis ütleb teile teie kodukataloogi asukoha.

awk - AWK tekstitöötluse programmeerimiskeele tõlk.
bc - Kalkulaator.
viskas välja - väljundtekst.