Unix/Linux系OSの基本的なコマンドに慣れよう
昨今ではGUI(グラフィカルユーザインターフェース)のインターフェースが充実してきており、CUI(コマンドラインユーザインターフェース)でマシンの操作を行う頻度は少なくなってきた。あなたがアプリケーションのエンジニアであれば、コーディングし、コンパイルしてデプロイするという一通りの作業がGUIで完結し、CUIを触る必要性がない、という場合も少なくない。
しかしながら、いざトラブルが発生したり、OSの操作を行ったりする必要が出たときに困ることが無いよう、SEたるものUnix/Linux系のOSにおける基本コマンドくらいは覚えておき、最低限のマシン操作はCUIで行えるようになろう。特に、あなたがシステムインフラの構築であったり、運用に携わる部門に配属されたのであれば、いち早くCUIに慣れる必要があるである。
CUI操作は、これまで経験の無い新人SEにとっては特にハードルが高く感じるが、いちど慣れてしまえば様々な環境で、(多少の差こそあれ)同様のコマンドで操作を行うことが可能だ。本稿では新人SEであってもまずはこのコマンドを覚えるべきという、基本的なコマンドを紹介する。また、単にコマンドの説明だけでなく、現場でよく使われる利用例もあわせて紹介するので参考にして欲しい。
絶対に覚えておきたいUnix/Linux系OSの基本コマンド
<ディレクトリ操作系コマンド>
Unix/Linux系OSには“カレントディレクトリ”という概念が存在する。ざっくり言うと、ファイルシステムの中で自分が現在いる場所を示すものがカレントディレクトリだ。Windowsで言うと、どのフォルダを開いていて、どの階層にいるのかというものだ。ここでは、ディレクトリ操作系の基本的なコマンドを紹介する。
pwd カレントディレクトリを表示
Print Working Directoryの略で、カレントディレクトリを表示するためのコマンド。現在自分がいるディレクトリを絶対パスで表示してくれる。
【StepUp】
ディレクトリを移動する際に、現在自分がいる場所を確認するのが主な用途であるが、現場では作業を行う前に想定どおりの作業ディレクトリにいることを確認する意味で利用されることも多いコマンドである。Unix/Linux系OSでは作業ディレクトリを間違えてコマンドを実行すると大変なことになる場合が多いため、rmコマンドやデータ更新系のシェルを実行する場合など、危険なコマンドを実行する場合は必ず事前にpwdでカレントディレクトリを確認する癖を付けよう。
cd [移動先のディレクトリ] 指定したディレクトリに移動
cd ../ 一つ上位のディレクトリに移動
Change Directoryの略で、ディレクトリを移動するコマンド。引数に移動先のディレクトリを指定しない場合は、現在のユーザのホームディレクトリに移動する。../で一つ上のディレクトリに移動するコマンドもよくある使い方なので覚えておこう。
【StepUp】
cdを行う場合に限らないが、Unix/Linux系のOSでCUI操作を行う場合にはTabキーを押すことでコマンドの候補を補完/表示してくれる機能がある。
例えば現在のディレクトリ配下にlogsディレクトリとapplicationディレクトリが存在する場合、applicationディレクトリに移動したい場合は”cd app”と入力し、Tabキーを押すことで”cd application”という形で残りの文字列を補完してくれる。
複数候補がある場合は候補の文字列が表示され補完は行われないが、入力が進んで候補が一意になった場合に再度Tabキーを押下すれば補完が行われる。Unix/Linux系のコマンド入力全般に利用できる便利な機能なので、使いこなして生産性をあげよう。
ls [ファイル/ディレクトリ] 指定したファイル、ディレクトリ情報を表示
LiSt の略。引数なしで打鍵するとカレントディレクトリ配下のファイル/ディレクトリ情報を出力する。オプションとあわせて利用されることが多いので、よく使うオプションとその表示内容についてもあわせて覚えておこう。
【StepUp】
ls -l ファイル/ディレクトリの詳細情報を表示
ls -a 隠しファイルを含む全てのファイルを表示する
ls -R 指定したディレクトリ配下のディレクトリの中身も再帰的に表示する
ls -ltr ディレクトリ配下のファイル/ディレクトリをタイムスタンプ順に並べて詳細表示
上記は、現場でlsコマンドのオプションとしてよく利用されるオプションである。特に、-lオプションは、ファイル名のほかに、権限関係(パーミッション、オーナー、グループ)、サイズ、タイム・スタンプ等の情報も表示するため、lsを実行する際にはほぼセットで利用される。
また、ディレクトリ配下に複数のファイルが有る場合や、新しく作られたファイルを確認したい場合など、ls -ltrコマンドが便利だ。このコマンドを利用すると最新のファイル(タイムスタンプが新しいファイル)が結果の一番下に表示されるため、例えばアプリケーションでエラーが発生して、ログディレクトリに大量の過去ログがある場合などに直近で出力されたログを見つけることが容易になる。
mkdir [オプション] [ディレクトリ名] ディレクトリを作成
MaKe DIRectoryの略。ディレクトリ名の指定を相対パス/絶対パスで行うことで、カレントディレクトリ以外の場所に作成することも可能。
【StepUp】
mkdir -m [パーミッション] [ディレクトリ名] 指定した権限つきでディレクトリを作成
作成したディレクトリの権限は、デフォルトでは作成したユーザの設定(umask値)に応じて設定されるが、上記のコマンドによって明示的に指定することも可能。例えば、mkdir -m 640 workDirなどのように使用する。
rmdir [オプション] [ディレクトリ名] ディレクトリを削除
ReMove DIRectoryの略。ディレクトリの中にファイルが存在する場合は削除に失敗する。
<ファイル操作系コマンド>
cp [オプション] [コピー元] [コピー先] ファイル/ディレクトリをコピー
CoPy の略。ファイル/ディレクトリをコピーする。コピー元にファイル、コピー先にディレクトリを指定した場合は同名ファイルを対象ディレクトリ配下にコピーする。
【StepUp】
cp -p [コピー元] [コピー先] 元情報を保持したままコピー
cp -r [コピー元ディレクトリ] [コピー先] ディレクトリと中のファイルを再帰的にコピー
-pオプションを利用することで、ファイルの元情報(パーミッション、タイムスタンプやオーナーなど)を保持したままコピーすることが可能だ。また、ディレクトリを中身ごとコピーする場合は-rオプションを使おう。
rm [オプション] [ファイル/ディレクトリ名] ファイル/ディレクトリを削除
ReMove の略。ファイル/ディレクトリを削除する。
【StepUp】
rm -rf [ディレクトリ名] ディレクトリを中のファイルやディレクトリごと削除
ファイルをまとめて削除するのに便利なコマンドだが、実行時は十分注意が必要である。通常、ディレクトリ削除のrmdirコマンドではディレクトリの中にファイルや他のディレクトリが存在すると削除に失敗するが、rmコマンドに上記のオプションを付けることで中のファイルやディレクトリごと、まとめて削除することが可能である。
なお、-rオプションはディレクトリ内のファイルを再帰的に削除対象とするオプション、-fオプションは削除時に警告メッセージを表示せずに強制的に削除するオプションだ。
touch [ファイル名] 空ファイルを作成
空ファイルを作成するコマンド。テスト用のファイルを作成する場合などに便利。
cat [ファイル名] ファイル内容を表示
ファイル内容を表示する場合に基本となるコマンド。
【StepUp】
cat -n [ファイル名] ファイル内容に行番号を付けて表示
more [ファイル名] ファイル内容を順番に表示
less [ファイル名] ファイル内容を順番に表示(後方にも移動可能)
ファイルのサイズが大きく、catで表示すると画面に収まらない場合はmoreかlessコマンドを使おう。moreコマンドはファイル内容を画面に収まる単位で順番に(前方に)表示し、lessコマンドの場合は、それに加えてファイルの後方に移動することも出来る。
grep [検索文字列] [ファイル名] ファイル内に存在する検索文字列を表示
SEならば確実に身に付けておきたいコマンドである。エラーログから対象の文字を含む行を抽出したり、時間や日付で絞り込んだりといった操作が可能となる。
【StepUp】
grep [検索文字列] [ファイル名] | grep -v [除外文字列] ファイル内に存在する検索文字列を含む行のうち、除外文字列を含まない行を表示
多少複雑だが、grepの-vオプションとパイプを使った便利な例である。例えば、ログから特定の文字列を含む行のうち、特定のエラーコードを除く行を抽出したい場合などは、上記のコマンドを利用することで表示することが出来る。
-vオプションは与えた条件とマッチしない行を検索結果として表示するオプションである。これを使うことで、ログにノイズ(調査分析に不要な情報)が入っていて見づらい場合などに、見やすく整形することが可能である。SEとして障害調査など行う場合には非常に便利なコマンドだ。
まとめ
本稿ではUnix/Linux系OSを操作する際に絶対覚えて起きたい基本コマンドを紹介した。本稿で紹介するコマンドは、CUIでどんな作業を行う場合にも必要になるといっても過言ではないコマンドである。
ここで紹介したコマンド以外にも様々なコマンドが存在するが、ここで紹介したものを一通り覚えておけば、新人SEとして先輩社員の指示のもと作業を行うようなケースでは、ついていくことが出来るようになるだろう。
勿論、CUIでの作業機会が多い職場においてはこれだけでは不十分なので、これらのコマンドを使いこなせるようになったら、他のコマンドや、応用的な使い方を覚えていこう。
コメントを残す