コマンドラインのHello World

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

echo

コマンドラインに文字列を表示するだけのコマンド。
初めてechoコマンドを知った時、このコマンドを使う理由がどこにあるのかまったく見当も付きませんでした。

たいていのLinux(Unix)コマンドは標準出力することが基本になっています。
それなのに、指定した文字列をただ標準出力するだけのechoコマンドを使うことに、何の意義も感じられなかったからです。

例えば、計算を行うコマンドexprは、計算式を引数に与えると、計算結果を出力してくれます。

takk$ expr 1 + 2
3
takk$

たったこれだけで、1 + 2の結果を表示してくれるんです。しかも文字列の表示までもこなします。

takk$ expr HELLO
HELLO
takk$

表示するのはechoの基本機能であるにも関わらず、exprでも同じことができてしまいます。echoが入り込む余地がありません。

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

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

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

とあります。

ここでmanマニュアルにおける書式の読み方についての説明です。

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

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

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

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

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

takk$ echo AAAA;echo BBBB
AAAA
BBBB

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

takk$ echo -n AAAA;echo BBBB
AAAABBBB

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

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

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だけで使えます。

takk$ echo
takk$

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

コメント

タイトルとURLをコピーしました