現在地とディレクトリ移動
Linuxの操作はまず「いま自分がどのフォルダにいるか」を意識することから始まります。pwd で現在地を表示し、ls で中身を一覧し、cd で別のフォルダへ移動します。フォルダの位置は / から始まる絶対パスと、現在地を基準にした相対パスの2通りで指せます。
Linuxをコマンドで操作するとき、まず身につけたいのは「自分がいま、ファイル階層のどこに立っているのか」という感覚です。グラフィカルな画面ならフォルダのアイコンを見れば一目で分かりますが、黒い画面(ターミナル)では現在地が文字でしか示されません。この現在地のことをカレントディレクトリと呼びます。ファイル名だけを指定したコマンドは、原則としてこのカレントディレクトリの中身に対して働きます。つまり同じ ls や cp というコマンドでも、いまどこにいるかによって結果がまるで変わります。だからこそ、操作を始める前に「いまどこにいるか」を確かめる癖が、そのまま事故を防ぐ第一歩になります。Linuxではファイルの置き場所であるディレクトリそのものを操作対象として強く意識するので、ここを最初の土台として固めておきましょう。
現在地を表示するコマンドが pwd です。print working directory の頭文字で、実行すると /home/user01 のように、ルートから現在地までの道のりがそのまま出力されます。プロンプトにもヒントが隠れていて、[user01@localhost ~]$ という表示のうち ~ の部分にカレントディレクトリが示されます。~ はホームディレクトリ(ユーザ user01 なら /home/user01)を表す記号で、シェルを起動した直後はここが現在地になっています。ディレクトリを移動すると、この ~ の位置の表示が universe のように変わっていくので、プロンプトを見るだけでもおおよその現在地が分かります。ただしプロンプトの形は設定で変えられるため、確実に知りたいときは迷わず pwd を打つ——これを基本動作にしてください。今どこにいるか分からなくなったとき、pwd は必ず正確な答えを返します。
中身を一覧する ls
現在地が分かったら、次はその中に何があるかを見ます。ls はディレクトリの内容を一覧表示するコマンドです。引数なしで ls とだけ打てばカレントディレクトリの中身が、ls /etc のようにディレクトリを引数で渡せばその場所の中身が表示されます。よく使うオプションとして、-a を付けると先頭がドットで始まる隠しファイル(.bashrc など)まで含めて表示します。設定ファイルの多くはこの隠しファイルなので、「何も無いはずなのに」と思ったら -a を試すのが定石です。-l を付けると1行に1ファイルずつ、権限・所有者・サイズ・更新日時といった詳細情報を並べた「長い形式」になります。-a と -l はまとめて ls -al や ls -la のように書け、さらに -h を足した ls -alh ではサイズが 4.0K や 12M のように人間に読みやすい単位で表示されます。
ls の表示を見ても、それがファイルなのかディレクトリなのかが一見して分からず戸惑うことがあります。ls -l の行頭が d で始まっていればディレクトリ、- なら通常ファイルです。これは次のパーミッションの話ともつながる重要な手がかりです。一覧が多すぎて画面を流れてしまうときは、ls -l /etc のようにディレクトリを指定したうえで、後述するパイプで less などに渡すと落ち着いて読めます。
移動する cd と2種類のパス
別の場所へ移りたいときは cd(change directory)を使い、引数に移動先を指定します。たとえば cd universe でカレントディレクトリ直下の universe へ入り、cd .. でひとつ上の階層へ戻ります。.. は「親ディレクトリ」を指す特別な名前で、. は「現在地そのもの」を指します。../.. のようにつなげれば2階層上へ一気に戻れます。引数を付けずに cd だけを実行すると、どこにいてもホームディレクトリへ一足飛びに戻れ、cd - とすると直前にいたディレクトリへ戻れます。移動したあとは pwd やプロンプトの表示で、狙った場所に来られたかを確認しましょう。存在しない場所を指定すると「そのようなファイルやディレクトリはありません」とエラーになるので、タイプミスにも気づけます。
場所の指し方には2通りあり、これがディレクトリ移動の理解の山場です。ルートディレクトリ(/)を起点にして上から順に書く方式を絶対パスといい、/home/user01/universe のように必ず / で始まります。フルパスとも呼ばれ、自分がどこにいても同じ場所を確実に指せるのが長所です。一方、いまのカレントディレクトリを起点にして、そこからの差分だけで書く方式を相対パスといいます。たとえば universe/galaxy や、ひとつ上を経由する ../andromeda のような書き方です。先頭に / が付いていなければ、シェルはすべて相対パスとして解釈します。この「先頭が / かどうか」が両者を見分ける唯一の目印です。
同じ場所でも、絶対パスと相対パスのどちらでもたどり着けます。たとえばカレントが /home/user01 のとき、cd /home/user01/universe/galaxy と cd universe/galaxy はまったく同じ結果になります。どちらを使うかは状況しだいで、設定ファイルのように位置が決まっているものは絶対パスで確実に指し、いま作業しているフォルダの近くを触るときは短く書ける相対パスで素早く、と使い分けるのが実務の感覚です。スクリプトの中では、実行する場所に左右されないよう絶対パスを選ぶことが多くなります。
長いパスを一字一句手で打つのは現実的ではありません。入力の途中で Tab キーを押す「補完」を必ず覚えてください。たとえば cd uniまで打って Tab を押せば universe に補完され、候補が複数あるときはもう一度 Tab を押すと候補一覧が出ます。これだけでタイプ量もミスも激減します。あわせて、過去に打ったコマンドを上下キーでたどる履歴や、Ctrl + r でキーワード検索する機能を使うと、似たコマンドを何度も打ち直さずに済みます。「pwd で現在地を確かめ、ls で周りを見て、cd で移る」——この3つの往復に補完と履歴を重ねたものが、Linux操作のいちばん土台になるリズムです。