Kodokon kodokon.com

相対パス、絶対パス、ワイルドカード

絶対パスや相対パスでどんなファイルも指し示し、複数のファイルをまとめて操作しましょう。

8 分 · 3 問

このレッスンを Kodokon で開く

ファイルの場所を伝える方法は2つあります。住所の伝え方とまったく同じです。絶対パスは完全な郵便の住所です。ルートから始まるので、どこからでも通用します。macOSとLinuxでは必ずスラッシュ / で始まり、たとえば /home/yoann/my-project/index.html のようになります。Windowsではドライブレターで始まり、たとえば C:\Users\yoann\my-project です。

一方相対パスは、「左側の2つ目のドア」のような言い方です。今いるフォルダを出発点にします。3つの記号だけで何でも表せます。ドット .カレントフォルダ。2つのドット ..親フォルダ。チルダ ~ はあなたのホームフォルダです。これらをスラッシュでつなげて、道順を組み立てます。

BASH
cd /home/yoann/my-project
cd ~/my-project
cd ../other-project
cat ./src/index.html
cp ../photo.jpg .
同じフォルダを絶対パスと相対パスで指し、カレントフォルダへコピーします。

10個のファイルを操作したいとき、10回コマンドを打つわけにはいきません。シェルはワイルドカードパターンとも呼ばれるものを理解します。分からない1文字や複数の文字の代わりになる特別な記号です。アスタリスク *任意の文字の並びを表し、1文字もない場合も含みます。クエスチョンマーク ?ちょうど1文字を表します。角かっこ [ ] は、中に並べた文字のどれか1つを受け付けます。

BASH
ls *.html
ls src/*.css
ls photo-?.jpg
ls report-202[45].pdf
cp *.txt archive/
.htmlファイルすべて、サブフォルダの.cssファイル、photo-1からphoto-9、2024年と2025年のレポート。

面倒を大いに減らしてくれる最後のポイントです。macOSとLinuxでは、ファイル名の大文字と小文字が区別されますPhoto.jpgphoto.jpg は別々のファイルで、ls photo* では前者は見つかりません。Windowsはこの区別をしません。そのため、Windowsのマシンで動くプロジェクトが、それをホストしているLinuxサーバーでは動かない、ということが起こります。原因は大文字1つだけ、ということもあるのです。

理解度チェック

このレッスンの要点をしっかり覚えているか確認しましょう。

  1. macOSやLinuxで、絶対パスは必ず何で始まりますか?
    • ドット .
    • スラッシュ /
    • チルダ ~
    • カレントフォルダの名前
  2. *.html というパターンは何に一致しますか?
    • 名前が .html で終わるファイルすべて
    • *.html という名前そのもののファイルだけ
    • 種類にかかわらず、フォルダの中のファイルすべて
  3. .tmp ファイルをすべて安全に削除したいです。どんな用心をしますか?
    • rm *.tmp を実行してから ls で確認する
    • 先に ls *.tmp を実行して、何が削除されるか見る
    • 何もしない。シェルが必ず確認を求めてくれる