コマンドラインのHello World

コマンドラインにおけるHello Worldは、やはりechoコマンドでしょうか。

echo

コマンドラインに表示するだけのこのechoコマンドを初めて知った時、このコマンドを使う理由が何なのかまったく見当も付きませんでした。たいていのコマンドは標準出力することが基本になっているので、ただ標準出力するだけのechoコマンドを使うことに、意義が感じられなかったからです。

例えば、計算を行うコマンドexprは、

~$ expr 1 + 2
3
~$ 

これだけで、1 + 2の結果を表示してくれます。表示するのはechoの第一の機能であるにも関わらず、そこにechoが入り込む余地がありません。
単純な文字列の表示であっても、exprコマンドで代用できます。

~$ expr HELLO
HELLO
~$ 

exprでなくとも、このような使い方をするだけなら、echoの代わりになるようなコマンドはたくさんあるでしょう。果たしてechoは必要ないのでしょうか。

echoのマニュアル(man)を確認してみます。

echo [SHORT-OPTION]... [STRING]...
echo LONG-OPTION

とあります。

ここで書式についての説明です。

[] 省略可能
続けて記載が可能
SHORT-OPTION ショートオプション。ハイフン1つに続く英数字
LONG-OPTION ロングオプション。ハイフン2つに続く英単語

echoには、ショートオプションとして、
-n
-e
-E
があります。ショートオプションの指定法では、ハイフンの指定の後に連続して、
-ne
のように、オプションを記載することができます。

ロングオプションは、
–help
など、英単語、もしくは意味のある文章であることが多いです。

さて、echoの使い方に戻ります。
-nオプションは、改行をしないオプション
-eオプションは、バックスラッシュによるエスケープを有効にするオプション
-Eは、-eの逆でechoのデフォルトのため、基本的には使いません。

-nオプションを使わず、echoで連続表示してみます。

~$ echo AAAA;echo BBBB
AAAA
BBBB

-nオプションを使ってみます。単純ですね。

~$ echo -n AAAA;echo BBBB
AAAABBBB

次に-eオプションを使ってみます。

~$ echo -ne "AAAA\b";echo -ne "BB\nBB\n"
AAABB
BB
~$

AAAAが、1文字削れてAAAとなりました。さらに、BBBBが真ん中で改行されています。
これは、ダブルクォートで囲った中に、\bや\nといったバックスラッシュ付きの文字を指定したためです。
\bはバックスペースの意味で、\nは改行の意味です。
\nによる改行をするため、echoのオプションとして、-eだけでなく-nも含めました。

\\ バックスラッシュ
\a 警告 (BEL)
\b バックスペース
\c  以降を出力しない
\e  エスケープ
\f  フォームフィード
\n  改行
\r  キャリッジリターン
\t  水平タブ
\v  垂直タブ
\0NNN  8進数の数値3桁
\xHH  16進数の数値2桁

さて、もう一度echoの書式を見てみます。

echo [SHORT-OPTION]... [STRING]...
echo LONG-OPTION

よく見ると、引数については、すべて省略可能です。

つまり以下のようにechoだけで使えます。

~$ echo
~$ 

echoには、ただ改行する、という機能もあるということです。

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA