はじめのLinux入門講座③Linuxのディレクトリ構造とワイルドカード、正規表現について説明します!

インフラ

今回は、Linuxのディレクトリ構造とワイルドカード、正規表現について説明します。

Linux を使いこなすためには、ディレクトリ構造の理解が必要です。 Linux のディレクトリは、ファイルや設定を整理し、システム全体を効率的に管理するために設計されています。

また、ワイルドカードと正規表現を活用することで、Linux におけるファイル検索や操作をより効率的に行うことができます。 ワイルドカードはシンプルなパターンマッチングに適しており、複数のファイルを一括で指定する際に便利です。

ぜひ、最後までご覧いただけると嬉しいです!

ディレクトリ構造

Linuxは、ファイルシステムがツリー構造になっており、ルートディレクトリ(/)を基点としてさまざまなサブディレクトリが配置されています。各ディレクトリには特定の役割があり、システムの動作や管理に不可欠なものばかりです。

本記事では、Linuxのディレクトリ構造を分かりやすく解説し、それぞれのディレクトリがどのような用途で使われるのかを説明します。Linux初心者の方にとっては、ファイルの保存場所やシステムの仕組みを理解する手助けになり、経験者にとっても運用やトラブルシューティングの際に役立つ知識となるでしょう。

下記は、GUI(Graphical User Interface)とCUI(Character User Interface)でDebian Linuxのルートディレクトリ(/)を表示した画面です。

各ディレクトリと用途

Linux のルートディレクトリに含まれる各ディレクトリとその用途は以下のとおりです。

ディレクトリ名用途
/etcシステム全体の設定ファイルが格納されるディレクトリ。ユーザーアカウント情報、ネットワーク設定、サービスの設定ファイルなどが含まれる。
/home各ユーザーのホームディレクトリが配置されるディレクトリ。ユーザーごとに[/home/ユーザー名]というサブディレクトリが作成され、個人のデータや設定ファイルが保存される。
/rootスーパーユーザー(root)のホームディレクトリ。一般ユーザーの/homeとは異なり、管理者専用の作業環境として使用される。
/bootLinuxカーネルやブートローダー(GRUBなど)の設定ファイルが格納されるディレクトリ。システムの起動に必要なデータが含まれるため、不用意な変更は避けるべき。
/bin基本的なコマンドが格納されるディレクトリ。一般ユーザーも使用可能なls、cp、mvなどのコマンドが含まれる。
/sbinシステム管理者向けのコマンドが格納されるディレクトリ。shutdown、fdisk、ifconfigなどの管理用コマンドが含まれる。
/libシステムが動作するために必要な共有ライブラリが格納されるディレクトリ。/binや/sbin内のプログラムが依存するライブラリも含まれる。
/procカーネルやプロセスに関する情報が格納される仮想ファイルシステム。/proc/cpuinfo(CPU情報)や/proc/meminfo(メモリ情報)など、システムの動的な情報を取得できる。
/devデバイスファイルが格納されるディレクトリ。ハードディスク(/dev/sda)、USBデバイス(/dev/sdb)、仮想コンソール(/dev/tty)などが含まれる。
/usr追加のプログラムやライブラリ、ドキュメントが格納されるディレクトリ。/usr/binには追加のユーザー向けコマンド、/usr/sbinには追加の管理者向けコマンドが含まれる。
/varシステムが動作する中で可変的に増減するデータが格納されるディレクトリ。ログファイル(/var/log)、メールデータ(/var/mail)、一時ファイル(/var/tmp)などが保存される。
/tmp一時ファイルを保存するディレクトリ。システム再起動時にデータが削除されることが一般的。
/mnt一時的に外部のファイルシステムをマウントするためのディレクトリ。管理者がUSBメモリやネットワークドライブを手動でマウントする際に使用される。
/mediaリムーバブルメディア(CD/DVD、USBメモリなど)が自動的にマウントされるディレクトリ。ディストリビューションによっては、/mntの代わりに使われることもある。
各ディレクトリと用途

ディレクトリ構造のまとめ

Linux のディレクトリ構造は、システムの動作を支える重要な要素であり、それぞれのディレクトリには特定の役割があります。 この記事では、各ディレクトリの用途を解説し、システム管理やトラブルシューティングに役立つ知識を提供しました。

相対パスと絶対パス

Linuxでは、ファイルやディレクトリを指定する際に「パス」を使用します。パスには絶対パス相対パスの2種類があり、それぞれの違いを理解することは、ファイル操作をスムーズに行う上で重要です。

絶対パスとは?

絶対パス(Absolute Path)とは、ルートディレクトリ(/)を基点として、ファイルやディレクトリの場所を完全に指定するパスです。常に固定された経路を示すため、どの場所からでも同じ方法でアクセスできます。

<例>

/home/user/documents/file.txt
/etc/nginx/nginx.conf

このように、ルートディレクトリ(/)から始まり、目的のファイルまでのフルパスを記述します。

<特徴>

  • どこからでも同じパスでアクセス可能
  • 確実に目的のファイルに到達できる
  • 長くなりがちで、入力の手間がかかる

相対パスとは?

相対パス(Relative Path)とは、現在の作業ディレクトリ(カレントディレクトリ)を基点として、目的のファイルやディレクトリへの道筋を指定する方法です。

<例>

# 現在のディレクトリ内の"documents"フォルダ内のファイル
./documents/file.txt   
# 1つ上のディレクトリにある"file.txt"
../file.txt
  • .(ドット):現在のディレクトリ
  • ..(ドット2つ):1つ上のディレクトリ

<特徴>

  • 短いパスで記述できるため、入力が楽
  • 作業ディレクトリによってアクセス方法が変わる
  • スクリプトやプログラム内で柔軟に利用可能

絶対パスと相対パスの使い分け

絶対パス相対パス
確実に特定のファイルやディレクトリにアクセスしたいとき作業ディレクトリを基準に簡単に移動したいとき
システム設定ファイルの指定(例:/etc/passwdユーザーの作業ディレクトリ内での操作
スクリプトで特定のファイルを明示的に指定する場合同じディレクトリ内のファイルを扱う場合
絶対パスと相対パスの使い分け

使用例

例えば、/home/user/documents/にいる状態で、file.txt/home/user/documents/file.txt)にアクセスする場合、以下のように指定できます。

<絶対パスの場合>

cat /home/user/documents/file.txt

<相対パスの場合>

cat file.txt

また、1つ上の/home/user/にあるnotes.txtにアクセスするには:

cat ../notes.txt

相対パスと絶対パスのまとめ

  • 絶対パスは、どこからでも変わらない固定のパスでアクセスできる。
  • 相対パスは、作業ディレクトリを基準に短いパスでアクセスできる。
  • 操作の用途や状況に応じて、適切に使い分けることが重要。

ファイル操作を効率化するために、絶対パスと相対パスの概念をしっかり理解し、適切な場面で使い分けましょう。

ワイルドカードと正規表現

ワイルドカードとは、Linux のコマンドラインで使用される特殊な文字で、ファイルやディレクトリを柔軟に指定するために利用されます。 ワイルドカードを活用することで、複数のファイルをまとめて操作したり、特定のパターンに一致するファイルを簡単に指定することができます。

一方、正規表現は、より高度なパターンマッチングを可能にする記述方法で、テキスト処理や検索、置換などに広く活用されます。

この記事では、ワイルドカードの基本と応用に加え、正規表現との違いについても解説します。

ワイルドカード

ワイルドカードは、Linuxのコマンドラインでファイル名やパターンを指定するための特殊な文字です。

1. ワイルドカードの基本

ワイルドカードには、以下のような種類があります。

  • * (アスタリスク):任意の文字列に一致
    • 例:*.txt はすべての .txt ファイルに一致
  • ? (クエスチョンマーク):任意の1文字に一致
    • 例:file?.txtfile1.txtfileA.txt に一致
  • [ ] (角括弧):特定の文字のいずれかに一致
    • 例:file[12].txtfile1.txt または file2.txt に一致
  • { } (波括弧):複数の候補を指定可能
    • 例:{file1,file2}.txtfile1.txt または file2.txt に一致

2. ワイルドカードの応用

ワイルドカードは、基本的なファイル検索だけでなく、より高度な操作にも活用できます。特定のパターンに一致するファイルを一括で処理したり、条件に応じた絞り込みを行うことで、効率的なファイル管理が可能になります。

2.1. 拡張子を指定してファイルを操作

特定の拡張子を持つファイルをまとめて処理する場合、ワイルドカードを使用すると便利です。

# 拡張子が .log のファイルをすべて削除
rm *.log
# .txt ファイルを backup ディレクトリにコピー
cp *.txt backup/
2.2. 一部の文字だけ異なるファイルを指定

? を使用すると、特定の位置の文字を任意の1文字として指定できます。

# file1.txt, file2.txt などを表示(file10.txt は対象外)
ls file?.txt
2.3. 指定した範囲のファイルを検索

[] を使うと、特定の範囲にマッチするファイルを指定できます。

# file1.txt ~ file5.txt だけを表示
ls file[1-5].txt
2.4. 複数の異なるパターンを指定

{} を使うと、カンマで区切った複数のパターンにマッチするファイルを指定できます。

# file1.txt, file3.txt, file5.txt を表示
ls {file1,file3,file5}.txt

ワイルドカードを活用することで、コマンドの実行をより柔軟かつ効率的に行うことができます。適切に使い分けることで、Linuxの操作をスムーズに進めることが可能です。

正規表現

ワイルドカードと似た概念として、正規表現があります。正規表現はより強力なパターンマッチングを可能にし、grep や sed、awk などのコマンドで利用されます。

1. 基本的な正規表現

  • . (ドット):任意の1文字に一致
    • 例:f.lefilefale に一致
  • ^ (キャレット):行の先頭を指定
    • 例:^errorerror で始まる行に一致
  • $ (ドル記号):行の末尾を指定
    • 例:log$log で終わる行に一致

2. 応用的な正規表現

  • + (プラス):1回以上の繰り返し
    • 例:go+glegooglegooogle に一致
  • * (アスタリスク):0回以上の繰り返し
    • 例:ba*rbrbarbaar に一致
  • {n,m} (回数指定):n回からm回の範囲の繰り返し
    • 例:a{2,4}aaaaaaaaa に一致

3. grep コマンドとの組み合わせ

grepコマンドは、正規表現を使ってファイル内のテキストを検索するコマンドラインツールです。下記コマンドは、system.log の中から、”error” に続いて “log” が含まれる行を検索するコマンドです。

# "error" に続いて "log" が含まれる行を検索
grep "error.*log" system.log

上記コマンドの場合、下記行が検索に該当します。

  • error: something went wrong log

このコマンドは、ログファイルからエラーに関連する情報を抽出する際などに非常に便利です。

ワイルドカードと正規表現の比較

ワイルドカードはファイル操作を効率化するための簡易的なツールであり、正規表現はテキストデータに対するより高度な処理を可能にする強力なツールであると言えます。

項目ワイルドカード正規表現
主な用途ファイル/ディレクトリ操作テキスト処理/検索/置換
得意な処理ファイル名のパターンマッチング文字列のパターンマッチング
表現力比較的シンプル高度で複雑
主な利用場面コマンドラインでのファイル操作テキストエディタ、プログラミング、ログ解析
ワイルドカードと正規表現の比較

ワイルドカードと正規表現のまとめ

ワイルドカードと正規表現は、ファイル操作やテキスト処理において非常に便利なツールです。ワイルドカードは主にファイル名のパターンマッチングに使用され、*?[] などを駆使することで、複数のファイルを効率的に操作できます。これに対して、正規表現は文字列のパターンをより細かく指定できる強力なツールで、特にテキスト検索や置換、データ解析などに利用されます。

  • ワイルドカード:ファイル操作を簡便にし、パターンマッチングで特定のファイル群をまとめて処理できる。
  • 正規表現:より高度な文字列マッチングを行い、複雑なパターンの検索や置換が可能。

どちらもコマンドライン操作を効率化するために欠かせない技術であり、適切に使い分けることで作業が大幅にスピードアップします。状況に応じて使い分けることが、Linuxでの作業をより効果的にする鍵です。

まとめ

今回は、下記3点について説明しました。

  1. ディレクトリ構造
  2. 相対パスと絶対パス
  3. ワイルドカードと正規表現

Linux のディレクトリ構造、パスの概念、ワイルドカードと正規表現は、システム管理やファイル操作を効率化する上で重要な知識です。 このブログでは、ディレクトリ構造の役割を理解し、絶対パスと相対パスの使い分けを説明しました。

これからも、Macのシステムエンジニアとして、日々、習得した知識や経験を発信していきますので、是非、ブックマーク登録してくれると嬉しいです!

それでは、次回のブログで!

タイトルとURLをコピーしました