順番に読み進めながら学べます

整形して出力する — printf

printfはechoと違い末尾に改行を付けないため \n を自分で書きます。%s/%d での値の差し込み、\t での列そろえ、複数行ファイルの作成を、ブラウザ端末で操作しながら学べます。

echo との違い — printf は改行を付けない

printfechoと同じく文字列を出力するコマンドですが、echoと違って末尾に改行を自動で付けません

改行が必要なところには\nを自分で書きます。

出力を思いどおりに組み立てられるため、複数行のファイルを作るときにも向いています。

printf 'hello\n'helloと改行を出します。

\nを省くと、次の出力が同じ行に続きます。

printf 'a\nb\nc\n' > fileのように書けば、3 行のファイルをそのまま作れます。

echo と printf の改行の違い
echo hellohello + 改行(自動)printf 'hello\n'hello + 改行(\n を明示)
echoは末尾に改行を自動で付け、printf\nを書いたぶんだけ改行します。
echo hello                       # hello + 自動で改行
printf 'hello\n'                 # hello + 自分で書いた改行
printf 'a\nb\nc\n' > letters.txt   # 3 行のファイルを作成
cat letters.txt                  # a / b / c の 3 行
書き方末尾の改行結果
echo 'hi'自動で付くhi+改行
printf 'hi'付かないhiだけ(改行なし)
printf 'hi\n'付かない\nを書いたのでhi+改行

printf 'a\nb\nc\n' > letters.txtで 3 行のファイルを作成してください。

cat letters.txta b cが 3 行で表示されることを確認してください。

printf 'no newline'を実行し、末尾に改行が付かず次のプロンプトが同じ行に続くことを確認してください。

printf 'with newline\n'を実行し、\nを書くと改行されることを確認してください。(正しく実行できれば解説が表示されます)

Linux console
0 / 4 実行済み
Loading Linux Terminal...

値を差し込む・列をそろえる — %s %d \t

書式の中に%s(文字列)や%d(整数)を書くと、後ろに並べた値がその位置に差し込まれます。

printf 'name=%s\n' alicename=aliceと出力します。

echoの単純な連結より、決まった形に値をはめ込むのに向いています。

\tはタブを表し、列を揃えたいときに使います。

書式は後ろの値の数だけ繰り返し適用されます。

printf '%s\t%d\n' alice 30のように、見出しとデータを同じ書式で出すと列が揃います。

%s で差し込み・\t で列をそろえる
%s に alice文字列を差し込む(hi=alice)%d に 42整数を差し込む(42)%s \t %sタブで列をそろえる
%sは文字列、%dは整数を差し込み、\tはタブで列を揃えます。
printf 'name=%s\n' alice        # name=alice
printf '%s\t%s\n' name age      # 見出しをタブ区切りで
printf '%s\t%d\n' alice 30      # データ行をそろえて出力
記号意味例 → 出力
%s文字列を差し込むprintf '%s\n' hihi
%d整数を差し込むprintf '%d\n' 4242
\tタブ(列そろえ)printf 'a\tb\n'a+タブ+b
\n改行printf 'x\n'x+改行

printf 'name=%s\n' aliceを実行し、%sの位置にaliceが差し込まれることを確認してください。

printf '%s\t%s\n' name ageを実行し、\tで 2 語がタブ区切りで並ぶことを確認してください。

③ 続けてprintf '%s\t%d\n' alice 30を実行し、見出しとデータの列が揃うことを確認してください。

Linux console
0 / 3 実行済み
Loading Linux Terminal...
QUIZ

理解度チェック

まずは1問ずつ答えてみましょう。

Q1printfechoと違う点はどれですか?

Q2printf 'name=%s\n' aliceの出力はどれですか?

Q3\tは何を表しますか?