Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «Командная строка Linux. ПолноС руководство». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 63

Автор Уильям Шоттс

-w ΡˆΠΈΡ€ΠΈΠ½Π°

Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ тСкст ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΡˆΠΈΡ€ΠΈΠ½Π΅. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡˆΠΈΡ€ΠΈΠ½Π° 75 символов. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ fmt Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ строки Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΡ€ΠΎΡ‡Π΅, Ρ‡Π΅ΠΌ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΡΠ±Π°Π»Π°Π½ΡΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ ΡˆΠΈΡ€ΠΈΠ½Ρ‹ тСкста


ΠžΡΠΎΠ±Ρ‹ΠΉ интСрСс прСдставляСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -p. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ Ρ„Π°ΠΉΠ»Π°, Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π², Ρ‡Ρ‚ΠΎ всС ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ строки Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ символов. МногиС языки программирования ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с символа Ρ€Π΅ΡˆΠ΅Ρ‚ΠΊΠΈ (#), ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим Ρ„Π°ΠΉΠ», ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ исходный тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с коммСнтариями:

[ [email protected] ~]$ cat > fmt-code.txt

# Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» содСрТит ΠΊΠΎΠ΄ с коммСнтариями.

# Π­Ρ‚Π° строка - ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ.

# Π—Π° Π½Π΅ΠΉ слСдуСт другая строка с ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ.

# И Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π°.

Π­Ρ‚ΠΎ Π½Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ, Π° строка с ΠΊΠΎΠ΄ΠΎΠΌ.

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° строка с ΠΊΠΎΠ΄ΠΎΠΌ.

И Π΅Ρ‰Π΅.

Π€Π°ΠΉΠ» ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° содСрТит ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ со строки # (символ # ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π»), ΠΈ строки Β«ΠΊΠΎΠ΄Π°Β». Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ fmt, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈ ΠΏΡ€ΠΈ этом Π½Π΅ Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚ΡŒ ΠΊΠΎΠ΄:

[ [email protected] ~]$ fmt -w 50 -p '# ' fmt-code.txt

# Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» содСрТит ΠΊΠΎΠ΄ с коммСнтариями.

# Π­Ρ‚Π° строка - ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ. Π—Π° Π½Π΅ΠΉ слСдуСт другая

# строка с ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ. И Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π°.

Π­Ρ‚ΠΎ Π½Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ, Π° строка с ΠΊΠΎΠ΄ΠΎΠΌ.

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° строка с ΠΊΠΎΠ΄ΠΎΠΌ.

И Π΅Ρ‰Π΅.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ смСТныС строки ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π±Ρ‹Π»ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹, Π° пустыС строки ΠΈ строки, Π½Π΅ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ прСфикса, ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ Π½Π΅Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹ΠΌΠΈ.

pr β€” Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ тСкста для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ


ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° pr ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠΈ тСкста Π½Π° страницы. ΠŸΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒΡŽ тСкст Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π½Π° страницы с нСсколькими пустыми строками Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ пустыС поля Π²Π²Π΅Ρ€Ρ…Ρƒ ΠΈ Π²Π½ΠΈΠ·Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ страницы. Π’ дальнСйшСм эти поля ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для вставки Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΠΈ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΠΊΠΎΠ»ΠΎΠ½Ρ‚ΠΈΡ‚ΡƒΠ»ΠΎΠ².

ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρƒ pr, форматируя наш Ρ„Π°ΠΉΠ» distros.txt Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… страниц (Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π΅ страницы):

[ [email protected] ~]$ pr -l 15 -w 65 distros.txt

2012-12-11 18:27 distros.txt Page 1

SUSE 10.2 12/07/2006

Fedora 10 11/25/2008

SUSE 11.0 06/19/2008

Ubuntu 8.04 04/24/2008

Fedora 8 11/08/2007

2012-12-11 18:27 distros.txt Page 2

SUSE 10.3 10/04/2007

Ubuntu 6.10 10/26/2006

Fedora 7 05/31/2007

Ubuntu 7.10 10/18/2007

Ubuntu 7.04 04/19/2007

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ использовались ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ -l (Π΄Π»ΠΈΠ½Π° (length) страницы) ΠΈ -w (ΡˆΠΈΡ€ΠΈΠ½Π° (width) страницы), ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ «страницы» β€” 65 символов Π² ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ 15 строк Π² Π΄Π»ΠΈΠ½Ρƒ. pr Ρ€Π°Π·Π±ΠΈΠ»Π° содСрТимоС Ρ„Π°ΠΉΠ»Π° distros.txt Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ страницы, Π΄ΠΎΠ±Π°Π²ΠΈΠ² нСсколько пустых строк свСрху ΠΈ снизу, ΠΈ создала Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, содСрТащий врСмя послСднСго измСнСния Ρ„Π°ΠΉΠ»Π°, имя Ρ„Π°ΠΉΠ»Π° ΠΈ Π½ΠΎΠΌΠ΅Ρ€ страницы. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° pr ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ мноТСство ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² для управлСния Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ страницы, Π½ΠΎ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ Π½ΠΈΡ… ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π² Π³Π»Π°Π²Π΅ 22.

printf β€” Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ…


Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄ Π² этой Π³Π»Π°Π²Π΅, ΠΊΠΎΠΌΠ°Π½Π΄Π° printf Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ (ΠΎΠ½Π° Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ со стандартного Π²Π²ΠΎΠ΄Π°) ΠΈ Ρ€Π΅Π΄ΠΊΠΎ примСняСтся нСпосрСдствСнно Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС (Ρ‡Π°Ρ‰Π΅ ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² сцСнариях). ΠŸΠΎΡ‡Π΅ΠΌΡƒ это Ρ‚Π°ΠΊ Π²Π°ΠΆΠ½ΠΎ? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ ΡˆΠΈΡ€ΠΎΠΊΠΎ.

Команда printf (Π΅Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ происходит ΠΎΡ‚ print formatted (Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄)) ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±Ρ‹Π»Π° создана ΠΊΠ°ΠΊ функция для языка программирования C ΠΈ впослСдствии Π±Ρ‹Π»Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… языках, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ язык ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ. ЀактичСски Π² bash ΠΊΠΎΠΌΠ°Π½Π΄Π° printf Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΊΠ°ΠΊ встроСнная ΠΊΠΎΠΌΠ°Π½Π΄Π°. Она ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:

printf "Ρ„ΠΎΡ€ΠΌΠ°Ρ‚" Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹

Команда ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ строку с описаниСм Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, которая Π·Π°Ρ‚Π΅ΠΌ примСняСтся ΠΊ списку Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². ΠžΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ пСрСдаСтся Π² стандартный Π²Ρ‹Π²ΠΎΠ΄. НиТС приводится простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

[ [email protected] ~]$ printf "I formatted the string: %s\n" foo

I formatted the string: foo

Π‘Ρ‚Ρ€ΠΎΠΊΠ° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ тСкст (Ρ‚Π°ΠΊΠΎΠΉ, ΠΊΠ°ΠΊ I formatted the string:), экранированныС ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ \n, символ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки) ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с символа %, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ спСцификаторами ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ (conversion specifications). Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ спСцификатор прСобразования %s ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для форматирования строки foo ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΅Π΅ Π² Π²Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

[ [email protected] ~]$ printf "I formatted '%s' as a string.\n" foo

I formatted 'foo' as a string.

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π² Π²Ρ‹Π²ΠΎΠ΄Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ спСцификатор прСобразования %s замСщаСтся строкой foo. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ s ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для форматирования строковых Π΄Π°Π½Π½Ρ‹Ρ…. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ спСцификаторы для Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²ΠΈΠ΄ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Ρ‚Π°Π±Π». 21.4 пСрСчислСны Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Π’Π°Π±Π»ΠΈΡ†Π° 21.4. Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ printf

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€

ОписаниС

d

Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ число ΠΊΠ°ΠΊ дСсятичноС Ρ†Π΅Π»ΠΎΠ΅ со Π·Π½Π°ΠΊΠΎΠΌ

f

Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ вСщСствСнноС число

o

Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ цСлочислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ число

s

Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ строку

x

Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ цСлочислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ число, с использованиСм Π±ΡƒΠΊΠ² aβ€”f Π½ΠΈΠΆΠ½Π΅Π³ΠΎ рСгистра, Π³Π΄Π΅ это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ

X

Π’ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ x, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π±ΡƒΠΊΠ²Ρ‹ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ рСгистра

%

Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ символ % (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ сам спСцификатор ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄: %%)


ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ дСйствиС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ спСцификатора прСобразования Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ строки 380:

[ [email protected] ~]$ printf "%d, %f, %o, %s, %x, %X\n" 380 380 380 380 380 380

380, 380.000000, 574, 380, 17c, 17C

Π’Π°ΠΊ ΠΊΠ°ΠΊ Π² строкС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΡƒΠΊΠ°Π·Π°Π½ΠΎ ΡˆΠ΅ΡΡ‚ΡŒ спСцификаторов Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, Π½Π°ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ printf ΡˆΠ΅ΡΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π¨Π΅ΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ дСйствия ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ спСцификатора.

Для настройки Π²Ρ‹Π²ΠΎΠ΄Π° спСцификатору Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ нСсколько Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². ΠŸΠΎΠ»Π½Ρ‹ΠΉ синтаксис спСцификатора прСобразования выглядит Ρ‚Π°ΠΊ:

%[Ρ„Π»Π°Π³ΠΈ][ΡˆΠΈΡ€ΠΈΠ½Π°][.Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ]спСцификатор_прСобразования

Для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Ссли ΠΈΡ… нСсколько, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ порядкС. ВсС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ описаны Π² Ρ‚Π°Π±Π». 21.5.

Π’Π°Π±Π»ΠΈΡ†Π° 21.5. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ спСцификаторов ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ printf

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€

ОписаниС

Ρ„Π»Π°Π³ΠΈ

БущСствуСт ΠΏΡΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„Π»Π°Π³ΠΎΠ²:

# ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π²Ρ‹Π²ΠΎΠ΄Π° β€” дСйствуСт ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ, Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…. Для прСобразования o (Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ число) Π² Π²Ρ‹Π²ΠΎΠ΄ добавляСтся прСфикс 0 (ноль). Для ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ x ΠΈ X (ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ число) Π² Π²Ρ‹Π²ΠΎΠ΄ добавляСтся прСфикс 0x ΠΈΠ»ΠΈ 0X соотвСтствСнно.

0 (ноль) β€” добавляСт Π½ΡƒΠ»ΠΈ Π² Π½Π°Ρ‡Π°Π»ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π°. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π²Π΅Π΄ΡƒΡ‰ΠΈΠΌΠΈ нулями, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: 000380.

- (дСфис) β€” Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Π»Π΅Π²ΠΎΠΌΡƒ ΠΊΡ€Π°ΡŽ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ printf выполняСт Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΎΠΌΡƒ ΠΊΡ€Π°ΡŽ.

(ΠΏΡ€ΠΎΠ±Π΅Π») β€” добавляСт Π²Π΅Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ±Π΅Π» ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ числами.

+ (Π·Π½Π°ΠΊ «плюс») β€” Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°ΠΊ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ числами. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ printf Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°ΠΊΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ числами

ΡˆΠΈΡ€ΠΈΠ½Π°

Число, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΡˆΠΈΡ€ΠΈΠ½Ρƒ поля Π²Ρ‹Π²ΠΎΠ΄Π° Π² символах

.Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ число Π·Π½Π°ΠΊΠΎΠ² послС дСсятичной запятой ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ вСщСствСнных чисСл. Для строковых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ опрСдСляСт число Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… символов


Π’ Ρ‚Π°Π±Π». 21.6 пСрСчислСны Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ примСнСния Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ².

Π’Π°Π±Π»ΠΈΡ†Π° 21.6. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ примСнСния спСцификаторов ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ printf

АргумСнт

Π€ΠΎΡ€ΠΌΠ°Ρ‚

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

380

"%d"

380

ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ†Π΅Π»Ρ‹Ρ… чисСл

380

"%#x"

0x17c

Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ цСлочислСнных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ прСдставлСниС с использованиСм Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ форматирования

380

"%05d"

00380

Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ цСлочислСнных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ с Π²Π΅Π΄ΡƒΡ‰ΠΈΠΌΠΈ нулями ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ поля, Ρ€Π°Π²Π½Ρ‹ΠΌ пяти символам

380

"%05.5f"

380.00000

Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ вСщСствСнных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ с Π²Π΅Π΄ΡƒΡ‰ΠΈΠΌΠΈ нулями ΠΈ 5 Π·Π½Π°ΠΊΠ°ΠΌΠΈ послС запятой. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ указанная минимальная ΡˆΠΈΡ€ΠΈΠ½Π° поля (5) мСньшС фактичСской ΡˆΠΈΡ€ΠΈΠ½Ρ‹ ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ числа, Π²Π΅Π΄ΡƒΡ‰ΠΈΠ΅ Π½ΡƒΠ»ΠΈ Π½Π΅ Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹

380

"%010.5f"

0380.00000

Π¨ΠΈΡ€ΠΈΠ½Π° поля Π²Ρ‹Π²ΠΎΠ΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π° Π΄ΠΎ 10, вслСдствиС Ρ‡Π΅Π³ΠΎ появился Π²Π΅Π΄ΡƒΡ‰ΠΈΠΉ Π½ΡƒΠ»ΡŒ

380

"%+d"

+380

Π€Π»Π°Π³ + Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π·Π½Π°ΠΊ Ρƒ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл