このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Linux基礎:メタキャラクタ

メタキャラクタ

 Linux のシェルには、入力した文字を単なる文字列ではなく、特別な意味を持つ記号として解釈するものがあります。これを メタキャラクタ と呼びます。メタキャラクタを使うことで、複数のファイルやディレクトリを簡単に指定でき、効率的な操作が可能になります。

 ここでは、Rocky Linux を環境として説明します。練習用のファイルを 1つのメタキャラクタを使ったコマンドで複数作成する方法を取り入れ、実際の出力例を交えて詳しく解説します。

1.メタキャラクタの基本

1.1. メタキャラクタの種類

メタキャラクタの主な種類と意味は以下の通りです。

メタキャラクタ説明使用例
*0文字以上の任意の文字列に一致ls *.txt
?任意の1文字に一致ls ?.txt
[ ]角括弧内の任意の1文字に一致ls [ab]*.txt
\メタキャラクタを通常の文字として扱う(エスケープ)ls file\*name.txt

1.2. 練習用ファイルの作成

 学習のためのファイルを準備します。ここでは touch コマンドと 波括弧展開 { } というメタキャラクタを組み合わせ、一度に複数のファイルを作成します。

[user@rocky9 ~]$ mkdir meta_practice
[user@rocky9 ~]$ cd meta_practice
[user@rocky9 meta_practice]$ touch {1..5}.txt {a..c}{1..5}.txt

このコマンドは以下のように展開されます。

  • {1..5}.txt1.txt 2.txt 3.txt 4.txt 5.txt
  • {a..c}{1..5}.txta1.txt … a5.txt, b1.txt … b5.txt, c1.txt … c5.txt

作成されたファイルを確認します。

[user@rocky9 meta_practice]$ ls
1.txt  3.txt  5.txt   a2.txt  a4.txt  b1.txt  b3.txt  b5.txt  c2.txt  c4.txt
2.txt  4.txt  a1.txt  a3.txt  a5.txt  b2.txt  b4.txt  c1.txt  c3.txt  c5.txt

たった1行で20個の練習用ファイルが準備できました。

2.メタキャラクタの使い方

2.1. * の利用

* は「0文字以上の任意の文字列」に一致します。

[user@rocky9 meta_practice]$ ls *.txt
1.txt  3.txt  5.txt   a2.txt  a4.txt  b1.txt  b3.txt  b5.txt  c2.txt  c4.txt
2.txt  4.txt  a1.txt  a3.txt  a5.txt  b2.txt  b4.txt  c1.txt  c3.txt  c5.txt

拡張子「 .txt」 を持つすべてのファイルが対象となります。

2.2. ? の利用

? は「任意の1文字」に一致します。

[user@rocky9 meta_practice]$ ls ?.txt
1.txt  2.txt  3.txt  4.txt  5.txt

ここでは、ファイル名が1文字+拡張子「 .txt」 のものだけが抽出されています。

2.3. [ ] の利用

[ ] では、候補の中から1文字を選びます。

[user@rocky9 meta_practice]$ ls [ab]*.txt
a1.txt  a2.txt  a3.txt  a4.txt  a5.txt  b1.txt  b2.txt  b3.txt  b4.txt  b5.txt

a または b で始まるファイルだけが表示されています。

さらに、範囲指定も可能です。

[user@rocky9 meta_practice]$ ls [3-5].txt
3.txt  4.txt  5.txt

2.4. \ の利用

\ を付けると、メタキャラクタを通常の文字として扱えます。

[user@rocky9 meta_practice]$ touch file\*name.txt
[user@rocky9 meta_practice]$ ls file*
'file*name.txt'

* がワイルドカードではなく、ファイル名の一部として扱われています。

3.実用的な組み合わせ

3.1. 数字を含むファイルを検索

[user@rocky9 meta_practice]$ ls *[13]*.txt
1.txt  3.txt  a1.txt  a3.txt  b1.txt  b3.txt  c1.txt  c3.txt

[13] と指定することで、ファイル名に「1」または「3」を含むものだけを表示できます。

まとめ

本記事では、シェルで利用する メタキャラクタ について解説しました。

  • *:0文字以上の任意の文字列
  • ?:任意の1文字
  • [ ]:候補や範囲を指定可能
  • \:メタキャラクタを無効化

 さらに、{ } を利用すれば効率的に練習用ファイルを作成できます。実際に試すことで、シェル操作の効率化を体験できるでしょう。