echoコマンド
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/10/29 14:15 UTC 版)
「エコー (コンピュータ)」の記事における「echoコマンド」の解説
Unixなどのシステムにあるechoコマンドは、入力として引数で与えられた文字列を、そのまま出力するコマンドである。必ずしもシェルの内部コマンドとして実装しなければならないわけではないので外部コマンドであることもあるが、何らかの理由であらゆる外部コマンドが使えないなどの非常時のことなどもあり、(外部コマンド版もあるが)内部コマンドであることが多い。MS-DOSのCOMMAND.COM(およびWindows NT系でそれを引き継いだcmd.exeの内部コマンドのECHOについては別に後述する。なお、正規UNIXおよび、その系統にあるUnix系のechoコマンドについて、癖のある問題があるのでここで特に記す(なおさらに、内部コマンド(シェルに依存)か、外部コマンド(シェルは無関係)か、という違いもあるので注意)。 標準であるPOSIXではechoコマンドに関して、オプションによる標準的な動作は何も規定されていない(正確には -n があった場合は implementation-defined である、といった規定がある)。これは、ごく初期には以下で示すサンプルのような、全く何のオプションも認識しないバージョンもあったことと、標準化が始められた時点で既に混乱の収拾が不可能であったことが反映している(どんなオプションにも対応していないようなechoプログラムにオプションを与えたとすると、そのままそのオプションを入力とみなして、出力されてしまう。そのような期待されない動作を全て未然に防ぐには、標準としては何も規定しない、とする他ない)。Unixにおいて、コマンド引数の解釈にメタ的な標準が無いことが遠因であって、よくあるUnixへの苦情の原因の典型ではある(『The Unix-Haters Handbook』など)。 システムによるが、-n オプションを認識する場合は、最後に行終端子(改行)を追加しない。-e オプションを認識する場合は、\b などのエスケープシーケンスを解釈する(GNU coreutils版(GNU/Linuxでの外部コマンドのechoは専らこれ)のマニュアルを参照)。BSDなど -e は認識しないものも多い。GNU AutotoolsのAutoconfのマニュアルの、「Portable Shell」 > 「Limitations of Shell Builtins」の中にあるechoに関する記述も参照のこと。 問題の回避策としては、「コマンドは実行するが全く何も(空文字列すらも)出力しない」という動作以外は、printfコマンド(POSIXの記述を参照のこと。なお、printfの記事はコマンドのほうのprintfの説明ではない)を代替として使うことで解決できる。 C言語で echo プログラムを書くと、次のようになる。 #include
※この「echoコマンド」の解説は、「エコー (コンピュータ)」の解説の一部です。
「echoコマンド」を含む「エコー (コンピュータ)」の記事については、「エコー (コンピュータ)」の概要を参照ください。
- echoコマンドのページへのリンク