Jeśli używasz powłoki Bash przez przyzwoity czas, prawdopodobnie wiesz, jak drukować łańcuchy w terminalu Linux za pomocą polecenia echo. Jednak polecenie printf znacznie ułatwia drukowanie tekstu z określonym formatowaniem.
Dzisiaj nauczymy się, jak korzystać z funkcji printf, aby poprawić nasze umiejętności pisania skryptów w Bash.
Co to jest funkcja printf Bash?
Jak sama nazwa wskazuje, printf to funkcja, która drukuje sformatowane ciągi tekstu. Oznacza to, że możesz napisać strukturę łańcuchową (format), a później wypełnić ją wartościami (argumentami).
Jeśli znasz języki programowania C/C++, być może wiesz już, jak działa printf. Printf w powłoce Bash jest bardzo podobny, ale ma kilka małych różnic.
Ucz się więcej: Najlepsze strony do rozpoczęcia programowania w C++
Jak używać printf w powłoce Bash
Podstawowa składnia printf to:
printf format [argument]
Printf wydrukuje format ciąg podczas wdrażania przecieki ( ) oraz dyrektywy ( % ) poprzez użycie określonego argumenty . Zwróć uwagę na dane wyjściowe następującego polecenia:
$ printf 'Hello, %s' world
Hello, world
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 danych wyjściowych chcesz mieć nowy wiersz. Dlatego musisz użyć znaku nowej linii w każdym przypadku.
Aby wydrukować ciąg, a następnie przejść do nowej linii, wpisz printf 'Witaj, świecie ' .
Hello, world
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 uzyskać takie wyniki:
$ printf 'My name is %s ' Jordan Gloor
My name is Jordan My name is Gloor
Należy również pamiętać, że jeśli brakuje argumentu, printf zinterpretuje wszystkie dyrektywy jako 0 (dla liczby) i zero (dla sznurka).
$ printf 'Hello, %s.'
Hello, .
Teraz, gdy wiesz, jak działa skrypt Bash z printf w Linuksie, możesz zacząć używać go w swoich poleceniach.
Przykłady printf w Linuksie Bash
Printf zawiera wiele specyfikatorów formatu, których możesz użyć w swoich skryptach. Ale dzisiaj zajmiemy się tylko niektórymi typowymi funkcjami.
1. Formatuj wyjście za pomocą ciągu
Aby sformatować wyjście za pomocą ciągów tekstu, użyj %s dyrektywa.
$ printf '%s is one of the largest online %s.' MUO 'technology publications'
MUO is one of the largest online technology publications.
2. Formatuj ciąg wyjściowy za pomocą miejsc dziesiętnych
Aby sformatować ciąg z liczbą całkowitą, możesz użyć %D dyrektywa dla znaku dziesiętnego.
$ printf 'MUO was founded in %d.' 2007
MUO was founded in 2007.
Zauważ, że jeśli chcesz użyć na wyjściu liczby dziesiętnej bez znaku, będziesz musiał użyć % u zamiast dyrektywy.
Windows 10 pobiera, ale się nie instaluje
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 is %d' $((1+1))
1 + 1 is 2
4. Formatuj liczby szesnastkowe
Jeśli potrzebujesz sformatować liczbę szesnastkową, użyj % x dla małych liter i % X dla wielkich liter.
$ printf %X 1000
3E8C
5. Wydrukuj datę i godzinę
Aby wydrukować bieżącą datę i godzinę, możesz połączyć printf z Data polecenie i przekaż następujące dyrektywy.
$ printf '%(%m-%d-%Y %H:%M:%S)T' $(date +%s)
03-26-2021 15:27:57
Możesz zobaczyć specyfikatory formatu dla miesiąca, dnia, roku, godziny, minuty i sekundy we wspomnianych danych wyjściowych.
6. Formatuj ciągi znaków ze znakami Unicode
Aby wydrukować znaki Unicode za pomocą printf, użyj ty escape dla 16-bitowego Unicode i U dla 32-bitowego Unicode.
Na przykład możesz wydrukować prawa autorskie symbol za pomocą następującego polecenia:
$ printf 'u00A9'
©
7. Dodaj odstęp do wyjścia
Możesz sformatować swoje ciągi za pomocą odstępów, definiując przed specyfikatorem dyrektywy minimalną liczbę drukowanych znaków. Nieużywane znaki zostaną wypełnione spacjami.
Na przykład pisanie printf '%s:%5d ' 'Wartość 1' 25 'Wartość 2' 120 wypisze:
Value 1: 25
Value 2: 120
ten %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ść przekażesz liczbę ujemną, dyrektywa zostanie wyrównana do lewej zamiast do prawej.
$ printf '%-10s: %d ' 'Circles' 25 'Boxes' 120
Circles : 25 Boxes : 120
Jeśli chcesz zrobić zmienną szerokość, możesz przekazać gwiazdkę zamiast liczby, a printf użyje następnej liczby, którą znajdzie na liście argumentów.
$ printf '%*s: %d ' -10 'Circles' 25 -10 'Boxes' 120
Circles : 25 Boxes : 120
Związane z: Wszystko, co musisz wiedzieć o Bash For Loops w systemie Linux
Nauka linuksowego polecenia printf
Dzięki poleceniu printf w pasku narzędziowym Bash do tworzenia skryptów, jesteś gotowy do rozpoczęcia drukowania złożonych i zmieniających się ciągów w terminalu. Podczas opracowywania 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 poprawi ogólny przepływ pracy.
Udział Udział Ćwierkać E-mail 10 najlepszych dystrybucji Linuksa dla programistówGotowy do rozpoczęcia rozwoju w systemie operacyjnym typu open source? Oto najlepsze dystrybucje Linuksa do programowania.
jak udostępniać gry na xbox oneCzytaj dalej Powiązane tematy
- Linux
- Powłoka Bash dla Linuksa
- Polecenia Linuksa
Jordan jest pisarzem personelu w MUO, którego pasją jest uczynienie Linuksa dostępnym i bezstresowym dla każdego. Pisze również poradniki dotyczące prywatności i produktywności.
Więcej od Jordana GlooraZapisz się do naszego newslettera
Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!
Kliknij tutaj, aby zasubskrybować