В Unix и Unix-подобных операционных системах printf — это встроенная оболочка оболочки (и служебная программа [2] ) , которая форматирует и выводит текст подобно одноименной функции C.
Первоначально названный для вывода на принтер , на самом деле он выводит на стандартный вывод . [3]
Команда принимает строку формата, определяющую способ форматирования значений, и список значений.
Символы в строке формата копируются в выходные данные дословно, за исключением случаев, когда обнаружен спецификатор формата , вызывающий вывод значения.
В дополнение к стандартным спецификаторам формата %b
заставляет команду расширять escape-последовательности обратной косой черты (например, \n
для новой строки ) и %q
выводит элемент, который можно использовать в качестве входных данных оболочки . [3] Строка формата используется повторно, если элементов больше, чем спецификаций формата. Неиспользуемые спецификации формата предоставляют нулевое значение или нулевую строку .
printf
является частью руководства по переносимости X/Open, начиная с выпуска 4 1992 года. Он был унаследован в первой версии POSIX.1 и единой спецификации Unix . [4] Впервые он появился в 4.3BSD-Reno . [5]
Версия, printf
входящая в состав GNU coreutils , была написана Дэвидом Маккензи. Он имеет расширение %q для экранирования строк в формате оболочки POSIX. [3]
$ for NUMBER in 4 6 8 9 10
> >do printf " >> %03d %d<< \n" $NUMBER $RANDOM
done
>> 004 26305<< >> 006 6687<< >> 008 20170<< >> 009 28322<< >> 010 4400<<
Это напечатает список каталогов, эмулируя «ls»:
$ printf "%s\n" *