printf プリントエフ

英語表記printf

日本語表記書式付き出力

正式名称printf

危険度安全

What does it mean?

書式指定子を使って文字列、数値、改行、タブなどを正確に出力します。移植性の高いシェルスクリプトではechoよりprintfを優先する場面が多くあります。

Command Quest

printf を今日の道具にする

書式指定子を使って文字列、数値、改行、タブなどを正確に出力し...

$ printf 書式 [引数 ...]
関連用語13
次のコマンド0
FAQ1
参照5

概要

書式指定子を使って文字列、数値、改行、タブなどを正確に出力します。移植性の高いシェルスクリプトではechoよりprintfを優先する場面が多くあります。

基本構文

printf 書式 [引数 ...]

詳細解説

printfは、C言語のprintf関数に似た書式で出力を制御できるコマンドです。改行を付けるかどうか、数値を何桁で表示するか、文字列を整列させるかを細かく指定できます。

シェルスクリプトでは、echoよりもprintfのほうが挙動が読みやすく、移植性を確保しやすいという利点があります。特に改行抑制、タブ出力、ゼロ埋め、固定幅整形、CSV風の安定出力で差が出ます。

このコマンドを使う場面

改行、タブ、桁数、ゼロ埋め、列揃え、複数行整形など、出力形式を正確に制御したい時に使います。

まず安全に試す方法

1. printf "%sn" Linux
2. printf "dn" 7
3. printf "%st%sn" name value

3分ミッション

少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。

  1. printf "%s"とprintf "%sn"の違いを確認します。

資格試験との関連

  • LinuC レベル1
    範囲: 1.03.1 コマンドラインの操作
    根拠: official
    LinuCレベル1では、コマンドライン操作やシェル環境の理解が問われます。printfはその基礎を支える代表的なコマンドです。
  • LPIC-1
    範囲: 105.1 シェル環境のカスタマイズと利用
    根拠: official
    LPIC-1では、シェル環境、変数、履歴、コマンド解決の理解が重視されます。printfはその周辺知識と一緒に学ぶ価値が高いコマンドです。
  • 共通基礎
    範囲: Linuxコマンド基礎
    根拠: editorial
    試験横断で、printfはコマンドライン操作、手順読解、トラブルシュートの基礎体力を作る項目です。

オプション

  • %s
    文字列としてそのまま出力します。
    printf "%sn" "$var"
  • d
    幅4でゼロ埋めします。
    printf "dn" 7
  • %b
    引数中のバックスラッシュエスケープを解釈して出力します。
    printf "%b" "atbn"

実行結果サンプル

  • printf "%sn" "hello"
    hello
  • printf "dn" 7
    0007

戻り値コード

  • 0 正常終了しました。
  • >0 書式や数値変換に問題があり、一部処理でエラーが発生しました。

使用例

  • printf "%sn" "hello"
  • printf "dn" 7
  • printf "%st%sn" key value
  • printf "%b" "line1nline2n"

よくあるエラー

  • printf "$user_input"として書いてしまった
    原因: 入力文字列が書式として解釈されます。
    対処: printf "%s" "$user_input"のように、書式を固定します。
  • echoと同じ感覚で自動改行されると思った
    原因: printfは自動で改行しません。
    対処: 必要なら書式へnを明示します。

導入・互換性情報

POSIXはprintfを標準化しており、echoよりも移植性の高い出力制御手段として使えます。GNU coreutils版には拡張もありますが、移植性重視なら基本的な変換指定子を使うのが安全です。

  • Debian GNU/Linux / 13 / Bash 5.2.37

注意点 / セキュリティリスク

書式文字列へ外部入力をそのまま渡すと、%解釈により意図しない出力になります。ユーザー入力は原則として引数側へ渡し、書式は固定文字列で書きます。

FAQ

  • Q. echoよりprintfを勧められるのはなぜですか。
    A. 改行やエスケープの扱いを明示でき、移植性と再現性が高いからです。

関連用語

  • GNU
  • Unix
  • POSIX
  • プロンプト
  • PS1
  • wildcard
  • glob
  • quote
  • escape sequence
  • 標準出力
  • 標準エラー出力
  • リダイレクト
  • script

参照リンク

関連記事