シェルのメタキャラクタ

 シェルにとって特別な意味を持つ記号をシェルのメタキャラクタといいます。これらのメタキャラクタは、シェルスクリプトやコマンドラインで様々な機能を提供します。

ファイルパスを表すメタキャラクタ

メタキャラクタ説明
.カレントディレクトリ
..親ディレクトリ
~ホームディレクトリ(例:~useruser のホームディレクトリ)
ファイルパスを表すメタキャラクタ

リダイレクトを表すメタキャラクタ

メタキャラクタ説明
<標準入力のリダイレクト
<<ヒアドキュメント(複数行の入力)
>標準出力のリダイレクト(上書き)
>>標準出力のリダイレクト(追記)
2>標準エラー出力のリダイレクト(上書き)
2>>標準エラー出力のリダイレクト(追記)
&>標準出力と標準エラー出力のリダイレクト(上書き)
リダイレクトを表すメタキャラクタ

引用符を表すメタキャラクタ

メタキャラクタ説明
'シングルクォーテーション:文字列をそのまま解釈
"ダブルクォーテーション:変数展開とエスケープシーケンスを解釈
`バッククォーテーション:コマンド置換
引用符を表すメタキャラクタ

コマンドの実行を表すメタキャラクタ

メタキャラクタ説明
コマンド1 | コマンド2パイプ:コマンド1の標準出力をコマンド2の標準入力に接続
コマンド1 ; コマンド2シーケンス:コマンド1が成功するかどうかに関係なくコマンド2を実行
コマンド1 && コマンド2論理AND:コマンド1が成功した場合のみコマンド2を実行
コマンド1 || コマンド2論理OR:コマンド1が失敗した場合のみコマンド2を実行
コマンド &バックグラウンド実行:コマンドをバックグラウンドで実行し、シェルは直ちに次のプロンプトを表示する
コマンドの実行を表すメタキャラクタ

ワイルドカードを表すメタキャラクタ

メタキャラクタ説明
*任意の0文字以上の文字列に一致
?任意の1文字に一致
[]括弧内のいずれか1文字に一致
[!]括弧内のいずれか1文字以外に一致
{,}カンマで区切られた選択肢のいずれかに一致(例:file{1,2}.txtfile1.txtfile2.txt に一致)
ワイルドカードを表すメタキャラクタ

その他のメタキャラクタ

メタキャラクタ説明
$変数展開(例:$HOME はホームディレクトリ)
!履歴展開(例:!$ は直前のコマンドの最後の引数)
\エスケープシーケンス:直後のメタキャラクタの意味を無効にする
その他のメタキャラクタ

まとめ

 シェルのメタキャラクタを理解することで、コマンドライン操作やシェルスクリプト作成時により効率的に操作を行うことができます。これらのメタキャラクタを使いこなすことで、シェルの強力な機能を最大限に活用することが可能です。

シェルのメタキャラクタと正規表現のメタキャラクタ

 シェルのメタキャラクタと正規表現のメタキャラクタは、パターンマッチングに使用される記号ですが、それぞれ異なる文法と用途を持ちます。以下の表で、代表的なパターンについてシェルと正規表現の違いを簡単にまとめます。

シェルと正規表現のメタキャラクタの比較

パターンシェル正規表現
0文字以上の任意の文字列*.*
任意の1文字?.
[] 内のいずれか1文字[abc][abc]
[] 内記号に続く文字以外の1文字[!abc][^abc]
{} 内の区切り文字で区切られた文字列のいずれか{str1,str2,str3}(str1|str2|str3)
シェルと正規表現のメタキャラクタの比較

使用例と解説

パターン使用例(シェル)解説(シェル)使用例(正規表現)解説(正規表現)
0文字以上の任意の文字列ls *.txt拡張子が .txt の全てのファイルを表示grep "foo.*bar" file.txtfoobar の間に任意の文字列がある行を検索
任意の1文字ls file?.txtfile1.txt, filea.txt など、名前の中に1文字が含まれる .txt ファイルを表示grep "f.o" file.txtfo の間に任意の1文字がある行を検索
[] 内のいずれか1文字ls file[abc].txtfilea.txt, fileb.txt, filec.txt のようなファイルを表示grep "f[aeiou]o" file.txtfo の間に a, e, i, o, u のいずれかがある行を検索
[] 内記号に続く文字以外の1文字ls file[!abc].txtfiled.txt, filex.txt など、a, b, c 以外の文字が含まれる .txt ファイルを表示grep "f[^aeiou]o" file.txtfo の間に a, e, i, o, u 以外の文字がある行を検索
{} 内の区切り文字で区切られた文字列のいずれかcp file{1,2,3}.txt /backup/file1.txt, file2.txt, file3.txt/backup/ にコピーgrep "foo\(bar|baz\)" file.txtfoobar または foobaz を含む行を検索
使用例と解説

まとめ

 シェルのメタキャラクタと正規表現のメタキャラクタは、文字列パターンのマッチングに使用される記号ですが、それぞれ異なる文法と用途を持ちます。シェルのメタキャラクタは主にファイル名のパターンマッチングに使用され、正規表現のメタキャラクタはテキストのパターンマッチングに広く使用されます。これらのメタキャラクタを適切に使い分けることで、効率的なファイル操作やテキスト検索が可能となります。