Linuxを使っていると、出力を整えたい場面にたびたび出会います。そんなときに活躍するのが printf
コマンドです。C言語でおなじみの printf
は、Bashやシェルスクリプトでも強力な出力ツールとして使えます。echo
よりも細かな制御ができるため、ログ出力やデバッグメッセージの整形、数値のフォーマットなどに重宝されます。
本記事では、Linuxにおける printf
コマンドの基本的な使い方から、実践的な応用テクニックまでをわかりやすく解説します。初心者の方でもすぐに実践できるよう、具体例を交えて紹介していきます。
printf
は「print formatted(フォーマット付き出力)」の略で、その名の通り、出力内容にフォーマット(書式)を指定できます。
printf "書式" 値1 値2 ...
基本構文は上記のようになります。書式には %s
(文字列)、%d
(10進数)、%f
(浮動小数点数)などを指定し、続けて値を入力します。
例:
printf "名前: %s, 年齢: %d\n" "田中" 28
出力結果:
名前: 田中, 年齢: 28
このように、変数の値を指定フォーマットで整えて出力できます。
多くのLinuxユーザーはまず echo
を使いますが、以下の点で printf
に軍配が上がります。
echo
は自動で改行を入れますが、printf
は明示的に \n
を書かないと改行されません。
echo "Hello"
printf "Hello"
出力:
bashコピーする編集するHello ← echo は改行される
Hello ← printf は改行されない
printf
は文字列の幅や小数点以下の桁数を細かく制御できます。
printf "%10s\n" "test"
printf "%.2f\n" 3.14159
出力:
test
3.14
このように、出力内容を「キレイに整形したい」ときは printf
が便利です。
ここではよく使われる書式指定子を紹介します。
書式 | 説明 |
---|---|
%s | 文字列 |
%d | 整数(10進数) |
%f | 浮動小数点数 |
%x | 16進数(小文字) |
%X | 16進数(大文字) |
%o | 8進数 |
%% | %記号を出力 |
例:
printf "商品: %s\n価格: %d円\n" "リンゴ" 120
出力:
商品: リンゴ
価格: 120円
書式に数字を加えることで、幅や小数点以下の桁数を指定できます。
printf "|%10s|\n" "apple"
出力:
| apple|
右詰めになります。-
を付ければ左詰めにできます。
printf "|%-10s|\n" "apple"
出力:
|apple |
printf "%.3f\n" 3.141592
出力:
3.142
値が複数ある場合、printf
はそれぞれの書式に対応して順番に出力します。
printf "名前: %s, 年齢: %d, 点数: %.1f\n" "山田" 32 89.75
出力:
名前: 山田, 年齢: 32, 点数: 89.8
書式が繰り返されます。
printf "%s\n" "A" "B" "C"
出力:
A
B
C
printf
はスクリプト内でも強力な武器です。
#!/bin/bash
user="tanaka"
action="login"
printf "[%s] ユーザー: %s が %s しました\n" "$(date '+%Y-%m-%d %H:%M:%S')" "$user" "$action"
出力(例):
[2025-04-05 14:30:01] ユーザー: tanaka が login しました
printf "%-10s %-5s %-6s\n" "名前" "年齢" "点数"
printf "%-10s %-5d %-6.1f\n" "佐藤" 25 88.6
printf "%-10s %-5d %-6.1f\n" "鈴木" 30 91.2
出力:
名前 年齢 点数
佐藤 25 88.6
鈴木 30 91.2
先頭をゼロで埋めたいときは以下のようにします。
printf "%03d\n" 7
出力:
コピーする編集する007
ゼロ埋めで一定の桁数を確保できます。
\n
で改行、\t
でタブが使えます。
printf "名前\t年齢\t点数\n"
printf "%s\t%d\t%.1f\n" "佐藤" 24 92.5
出力:
名前 年齢 点数
佐藤 24 92.5
エスケープ文字はダブルクォートで囲むことで機能します。
カラーコードと一緒に使えば、見やすいログ出力も可能です。
RED="\033[31m"
RESET="\033[0m"
printf "${RED}エラー:${RESET} ファイルが見つかりません\n"
出力(端末上で赤文字に):
エラー: ファイルが見つかりません
printf
コマンドは単なる文字列出力にとどまらず、フォーマット制御、ゼロ埋め、桁数調整、スクリプトとの連携など、さまざまな用途で活躍する非常に柔軟なツールです。
特に、複雑な情報を整えて出力したい場面や、ログファイルの作成、ユーザー向けの出力整形などにおいては、echo
よりも printf
のほうが適しています。
シェルスクリプトや日々のコマンド操作で printf
をうまく使いこなすことで、あなたのLinux操作がさらにスマートに、そしてプロフェッショナルに見えるようになるでしょう。