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
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.
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ší
- Linux
- Linux Bash Shell
- Příkazy pro Linux
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.
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.