[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

15. テキストの表示

このセクションは,テキスト文字列を画面に表示するコマンドを説明します.


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

15.1 echo: テキストの行を表示

echoは,与えられたそれぞれのstringを,それぞれの間にス ペースを用い,最後のものの後に改行を用いて,標準出力に書き出します.概 要です.

 
echo [option]… [string]…

プログラムは以下のオプションも受け入れます.共通のオプションも参照 してください.

-n

終りの改行を出力しません.

-e

それぞれのstringで,以下のバックスペースエスケープされた文字の解 釈を可能にします.

\a

警報(ベル)

\b

バックスペース

\c

終りの改行を抑制

\f

フォームフィード

\n

改行

\r

キャリッジリターン

\t

水平タブ

\v

垂直タブ

\\

バックスラッシュ

\nnn

ASCIIコードがnnn(八進数)の文字.nnnが有効な数字 でない場合,それは文字通りに出力されます.

終了ステータスのゼロは成功を示し,ゼロ以外の値は失敗を示します.


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

15.2 printf: データの書式化と出力

printfはテキストの書式化された表示を行います.概要です.

 
printf format [argument]…

printfは,C printf関数と同じ方法で,‘%’指示語と ‘\’エスケープを解釈しながらformat文字列を表示します.与えら れたargumentのすべてを変換する必要があるので,format引数は 再利用されます.

浮動小数点の引数は,小数桁の前にピリオドを使用する必要がありますが,出 力は現在のロカールのLC_NUMERICカテゴリに依存します.例えば,ロカー ルの基数文字がカンマのとき,コマンド‘printf %g 3.14’で‘3,14’ を出力しますが,コマンド‘printf %g 3,14’はエラーになります.

printfは追加の指示語‘%b’があり,それは,format文 字列と同じ方法で‘\’エスケープを解釈しながら,その引数文字列を表示 しますが,例外として,八進数のエスケープは‘\0ooo’の形式で, oooは0から3桁の八進数になります.

printfは,表示文字を指定するとき,format内の ‘\0ooo’を(oooが1から3桁の八進の場合)八進数として,そして, 表示文字を指定するとき,‘\xhhh’を(hhhが0から三桁の16進の場 合)16進数として解釈します.

printfは,ISO C 99で導入された二文字の構文を解釈し ます.四桁の16進数hhhhで指定される16ビットのUnicode文字に対する ‘\u’,そして,四桁の16進数hhhhhhhhで指定される32ビットの Unicode文字に対する‘\U’です.現在のロカールのLC_CTYPEの部分に依存 してprintfはUnicode文字を出力し,すなわち,環境変数 LC_ALLLC_CTYPELANGの値には依存しません.

\u’と‘\U’の処理では,iconvの機能が完全になっている必 要があります.glibc 2.2(またはそれより新しいもの)を用いたシステムや, このパッケージに優先するlibiconvがインストールされているときは 動作します.それ以外で‘\u’と‘\U’を使用すると,エラーメッセー ジが表示されます.

追加のエスケープ‘\c’は,printfにそれ以上の出力を生成さ せません.

オプションは,単独の‘--help’や‘--version’だけです. See section 共通のオプション.

Unicode文字の構文は,ロカールに依存している文字列を書くとき役に立ちま す.例えば,Euro通貨の記号を含む文字列です.

 
$ /usr/local/bin/printf '\u20AC 14.95'

これで,Euroの記号をサポートしているすべてのロカールで(ISO-8859-15, UTF-8,他)正しく出力されます.同様に中国文字を利用します.

 
$ /usr/local/bin/printf '\u4e2d\u6587'

これで,すべての中国のロカール(GB2312,BIG5,UTF-8,等)で正しく出力さ れます.

これらの例は,GNU bashの組み込み関数printfと区別する ため,printfのフルパス名が与えられていることに注意して下さい.

より長い文字列では,それぞれの文字一つ一つの16進数のコード値を探す必要 がありません.‘\u’エスケープシーケンスが混ざっている ASCII文字は,JAVAのソースファイルのエンコードとして知られて います.このエンコードされた文字列を変換するために,GNU recode 3.5c(ま たはより新しいもの)を使用することが可能です.テキストの一部を,ロケー ルに依存しない方法でこのテキストを出力するシェルスクリプトに変換する方 法は以下のようになります.

 
$ LC_CTYPE=zh_CN.big5 /usr/local/bin/printf \
    '\u4e2d\u6587\n' > sample.txt
$ recode BIG5..JAVA < sample.txt \
    | sed -e "s|^|/usr/local/bin/printf '|" -e "s|$|\\\\n'|" \
    > sample.sh

終了ステータスのゼロは成功を示し,ゼロ以外の値は失敗を示します.


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

15.3 yes: 中断するまで文字列を出力

yesは,スペースで分離され改行後置されたコマンドライン引数を, キルされるまで永遠に出力します.引数が与えられない場合は,改行後置され た‘y’を,キルされるまで永遠に出力します.

上記のエラーで,yesは‘1’のステータスで終了します.

オプションは,単独の‘--help’や‘--version’だけです. See section 共通のオプション.


[ << ] [ >> ]           [冒頭] [目次] [見出し] [ ? ]

この文書は新堂 安孝によって2009年9月22日texi2html 1.82を用いて生成されました。