Pokud používáte shell Bash slušnou dobu, pravděpodobně víte, jak tisknout řetězce v terminálu Linux pomocí příkazu echo. Příkaz printf však mnohem usnadňuje tisk textu se specifickým formátováním.

Dnes se naučíme, jak využít funkci printf k posílení našich skriptovacích schopností Bash.

Co je funkce Bash printf?

Jak název napovídá, printf je funkce, která tiskne formátované řetězce textu. To znamená, že můžete napsat strukturu řetězce (formát) a později ji vyplnit hodnotami (argumenty).

Pokud jste obeznámeni s programovacími jazyky C / C ++, možná už víte, jak funguje printf. Printf v prostředí Bash je velmi podobný, ale má několik malých rozdílů.

Více informací: Nejlepší stránky pro začátek programování v C ++

Jak používat printf v Bash Shell

Základní syntaxe pro printf je:

formát printf [argument]

Printf vytiskne formát řetězec při implementaci uniká (\) a směrnice (%) prostřednictvím použití uvedených argumenty. Poznamenejte si výstup následujícího příkazu:

$ printf „Ahoj,% s“ svět
Ahoj světe
instagram viewer

Printf vzal svět argument a nahradil % s znak v zadaném řetězci s ním.

Můžete si všimnout, že po výstupu Bash pro vás nevytvoří nový řádek. Na rozdíl od příkazu echo nebude printf po vytištění výstupu předpokládat, že chcete nový řádek. Budete tedy muset použít znak nového řádku \ n v každém případě.

Chcete-li vytisknout řetězec a poté přejít na nový řádek, zadejte printf "Ahoj, svět \ n".

Ahoj světe

Je důležité mít na paměti, že printf se pokusí znovu použít formát pro všechny vaše argumenty. Můžete to využít ve svůj prospěch, ale pokud nejste opatrní, můžete skončit s takovými výsledky:

$ printf "Jmenuji se% s" Jordan Gloor
Jmenuji se Jordan Jmenuji se Gloor

Měli byste také vědět, že pokud chybí argument, printf interpretuje všechny směrnice jako 0 (pro číslo) a nula (pro řetězec).

$ printf "Dobrý den,% s."
Ahoj, .

Nyní, když víte, jak funguje skriptování Bash s printf v Linuxu, jste připraveni ho začít používat ve svých příkazech.

Linux Bash printf Příklady

Printf obsahuje mnoho specifikátorů formátu, které můžete použít ve svých skriptech. Ale dnes budeme pro tuto funkci pokrývat pouze některé běžné.

1. Formátovat výstup s řetězcem

Chcete-li formátovat výstup pomocí řetězců textu, použijte % s směrnice.

$ printf "% s je jedním z největších online% s." "Technologické publikace" MUO
MUO je jednou z největších online technologických publikací.

2. Formátovat výstupní řetězec s desetinnými místy

Chcete-li naformátovat řetězec na celé číslo, můžete použít % d směrnice pro podepsané desetinné místo.

$ printf "MUO byla založena v% d." 2007
MUO byla založena v roce 2007.

Všimněte si, že pokud chcete ve výstupu použít desetinné místo bez znaménka, budete muset použít % u směrnice.

Příbuzný: Co znamená „Bash“ v Linuxu?

3. Výstupní matematické funkce pomocí tisku

Formátování matematických funkcí pomocí příkazu printf je snadné. Prostě vložte svůj výraz do dvojitých závorek, jako to obvykle děláte v Bash, a zadejte výraz v seznamu argumentů.

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

4. Formátujte hexadecimální čísla

Pokud potřebujete formátovat hexadecimální číslo, použijte %X pro malá písmena a %X pro velká písmena.

$ printf% X 1000
3E8C

5. Tisk data a času

Chcete-li vytisknout aktuální datum a čas, můžete kombinovat printf s datum velení a předání následujících směrnic.

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

Ve výše uvedeném výstupu můžete vidět specifikátory formátu pro měsíc, den, rok, hodinu, minutu a sekundu.

6. Formátujte řetězce pomocí znaků Unicode

Chcete-li tisknout znaky Unicode pomocí printf, použijte \ u únik pro 16bitové Unicode a \ U pro 32bitový Unicode.

Můžete například vytisknout autorská práva symbol s následujícím příkazem:

$ printf "\ u00A9"
©

7. Přidejte na výstup mezery

Řetězce můžete formátovat s mezerami tak, že před specifikátorem směrnice definujete minimální počet vytištěných znaků. Nepoužité znaky budou vyplněny mezerami.

Například psaní printf "% s:% 5d \ n" "hodnota 1" 25 "hodnota 2" 120 bude výstup:

Hodnota 1:25
Hodnota 2: 120

The %5 d specifikátor formátu ve výstupu označuje, že formátovaný řetězec bude obsahovat minimálně pět znaků. Protože 25 má pouze dvě číslice, jsou ke zbývajícím znakům přidány mezery.

Pokud jako šířku zadáte záporné číslo, bude direktiva zarovnána doleva namísto zarovnána doprava.

$ printf "% -10s:% d" "Kruhy" 25 "Krabice" 120
Kruhy: 25 krabic: 120

Pokud chcete vytvořit proměnnou width, můžete místo čísla předat hvězdičku a printf použije další číslo, které najde v seznamu argumentů.

$ printf "% * s:% d" -10 "Kruhy" 25 -10 "Krabice" 120
Kruhy: 25 krabic: 120

Příbuzný: Vše, co potřebujete vědět o Bash For Loops v Linuxu

Naučte se příkaz Linux printf

S příkazem printf ve vašem skriptovacím pásu Bash jste připraveni zahájit tisk složitých a proměnných řetězců v terminálu. Při vývoji skriptů Bash je důležité se ujistit, že pracujete v co nejproduktivnějším prostředí. To nejen zlepší vaše dovednosti v příkazovém řádku, ale také obecně zlepší váš pracovní postup.

E-mailem
10 nejlepších linuxových distribucí pro vývojáře

Jste připraveni zahájit vývoj v operačním systému s otevřeným zdrojovým kódem? Zde jsou nejlepší linuxové distribuce pro programování.

Přečtěte si další

Související témata
  • Linux
  • Linux Bash Shell
  • Příkazy pro Linux
O autorovi
Jordan Gloor (32 článků publikováno)

Jordan je učitel a novinář, který se velmi zajímá o to, aby Linux byl dostupný a bez stresu pro všechny. Má titul BA v angličtině a věc pro horký čaj. Během teplého období rád jezdí na kole po vrchu Ozarks, kde žije.

Více od Jordan Gloor

Přihlaste se k odběru našeho zpravodaje

Připojte se k našemu zpravodaji s technickými tipy, recenzemi, bezplatnými elektronickými knihami a exkluzivními nabídkami!

Ještě jeden krok…!

V e-mailu, který jsme vám právě poslali, potvrďte svou e-mailovou adresu.

.