Linuxコマンド〜覚えておくと便利なオプション 10選〜

 当社では、Webサイトや業務システムのサーバOSとして Linux(リナックス)を10年ほど前から利用しています。Linuxサーバ は CLI(コマンド・ライン・インターフェース)で操作して管理運用しているのですが、ちょっとしたコマンドオプションを付けておくだけで、ミスを防止し作業をグッと効率化することができます。
 そこで今回は、約10年間ほぼ毎日 Linuxコマンドを使い続けた経験から、特に覚えておくと便利と感じた Linuxコマンドのオプションを厳選して10個ご紹介いたします。

【1】mv コマンドの「-i」オプション

 mv コマンドはファイルやディレクトリを移動するためのコマンドです。たとえば sample.txt を works ディレクトリの下に移動する場合は次のようなコマンドになります。

$ mv sample.txt works/

 注意しなければいけないのは、このとき works ディレクトリの下に同じ名前のファイルがあったとしても、有無をいわさず上書きしてしまうことです。重要な設定ファイルなどを上書きしてしまうと、システム停止など大きなトラブルにつながる可能性もあります。

 そこで役に立つのが「-i」–interactive(対話式)オプションです。mv コマンドに「-i」オプションをつけておくと、もし移動先に同じ名前のファイルがあった場合は本当に上書きしてよいか聞いてくれます。(エンターキーを押せばキャンセル、「y」を入力してエンターキーを押すと上書きを実行します)

$ mv -i sample.txt works/
mv: `works/sample.txt’ を上書きしますか?

 ファイルやディレクトリをコピーする cp コマンド、削除する rm コマンドなどにもこの「-i」オプションがありますので、致命的なミスを防止するためにも「-i」オプションをつけることをぜひオススメします。

【2】ls コマンドの「-1」(数字のイチ)オプション

 ls コマンドはファイルやディレクトリに関する情報を表示するためのコマンドです。オプション無しで実行すると現在のディレクトリにあるファイルやディレクトリが表示されます。

$ ls
apple.txt banana.txt lemon.txt melon.txt orange.txt

 ls コマンドでよく使うオプションに -l (アルファベットのエル)オプションがあります。-l オプションをつけて実行するとファイルのパーミションや所有者、ファイルの作成日時などの詳細な情報を表示してくれます。

$ ls -l
-rw-rw-r–. 1 qbist qbist 0 7月 20 12:50 apple.txt
-rw-rw-r–. 1 qbist qbist 0 7月 20 12:55 banana.txt
-rw-rw-r–. 1 qbist qbist 0 7月 20 12:55 lemon.txt
-rw-rw-r–. 1 qbist qbist 0 7月 20 12:55 melon.txt
-rw-rw-r–. 1 qbist qbist 0 7月 20 12:51 orange.txt

 便利な -l オプションなのですが、「ディレクトリ以下のファイルをエクセルの一覧表にする」という作業をする場合、詳細情報を1行ずつ削除しなければなりません。

 そこで役に立つのが「-1」(まぎらわしいですが、こちらは「数字のイチ」です)オプションです。
 ls コマンドに「-1」(数字のイチ)オプションをつけて実行すると、ファイルやディレクトリ名だけを1行ずつ表示してくれます。これをそのままエクセルファイルにコピペすれば一瞬でファイル名の一覧表を作成することができてしまいます。

$ ls -1
apple.txt
banana.txt
lemon.txt
melon.txt
orange.txt

【3】grep コマンドの「-e」オプション

 grep コマンドは、指定した検索文字列やパターンでテキストを検索して、一致した行を表示してくれるコマンドです。検索対象のテキストとして、他のコマンドの出力結果をパイプ「|」を使って標準入力から読み込ませる使い方をよくします。

 たとえば先ほどの「ls -1」の出力結果を、 grep コマンドで “apple” という文字が含まれた行のみを表示してみましょう。

$ ls -1 | grep apple
apple.txt

 では次に “apple” もしくは “orange” が含まれる行を表示するにはどうしたらよいでしょうか?
 そんなときに便利なのが「-e」オプションです。「-e」オプションに続けて検索文字列やパターンを指定することで、複数の検索文字列を設定することができます。

$ ls -1 | grep -e apple -e orange
apple.txt
orange.txt

【4】grep コマンドの「-v」オプション

 続いては同じく grep コマンドの「-v」オプションです。「-v」オプションは、指定した検索文字列やパターンと「一致しない」行を表示することができます。

$ ls -1 | grep -v apple
banana.txt
lemon.txt
melon.txt
orange.txt

【5】chown コマンドの「-R」オプション

 chown コマンドは、ファイルやディレクトリの所有者やグループを変更することができるコマンドです。基本的に root 権限が必要になりますので sudo コマンドに続けて実行します。

 あるファイルの所有者を “foo” さんに変更するには次のようなコマンドになります。

$ sudo chown foo apple.txt

 次にあるディレクトリ以下すべてのファイルの所有者を “foo” さんに変更するにはどうしたらよいでしょうか? ためしに先ほどのファイルと同じように chown コマンドを実行してみましょう。

$ sudo chown foo fruit_dir/

 ディレクトリの所有者は “foo” さんに変更されるのですが、

$ ls -l
drwxrwxr-x. 2 foo qbist 93 7月 20 14:07 fruit_dir

 ディレクトリ以下のファイルの所有者は変更されません。

$ ls -l fruit_dir/
-rw-rw-r–. 1 qbist qbist 0 7月 20 12:50 apple.txt
-rw-rw-r–. 1 qbist qbist 0 7月 20 12:55 banana.txt
-rw-rw-r–. 1 qbist qbist 0 7月 20 12:55 lemon.txt
-rw-rw-r–. 1 qbist qbist 0 7月 20 12:55 melon.txt
-rw-rw-r–. 1 qbist qbist 0 7月 20 12:51 orange.txt

 このくらいのファイル数ならひとつずつ所有者を変更することもできますが、もしこれが数千ファイルあってさらにサブディレクトリもある場合は、ひとつずつ所有者を変更していては日が暮れてしまいますし、手作業なのでミスが発生するかもしれません。

 そんなときに便利なのが「-R」オプションです。chown に「-R」オプションをつけて実行すると、指定したディレクトリ以下すべてのファイルやディレクトリの所有者を変更してくれます。

$ sudo chown -R foo fruit_dir/
$ ls -l fruit_dir/
-rw-rw-r–. 1 foo qbist 0 7月 20 12:50 apple.txt
-rw-rw-r–. 1 foo qbist 0 7月 20 12:55 banana.txt
-rw-rw-r–. 1 foo qbist 0 7月 20 12:55 lemon.txt
-rw-rw-r–. 1 foo qbist 0 7月 20 12:55 melon.txt
-rw-rw-r–. 1 foo qbist 0 7月 20 12:51 orange.txt

【6】sort コマンドの「-nr」オプション

 sort コマンドは、その名のとおりテキストを行単位で並び替えができるコマンドです。sort コマンドも並び替え対象となるテキストを、他のコマンドの出力結果をパイプ「|」を使って標準入力から読み込むことができます。

 ファイルやディレクトリの容量を表示する du コマンドと sort コマンドの「-nr」オプションを組み合わせることによって、容量を多く使っている順にディレクトリを表示することができます。-n は数値の大小で並び替え、-r は降順で並び替えるオプションです。

$ du -gsc /data/sftpusers/* | sort -nr
876 total
130 user_a
105 user_b
88 user_c
76 user_d
74 user_e
(以下省略)

【7】cp コマンドの「-p」オプション

 cp コマンドはファイルやディレクトリをコピーするためのコマンドです。オプション無しで実行すると、ファイルの所有者はコピーを実行したユーザーに変わってしまいます。
 たとえばウェブシステムからファイルへ書き込みをする機能がある場合に、これが原因でファイルやディレクトリの所有者が変わってしまい、書き込みができなくなるといったトラブルが発生します。

 そこで役立つのが「-p」オプションです。cp コマンド「-p」オプションをつけて root 権限で実行すると、コピー元のファイルの所有者やパーミッションなどを保持してコピーしてくれます。冒頭で紹介した -i オプションと合わせて使いましょう。

$ sudo cp -ip apple.txt apple_copy.txt

【8】ls コマンドの「-t」オプション

 先ほども紹介しましたが ls コマンドはファイルやディレクトリに関する情報を表示するためのコマンドです。ls コマンドを実行すると、通常はファイル名のアルファベット順にソートされて表示されます。

$ ls -l
-rw-rw-r–. 1 qbist qbist 0 7月 20 12:50 apple.txt
-rw-rw-r–. 1 qbist qbist 0 7月 20 12:55 banana.txt
-rw-rw-r–. 1 qbist qbist 0 7月 20 12:55 lemon.txt
-rw-rw-r–. 1 qbist qbist 0 7月 20 12:55 melon.txt
-rw-rw-r–. 1 qbist qbist 0 7月 20 12:51 orange.txt

 それをls コマンドに「-t」オプションをつけることによって、ファイルの更新時間順に表示することができます。

$ ls -lt
-rw-rw-r–. 1 foo qbist 0 7月 20 12:55 lemon.txt
-rw-rw-r–. 1 foo qbist 0 7月 20 12:55 melon.txt
-rw-rw-r–. 1 foo qbist 0 7月 20 12:55 banana.txt
-rw-rw-r–. 1 foo qbist 0 7月 20 12:51 orange.txt
-rw-rw-r–. 1 foo qbist 0 7月 20 12:50 apple.txt

 たとえばトラブルなどでサーバのログを調査するときに、最新のログが出力されたログファイルを見つけるのにこの「-t」オプションが役立ちます。

【9】sar コマンドの「-A」オプション

 sar コマンドは、サーバのCPUやメモリの使用率、ネットワークトラフィックやディスクI/0などさまざまなリソースの負荷状況を時系列で確認できるコマンドです。
 sar コマンドに「-A」オプションをつけて実行すると、すべてのリソースの負荷状況を確認することができます。

$ sar -A
(出力が大量なので割愛します)

【10】tail コマンドの「-f」オプション

 tail コマンドはファイルの最後10行を表示するコマンドです。ログファイルを確認するのによく使われるコマンドです。
 オプションをつけなければ、最後10行を表示してコマンドは終了しますが、「-f」オプションを付けて実行すると追加されたログを随時表示してくれます。

$ tail -f /var/log/httpd/access_log

おしまいに

 こうしてまとめてみると、実際の作業で重宝するコマンドやオプションは基本的なものが多いですね。これ以外にも「いやいやこのオプションの方が便利だよ」とか「こんな便利なオプションあるよ!」などありましたら、コメントなどで教えていただけると嬉しいです!

関連記事