2019.07.04
STAFF BLOG
スタッフブログ
TECHNICAL
テクログ
こんにちはうなぎです。
IT開発者にとって避けては通れない数ある Linux コマンドのうちから、厳選してご紹介する不定期コーナー“素敵だら! Linux コマンド”。
今回は前回に引き続き「~基本編 その2~」です。
- echo
- cat
- rm
■echo
言わずと知れた文字列出力コマンド `echo` です。
`echo` の後に続いて文字列を入力することで、その文字列をそのまま出力してくれます。だから echo(やまびこ)というわけですね。
`echo` 自体は多機能ということはありませんが、なくてはならない存在です。
主にメッセージの表示に使用され、変数も展開して表示することができるのでスクリプト内で多用されます。
知っておくべきオプションとしては `e` オプションで、エスケープシーケンスを解釈して出力してくれます。
echo -e "hogehoge?puyopuyo"
※クォーテーションで文字列を囲まない場合は「hogenpuyo」のようにエスケープシーケンスにバックスラッシュ「」を2つ付けます
そのほかしばしば利用されるのが、ファイルに文字列を上書きまたは追加で書き込みたい時です。
リダイレクトの `>` または `>>` を使用して `echo` による画面への出力(標準出力といいます)をファイルへの出力に変換します。
・上書き(または新規作成)
echo hogehoge > file
・追加
echo hogehoge >> file
もちろん `e` オプションを使用して文字の途中に改行を入れることもできます。
■cat
`cat` は concatenate (連結)のことで、ファイルとファイルを連結した結果を標準出力します。
`echo` と同様にリダイレクトを使用することで、連結した結果をファイルに出力することもできます。
指定するファイルは1つでもよく、その場合ファイル内容が出力されるだけになるので、ファイルの閲覧にもしばしば使用されます。
結合してファイルに出力
※指定するファイルはいくつでもよい
cat hoge.txt piyo.txt > file.txt
hoge.txt の内容を出力して閲覧
cat hoge.txt
またヒアドキュメントを用いることで、`echo` ではできなかった複数行の文字列を出力することもできます。
・ヒアドキュメントで標準出力
cat << EOS
hogehgoe
piyopiyo
EOS
・ヒアドキュメントでファイル出力
cat << EOS > file.txt hogehgoe piyopiyo EOS
■rm
`rm` はファイルとディレクトリの削除コマンドです。
rm file.txt
のようにすることで指定したファイルを削除することができます。
ディレクトリを削除するときは `r` オプションをつけて再帰的に(recursive)削除する必要があります。
その時にはディレクトリ内のファイルも併せて削除されます。
rm -r dir
削除したいファイルが複数ある場合、一つずつ指定することもできますが、ワイルドカードを使用することで一気に削除することができます。
例えばディレクトリ test にファイル hoge1, hoge2, piyo3 が存在し、ファイルのみ全て削除したいときには
rm test/*
hoge とファイル名のついたファイルのみ全て削除したいときは
rm test/hoge*
とすることで実現できます。
`rm` によってファイルを削除するとき、環境にもよりますが、誤った削除を避けるためファイルを削除する毎に確認のプロンプトが表示され、y キーと Enter キーを押下することで削除が実行されます。
しかし削除対象のファイルが多数ある場合、一つ一つ削除するごとに確認するのは骨が折れます。
そのようなときには強制的に削除するオプション `f` が利用できます。
使用には注意が必要で、バックアップを取っていない環境やレビューを通っていない作業である場合、基本的にやってはいけません。
組織によっては、禁止していたり規則を設けているところもあるかもしれません。
ひとつパスやファイル名を間違えただけで、削除してはいけないファイルが抹消され、大規模な障害となることもあります。
なかでも `r` オプションと組み合わせた強制再帰的削除はとても危険です。
以前私の勤めていた会社の同僚が開発環境で以下のコマンドをroot ユーザーで実行してしまいました。
rm -rf /
これは Linux のシステムを含めまるごと削除してしまうコマンドです。
ひとつの開発環境が消え去り、大きな損害を生むことになりました。
上記コマンドを実行した動画がネットに投稿されていますので、興味のある方は探してみてください。
または個人の仮想環境で試してみるのも良いと思います。
以上、`echo`, “cat”, “rm” のご紹介でした。