Функция Bash printf: 7 примеров для Linux
Если вы использовали оболочку Bash в течение приличного времени, вы, вероятно, знаете, как печатать строки в терминале Linux с помощью команды echo. Однако команда printf значительно упрощает печать текста с определенным форматированием.
Сегодня мы узнаем, как использовать функцию printf, чтобы улучшить наши навыки написания сценариев Bash.
Что такое функция printf в Bash?
Как следует из названия, printf – это функция, которая печатает отформатированные строки текста. Это означает, что вы можете написать строковую структуру (формат), а затем заполнить ее значениями (аргументами).
Если вы знакомы с языками программирования C / C ++, возможно, вы уже знаете, как работает printf. Printf в оболочке Bash очень похож, но имеет несколько небольших отличий.
Как использовать printf в оболочке Bash
Базовый синтаксис printf:
printf format [argument]
Printf будет печатать строку формата при реализации экранированных символов ( ) и директив ( % ) с использованием указанных аргументов . Обратите внимание на вывод следующей команды:
$ printf "Hello, %s" world
Hello, world
Printf взял аргумент world и заменил им символ % s в указанной строке.
Вы можете заметить, что после вывода Bash не создает для вас новую строку. В отличие от команды echo, printf не предполагает, что вы хотите новую строку после печати вывода. Таким образом, вам нужно будет использовать символ новой строки n в каждом экземпляре.
Чтобы напечатать строку и перейти к новой строке, введите printf «Hello, world n» .
Hello, world
Важно помнить, что printf попытается повторно использовать формат для всех ваших аргументов. Вы можете использовать это в своих интересах, но если вы не будете осторожны, вы можете получить такие результаты:
$ printf "My name is %s " Jordan Gloor
My name is Jordan My name is Gloor
Вы также должны знать, что если аргумент отсутствует, printf интерпретирует любые директивы как 0 (для числа) и null (для строки).
$ printf "Hello, %s."
Hello, .
Теперь, когда вы знаете, как работает сценарий Bash с printf в Linux, вы готовы начать использовать его в своих командах.
Примеры printf в Linux Bash
Printf имеет множество спецификаторов формата, которые вы можете использовать в своих скриптах. Но сегодня мы рассмотрим только некоторые общие для функции.
1. Форматирование вывода с помощью строки
Чтобы отформатировать вывод строками текста, используйте директиву % s .
$ printf "%s is one of the largest online %s." MUO "technology publications"
MUO is one of the largest online technology publications.
2. Форматирование выходной строки с помощью десятичных знаков.
Чтобы отформатировать строку с помощью целого числа, вы можете использовать директиву % d для десятичного знака со знаком.
$ printf "MUO was founded in %d." 2007
MUO was founded in 2007.
Обратите внимание: если вы хотите использовать в выводе десятичное число без знака, вам придется вместо этого использовать директиву % u .
3. Вывод математических функций с помощью printf
Форматировать математические функции с помощью команды printf очень просто. Просто поместите свое выражение в двойные круглые скобки, как обычно в Bash, и укажите выражение в списке аргументов.
$ printf "1 + 1 is %d" $((1+1))
1 + 1 is 2
4. Форматирование шестнадцатеричных чисел.
Если вам нужно отформатировать шестнадцатеричное число, используйте % x для нижнего регистра и % X для верхнего регистра.
$ printf %X 1000
3E8C
5. Печать даты и времени.
Чтобы напечатать текущую дату и время, вы можете объединить printf с командой date и передать следующие директивы.
$ printf "%(%m-%d-%Y %H:%M:%S)T" $(date +%s)
03-26-2021 15:27:57
Вы можете увидеть спецификаторы формата для месяца, дня, года, часа, минуты и секунды в вышеупомянутом выводе.
6. Форматирование строк с помощью символов Юникода.
Чтобы напечатать символы Unicode с помощью printf, используйте escape-символ u для 16-битного Unicode и U для 32-битного Unicode.
Например, вы можете распечатать символ авторского права с помощью следующей команды:
$ printf "u00A9"
©
7. Добавьте интервал к выводу.
Вы можете форматировать свои строки с помощью пробелов, определив перед спецификатором директивы минимальное количество печатаемых символов. Неиспользуемые символы будут заполнены пробелами.
Например, при вводе printf "% s:% 5d n" "Value 1" 25 "Value 2" 120 будет выведено:
Value 1: 25
Value 2: 120
Спецификатор формата % 5d в выводе означает, что отформатированная строка будет содержать минимум пять символов. Поскольку 25 состоит только из двух цифр, к оставшимся символам добавляются пробелы.
Если вы передадите отрицательное число в качестве ширины, директива будет выровнена по левому краю, а не по правому краю.
$ printf "%-10s: %d " "Circles" 25 "Boxes" 120
Circles : 25 Boxes : 120
Если вы хотите сделать ширину переменной, вы можете передать звездочку вместо числа, и printf будет использовать следующее число, которое найдет в списке аргументов.
$ printf "%*s: %d " -10 "Circles" 25 -10 "Boxes" 120
Circles : 25 Boxes : 120
Изучение команды printf в Linux
С помощью команды printf в поясе служебной программы сценариев Bash вы готовы приступить к печати сложных и разнообразных строк в своем терминале. При разработке сценариев Bash важно убедиться, что вы работаете в максимально производительной среде. Это не только улучшит ваши навыки работы с командной строкой, но и улучшит ваш рабочий процесс в целом.