Linux 講座 / 現在の場所を確認して移動する - pwd、ls、cd、tree

Linuxでディレクトリを探索する際には、 pwd で現在の位置を確認し、 ls で内容を見た後、 cd で移動します。サブ構造を一目で見たい場合は tree を使用できます。この講座では、四つのコマンドを連続して使い、絶対パスと相対パスが実際の移動にどのように適用されるかを学びます。

tree がない場合は、必須コマンドの ls から進めても問題ありません。インストールが必要な場合は、APTとDNFパッケージ管理からディストリビューションに合ったインストール方法を確認してください。

まず現在の作業ディレクトリを確認する

ターミナルで入力する相対パスは、現在の作業ディレクトリを基準に解釈されます。プロンプトにパスが表示されていても、省略形やユーザー設定により異なる場合があるため、正確な位置を知りたい場合は pwd を入力してください。

pwd

例えばアカウント名が learner で、ホームディレクトリにいる場合は、以下のように出力されます。実際のパスはアカウント設定によって異なります。

/home/learner

pwdは現在の位置を変更しません。シンボリックリンクを経由して入ったディレクトリでは、論理パスと実際のパスが異なる場合があります。Bashで物理的に解釈されたパスを確認したい場合はpwd -Pを使用します。

ディレクトリ内容を見る

lsはファイルとディレクトリの名前を表示します。引数を省略すると現在のディレクトリを、パスを指定すると該当の位置を確認します。以下のコマンドはそれぞれ現在位置と/etcの一覧を要求します。

ls

ls /etc

例えばls /etcの結果には次のような名前が表示されることがあります。以下は説明のため一部項目のみを挙げた例で、実際の一覧や出力の配置はシステムによって異なります。

hosts  passwd  ssh

実際の出力はインストールされているプログラムやシステム設定によって異なります。名前がドット(.)で始まる項目は通常の一覧には表示されないことが多いため、隠し項目まで見たい場合は-aを付けてください。権限・所有者・サイズ・更新時刻なども確認したい場合は-lを使用します。

ls -a

ls -l /etc

ls -lの最初の文字はファイルの種類を示します。dはディレクトリ、-は通常のファイル、lはシンボリックリンクの代表例です。詳細情報の読み方については、ファイル種類と情報講座で扱います。名前だけで対象がディレクトリかどうか確かでない場合は、ls -ld 対象で対象自体の情報を確認できます。

絶対パスと相対パスで移動する

cdは現在のシェルの作業ディレクトリを変更します。例えば下記のように絶対パスを指定すると、どこから実行しても/etcに移動します。直後にpwdを実行して結果を確認してください。

cd /etc

pwd

この場合、pwdの出力は通常次のようになります。

/etc

現在の位置が/etcのとき、cd ..は上位ディレクトリである/に移動します。cd -は直前のディレクトリに戻り、Bashでは戻ったパスが出力されます。2つのコマンドは、以下の説明と一致するように同じシェルで順番に実行する必要があります。

cd ..

pwd

cd -

pwd

上の順序で、最初のpwdは/、cd -、そして最後のpwdは/etcを示します。途中で別のディレクトリに移動した場合は、cd -の結果も変わります。

引数なしでcdを実行するとホームディレクトリに移動します。cd ~も現在のユーザーのホームディレクトリに移動する一般的なBash表記です。ホームディレクトリが必ずしも/home/ユーザー名であるとは限らないので、移動後はpwdで確認してください。

cd

pwd

サブディレクトリ構造の表示

treeはファイルとディレクトリの階層をインデントで表示します。lsが1レベルのリストを確認するのに適している場合、treeはサブ構造を把握する際に便利です。ディレクトリが大きい場合、全ツリーを展開すると出力が長くなることがあるので、最初は深さを制限してください。

tree -d -L 1 /etc

出力の左のインデントと枝表示に沿ってたどると、どのディレクトリが/etcの下にあるかがわかります。以下は構造を示すための簡略例です。実際のディレクトリ名や数は異なります。

/etc

├── ssh

└── systemd

-dはディレクトリのみを表示し、-L 1は表示の深さを1段階に制限します。システムにtreeがない場合は、command not foundが表示されることがあります。その場合は、まずlsで確認し、必要であれば使用中のディストリビューションのパッケージ管理方法に従ってtreeをインストールしてください。この講座の残りの実習ではtreeはなくても構いません。

パス探索実習

次の順序で実行しながら、毎回現在位置とコマンドの対象を予想してみてください。/etcの実際のファイル一覧はコンピュータごとに異なっても問題ありません。実習ではファイルを作成したり変更したりしません。

  1. pwdで出発位置を確認します。
  2. cd /etcに移動した後、pwdとlsで位置と内容を確認します。
  3. cd ..で上位ディレクトリに行き、pwdで/かどうか確認します。
  4. cd -で直前の/etcに戻り、最後にcdでホームディレクトリに戻ります。

cd: ...: No such file or directoryが表示されたら、パスのスペルと大文字小文字を確認してください。Permission deniedは、そのパスに入る権限がないことを意味する場合があります。現在の場所がわからない場合は、推測せず、pwdから再度実行してください。

各コマンドのオプションや例外について詳しく知りたい場合は、pwdで現在のパスを確認する、lsでリストを確認する、cdでディレクトリを移動する、treeで構造を見るを参照してください。

公式ドキュメント

cdとBashのpwdはGNU Bash組み込みコマンドのドキュメント、lsはGNU Coreutilsのlsのドキュメント、treeオプションはtree(1)マニュアルで確認できます。