Jeśli używasz powłoki Bash przez przyzwoity czas, prawdopodobnie wiesz, jak drukować ciągi znaków w terminalu Linux za pomocą polecenia echo. Jednak polecenie printf znacznie ułatwia drukowanie tekstu z określonym formatowaniem.
Dziś nauczymy się, jak korzystać z funkcji printf, aby ulepszyć nasze umiejętności skryptowe Bash.
Co to jest funkcja Bash printf?
Jak sama nazwa wskazuje, printf to funkcja, która drukuje sformatowane ciągi tekstu. Oznacza to, że możesz napisać strukturę ciągu (format), a następnie wypełnić ją wartościami (argumentami).
Jeśli znasz języki programowania C / C ++, możesz już wiedzieć, jak działa printf. Printf w powłoce Bash jest bardzo podobny, ale ma kilka małych różnic.
Ucz się więcej: Najlepsze witryny, w których można zacząć programowanie w C ++
Jak używać printf w powłoce Bash
Podstawowa składnia printf to:
printf format [argument]
Printf wydrukuje plik format string podczas wdrażania ucieka (\) i dyrektyw (%) poprzez użycie określonego argumenty. Zwróć uwagę na dane wyjściowe następującego polecenia:
$ printf "Witaj, świecie% s"
Witaj świecie
Printf wziął świat argument i zastąpił % s znak w określonym ciągu z nim.
Możesz zauważyć, że po wyjściu Bash nie tworzy dla ciebie nowej linii. W przeciwieństwie do polecenia echo, printf nie zakłada, że po wydrukowaniu wyniku chcesz mieć nowy wiersz. Dlatego będziesz musiał użyć znaku nowej linii \ n w każdym przypadku.
Aby wydrukować ciąg, a następnie przejść do nowego wiersza, wpisz printf "Witaj świecie \ n".
Witaj świecie
Ważne jest, aby pamiętać, że printf spróbuje ponownie użyć formatu dla wszystkich twoich argumentów. Możesz to wykorzystać na swoją korzyść, ale jeśli nie będziesz ostrożny, możesz skończyć z takimi wynikami:
$ printf "Nazywam się% s" Jordan Gloor
Nazywam się Jordan Nazywam się Gloor
Należy również pamiętać, że jeśli brakuje argumentu, printf zinterpretuje wszystkie dyrektywy jako 0 (dla numeru) i zero (dla stringów).
$ printf "Witaj,% s."
Cześć, .
Teraz, gdy wiesz, jak działa skrypty Bash z printf w systemie Linux, możesz zacząć używać go w swoich poleceniach.
Linux Bash printf Przykłady
Printf zawiera wiele specyfikatorów formatu, których możesz używać w swoich skryptach. Ale dzisiaj zajmiemy się tylko niektórymi typowymi dla tej funkcji.
1. Sformatuj dane wyjściowe za pomocą ciągu
Aby sformatować dane wyjściowe za pomocą ciągów tekstu, użyj rozszerzenia % s dyrektywa.
$ printf "% s jest jednym z największych% s online." MUO „publikacje technologiczne”
MUO to jedna z największych publikacji poświęconych technologiom online.
2. Formatuj wyjściowy ciąg z liczbami dziesiętnymi
Aby sformatować ciąg za pomocą liczby całkowitej, możesz użyć rozszerzenia %re dyrektywy dla znaku dziesiętnego ze znakiem.
$ printf "MUO zostało założone w% d." 2007
Firma MUO powstała w 2007 roku.
Zwróć uwagę, że jeśli chcesz użyć w wynikach liczby dziesiętnej bez znaku, będziesz musiał użyć rozszerzenia % u dyrektywy.
Związane z: Co oznacza „Bash” w Linuksie?
3. Wyprowadzanie funkcji matematycznych za pomocą printf
Formatowanie funkcji matematycznych za pomocą polecenia printf jest łatwe. Po prostu umieść swoje wyrażenie w podwójnych nawiasach, tak jak zwykle robisz to w Bash, i określ wyrażenie na liście argumentów.
$ printf "1 + 1 to% d" $ ((1 + 1))
1 + 1 to 2
4. Formatuj liczby szesnastkowe
Jeśli chcesz sformatować liczbę szesnastkową, użyj % x dla małych i % X dla wielkich liter.
$ printf% X 1000
3E8C
5. Drukuj datę i godzinę
Aby wydrukować aktualną datę i godzinę, możesz połączyć printf z rozszerzeniem data polecenie i przekaż następujące dyrektywy.
$ printf "% (% m-% d-% Y% H:% M:% S) T" $ (data +% s)
03-26-2021 15:27:57
We wspomnianym powyżej wyjściu można zobaczyć specyfikatory formatu dla miesiąca, dnia, roku, godziny, minuty i sekundy.
6. Formatuj ciągi ze znakami Unicode
Aby wydrukować znaki Unicode za pomocą printf, użyj rozszerzenia \ u escape dla 16-bitowego Unicode i \ U dla 32-bitowego Unicode.
Na przykład możesz wydrukować plik Prawo autorskie symbol za pomocą następującego polecenia:
$ printf "\ u00A9"
©
7. Dodaj odstępy do danych wyjściowych
Możesz formatować swoje łańcuchy za pomocą odstępów, definiując przed specyfikatorem dyrektywy minimalną liczbę drukowanych znaków. Niewykorzystane znaki zostaną wypełnione spacjami.
Na przykład wpisanie printf "% s:% 5d \ n" "Wartość 1" 25 "Wartość 2" 120 wyświetli:
Wartość 1:25
Wartość 2: 120
Plik % 5d specyfikator formatu w danych wyjściowych oznacza, że sformatowany ciąg będzie zawierał co najmniej pięć znaków. Ponieważ 25 ma tylko dwie cyfry, do pozostałych znaków dodawane są spacje.
Jeśli jako szerokość podasz liczbę ujemną, dyrektywa zostanie wyrównana do lewej zamiast do prawej.
$ printf "% -10s:% d" "Kręgi" 25 "Pudełka" 120
Kręgi: 25 Pudełka: 120
Jeśli chcesz zmienić szerokość, możesz podać gwiazdkę zamiast liczby, a printf użyje następnej liczby znalezionej na liście argumentów.
$ printf "% * s:% d" -10 "Kręgi" 25–10 "Pudełka" 120
Kręgi: 25 Pudełka: 120
Związane z: Wszystko, co musisz wiedzieć o pętlach Bash For w systemie Linux
Nauka polecenia printf w systemie Linux
Dzięki poleceniu printf w pasku narzędzi do obsługi skryptów Bash możesz rozpocząć drukowanie złożonych i zmiennych ciągów w swoim terminalu. Podczas tworzenia skryptów Bash ważne jest, aby upewnić się, że pracujesz w możliwie najbardziej produktywnym środowisku. To nie tylko poprawi twoje umiejętności obsługi wiersza poleceń, ale także ogólnie usprawni przepływ pracy.
Gotowy do rozpoczęcia programowania w systemie operacyjnym typu open source? Oto najlepsze dystrybucje Linuksa do programowania.
Czytaj dalej
- Linux
- Linux Bash Shell
- Polecenia Linuksa
Jordan jest nauczycielem i dziennikarzem, którego pasją jest uczynienie Linuksa dostępnym i bezstresowym dla każdego. Ma licencjat z angielskiego i lubi gorącą herbatę. W ciepłych porach roku lubi jeździć na rowerze po wzgórzach Ozarks, w których mieszka.
Zapisz się do naszego newslettera
Dołącz do naszego biuletynu, aby otrzymywać wskazówki techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!
Jeszcze jeden krok…!
Potwierdź swój adres e-mail w wiadomości e-mail, którą właśnie wysłaliśmy.