Linux コマンドの基本 echo
Linux コマンドでも最も基本的なコマンドの echo
の使い方をまとめます。echo
は入力内容をそのまま返してくれるコマンドです。
Linux のコマンド操作の動作確認やシェルスクリプトで何かとよく使うので使い方をまとめます。
echo
echo
コマンドは単純にテキストを標準出力に吐き出すコマンドです。シェルスクリプトにログを仕込んだりするときによく使います。
echo [出力する内容]
echo
コマンドは出力する内容を渡すと、標準出力に出力します。末尾に改行(\n
)が自動的に挿入されます。オプションなしだと改行コードはエスケープされるので文中には埋め込めません。
-n: 末尾の改行(\n)を挿入しない
$ echo -n 123
123$ ..
-n
オプションを付けると末尾の改行が挿入されなくなります。
-e: バックスラッシュでのエスケープを解釈する
-e
なしだと echo
は入力の通りに出力します。
改行文字やタブ文字などエスケープしないと入力できない文字を入力したい場合、-e
オプションを付けなければいけません。例えばタブを出力したい場合は以下のようにします。
$ echo -e '1\t2\t3'
1 2 3
-e
なしだと '\t' という内容のまま出力されます。
$ echo '1\t2\t3'
1\t2\t3
-e 指定時に使えるようになるデータ
-e
オプションを指定した時に使えるようになる制御文字やデータは以下のようなものがあります。単純にテキストで出力されるような内容だけでなく特殊な効果が得られるようになるデータもあります。
\\
: バックスラッシュ\a
: ベル文字(警告音?が鳴ります。)\b
: バックスペース\c
: この文字以降の出力がされなくなります。echo -e 'abc\cdef'
は 'abc' しか出力されません。
\e
:\c
との違いがよくわかりません。。。\f
: form feed\n
: 改行文字\r
: キャリッジリターン\t
: タブ\v
: 垂直タブ
-E: バックスラッシュでのエスケープを解釈しない(デフォルト)
デフォルトの挙動ですが、-E
でエスケープを解釈しないことを明示的に指定できます。
$ echo -E '1\t2\t3'
1\t2\t3
変数を出力する
変数を埋め込んでの出力ももちろん可能です。上記記事の通りです。
ファイルに echo 内容を出力
標準出力ではなくファイルに内容を出力するにはリダイレクトします。
>: ファイルに echo 内容で作成・上書き
>
で echo
内容を使ってファイル内容を上書きしたり、ファイルが存在しなければ作成したりできます。ファイル内容は echo
の内容そのままになります。
$ echo 'abc' > a.txt
$ cat a.txt
abc
>>: ファイルに echo 内容を追記する
>>
でリダイレクトすると、ファイルに echo
内容を追記します。既存のファイルデータの末尾に echo
内容が追記されます。
$ echo 'abc' > a.txt
$ echo 'def' >> a.txt
$ cat a.txt
abc
def
tee: ファイルにも標準出力にも echo する
パイプでつないで tee
コマンドを使えば echo
内容をファイルにも標準出力にも同時に出力できます。
$ echo 'abc' | tee a.txt
abc
$ cat a.txt
abc
tee
でファイルに出力するときに追記したい場合は tee -a
とします。
$ echo 'abc' | tee a.txt
abc
$ echo 'def' | tee -a a.txt
def
$ cat a.txt
abc
def
追記も確認できました。
使い方を表示する
$ man echo
man
でマニュアルを表示できます。その他オプション等の使い方はこれを見ると、把握できると思います。
以上。
コメントを書く