【Bash講座 第2回】いちいち移動するのは面倒?「パス」を極めて手抜きしよう
こんにちは!「リナックス先生」です。
前回は、黒い画面にログインして、ls や cd でディレクトリを移動するところまで進みましたね。
コウ君、その後の調子はどう?
先生!コマンド操作にも少し慣れてきたんですが…
深い階層にあるファイルを操作したい時、いちいち cd で移動してからコマンドを打つのが面倒くさいです。
いきなり遠くのファイルを指定する魔法はないんですか?
いい着眼点ね!それが「エンジニアの怠惰」という才能よ。
もちろん、移動せずにファイルを操作する方法はあるわ。
そこで重要になるのが「パス(Path)」の概念と、魔法の記号「ワイルドカード」よ。
今回は、Linux初心者が最初に挫折しやすい「絶対パス・相対パス」の違いを完全にマスターしましょう!
第2回となる今回は、ファイルやディレクトリの場所を正確に指し示す「パス」の考え方と、複数のファイルを一括で操作するテクニックを学びます。
これを覚えると、コマンド入力の速度が3倍になりますよ。
本講座のカリキュラム(全12回)
AlmaLinux 9 (RHEL 9互換) 環境を前提に、基礎から応用までステップバイステップで進めます。
- Bash入門編:シェルとカーネルの関係、CUIの哲学、環境構築
- 【今回】ファイル操作の極意:絶対パス・相対パスと「ワイルドカード」の魔術
- 権限(パーミッション)とユーザー:chmod, chown, sudoの仕組みを完全理解
- 入出力リダイレクトとパイプ:Linuxの真骨頂!コマンド同士を連携させる技術
- テキスト処理の基本:cat, head, tail, less…ファイルの中身を覗く道具たち
- 最強のエディタ「Vi/Vim」入門:サーバー内でテキストを編集する必須スキル
- シェルスクリプトの第一歩:ファイルにまとめて自動実行!変数と引数の基礎
- 条件分岐(if文):サーバーの状態を見て「判断」できるスクリプトを作る
- 繰り返し処理(for/while文):面倒な単純作業を1秒で終わらせるループ処理
- テキスト処理の応用:grep, sed, awk…ログ解析の達人になるための三種の神器
- 実践・自動化スクリプト:バックアップと監視を自動化し、Cronで定期実行する
- 総仕上げ:自作スクリプトの集大成と、エンジニアとしての歩き方
1. 「住所」と「道案内」の違い:パスの指定方法
Linuxにおける「パス(Path)」とは、ファイルやディレクトリの「場所(住所)」のことです。
指定方法には大きく分けて2つの流儀があります。
イメージしやすいように、東京タワーへの行き方で例えてみましょう。
パスには「絶対」と「相対」の2種類があるの。
| 種類 | 例え(東京タワーへの行き方) | 特徴 |
|---|---|---|
| 絶対パス (Absolute Path) |
「東京都港区芝公園4丁目2-8 へ行ってください」 (住所で指定) |
今どこにいても、必ず同じ場所にたどり着ける。 記述が長くなりがち。 |
| 相対パス (Relative Path) |
「ここから2つ先の信号を右に曲がって、300m進んでください」 (道案内で指定) |
今の現在地(カレントディレクトリ)によって、たどり着く場所が変わる。 近くのファイルを指す時は短くて楽。 |
(1) 絶対パス (Absolute Path)
一番上の階層であるルートディレクトリ / から書き始める方法です。
迷子になった時や、スクリプト(プログラム)の中に書く時は、間違いが起きないこの書き方が推奨されます。
# 例:/etc/ssh/sshd_config というファイルを指定する場合 [root@localhost ~]# ls -l /etc/ssh/sshd_config
(2) 相対パス (Relative Path)
今いる場所(カレントディレクトリ)を基準にして場所を指定する方法です。/ から始めず、いきなりディレクトリ名や、以下の「特別な記号」から書き始めます。
.(ドット1つ):今の場所(カレントディレクトリ)..(ドット2つ):1つ上の階層(親ディレクトリ)
ドット2つ .. は「親ディレクトリ」なんですね。
じゃあ、「1つ上の階層の、隣の部屋にあるファイル」を指定したい時はどうすれば?
その場合は ../ を使って一度上に登ればいいのよ。
例えば今 /home/kou/work/ にいて、隣の /home/kou/memo/ にあるファイルを見たいなら、こう書くの。
# 現在地を確認 [root@localhost work]# pwd /home/kou/work # 一つ上がって(kou)、memoディレクトリに降りる [root@localhost work]# ls ../memo/file.txt
2. ファイルを一網打尽!「ワイルドカード」の魔術
ここからがBashの真骨頂です。
ファイル名の一部を「記号」に置き換えることで、複数のファイルをまとめて指定することができます。
これをワイルドカード(glob展開)と呼びます。
(1) アスタリスク * :何文字でもOK
「0文字以上の任意の文字列」を表します。最も頻繁に使います。
# 拡張子が .log のファイルをすべて表示 [root@localhost ~]# ls *.log # 「access」で始まるファイルをすべて表示 [root@localhost ~]# ls access*
(2) クエスチョン ? :任意の1文字
「ちょうど1文字」を表します。文字数を厳密に指定したい時に使います。
# file1.txt, fileA.txt はヒットするが、file10.txt はヒットしない [root@localhost ~]# ls file?.txt
(3) 角括弧 [] :指定した文字のどれか
中に入れた文字のいずれか1文字にマッチします。
# file1.txt, file2.txt, file3.txt だけ表示(file4.txtは出ない) [root@localhost ~]# ls file[123].txt # 範囲指定も可能(0から9まで) [root@localhost ~]# ls file[0-9].txt
【警告】 ワイルドカードを使う時は rm コマンドに注意してね。rm * と打つと、その場所にあるファイルを全て削除しちゃうわ。
特に「スペース」には気をつけて。 rm file * と打つと、「file」と「全部(*)」を消すことになって大惨事よ。
3. プロっぽい技:ブレース展開 {}
複数のファイルを生成したり、バックアップを取る時に便利なのがブレース展開です。
設定ファイルをいじる時、cp config.txt config.txt.bak って毎回ファイル名を2回書くのが面倒くさいです…。
そんな時こそ、この機能の出番です。{} の中にカンマ区切りで文字列を入れると、Bashがそれを展開してコマンドを作ってくれます。
# 以下のコマンドは...
[root@localhost ~]# cp config.txt{,.bak}
# 実は、このように展開されて実行されています!
[root@localhost ~]# cp config.txt config.txt.bak
連番のディレクトリを一気に作る時にも便利です。
# 2024年1月から12月までのディレクトリを一発作成
[root@localhost ~]# mkdir 2024-{01..12}
[root@localhost ~]# ls
2024-01 2024-02 ... 2024-12
4. 意外な落とし穴:隠しファイル
Linuxでは、ファイル名の先頭に . (ドット) がつくと「隠しファイル」扱いになり、普通の ls では表示されなくなります。.bashrc や .ssh などの設定ファイルによく使われます。
# 普通にlsしても見えない [root@localhost ~]# ls # -a (all) オプションをつけると見える [root@localhost ~]# ls -a . .. .bash_history .bashrc .ssh
先ほど紹介したワイルドカード * も、通常設定では隠しファイルを含みません。
「全部コピーしたはずなのに、設定ファイルだけコピーされてない!」という事故は、これが原因であることが多いです。
次回予告:初心者の最大の壁「パーミッション」
第2回は、パス操作とワイルドカードについて解説しました。
これで、ディレクトリを移動しまくらなくても、遠くのファイルをスナイパーのように操作できるようになりましたね。
次回は、Linux初心者が必ず一度は泣かされるエラー「Permission denied(許可がありません)」の正体に迫ります。chmod 777 って何? root と一般ユーザーは何が違うの?
セキュリティの要である「権限(パーミッション)」について、図解で分かりやすく解説します。
次回までに、今日習った mkdir {1..10} を使って、自分の環境でディレクトリを量産してみてね。
自分で作ったファイルを自分で消す練習も忘れずに!
▼本講座推奨!AlmaLinux 9がすぐ使えるVPS



コメント