シェルのメタキャラクタ
シェルにとって特別な意味を持つ記号をシェルのメタキャラクタといいます。これらのメタキャラクタは、シェルスクリプトやコマンドラインで様々な機能を提供します。
ファイルパスを表すメタキャラクタ
メタキャラクタ | 説明 |
---|
. | カレントディレクトリ |
.. | 親ディレクトリ |
~ | ホームディレクトリ(例:~user は user のホームディレクトリ) |
ファイルパスを表すメタキャラクタリダイレクトを表すメタキャラクタ
メタキャラクタ | 説明 |
---|
< | 標準入力のリダイレクト |
<< | ヒアドキュメント(複数行の入力) |
> | 標準出力のリダイレクト(上書き) |
>> | 標準出力のリダイレクト(追記) |
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}.txt は file1.txt と file2.txt に一致) |
ワイルドカードを表すメタキャラクタその他のメタキャラクタ
メタキャラクタ | 説明 |
---|
$ | 変数展開(例:$HOME はホームディレクトリ) |
! | 履歴展開(例:!$ は直前のコマンドの最後の引数) |
\ | エスケープシーケンス:直後のメタキャラクタの意味を無効にする |
その他のメタキャラクタまとめ
シェルのメタキャラクタを理解することで、コマンドライン操作やシェルスクリプト作成時により効率的に操作を行うことができます。これらのメタキャラクタを使いこなすことで、シェルの強力な機能を最大限に活用することが可能です。
シェルのメタキャラクタと正規表現のメタキャラクタ
シェルのメタキャラクタと正規表現のメタキャラクタは、パターンマッチングに使用される記号ですが、それぞれ異なる文法と用途を持ちます。以下の表で、代表的なパターンについてシェルと正規表現の違いを簡単にまとめます。
シェルと正規表現のメタキャラクタの比較
パターン | シェル | 正規表現 |
---|
0文字以上の任意の文字列 | * | .* |
任意の1文字 | ? | . |
[] 内のいずれか1文字 | [abc] | [abc] |
[] 内記号に続く文字以外の1文字 | [!abc] | [^abc] |
{} 内の区切り文字で区切られた文字列のいずれか | {str1,str2,str3} | (str1|str2|str3) |
シェルと正規表現のメタキャラクタの比較使用例と解説
パターン | 使用例(シェル) | 解説(シェル) | 使用例(正規表現) | 解説(正規表現) |
---|
0文字以上の任意の文字列 | ls *.txt | 拡張子が .txt の全てのファイルを表示 | grep "foo.*bar" file.txt | foo と bar の間に任意の文字列がある行を検索 |
任意の1文字 | ls file?.txt | file1.txt , filea.txt など、名前の中に1文字が含まれる .txt ファイルを表示 | grep "f.o" file.txt | f と o の間に任意の1文字がある行を検索 |
[] 内のいずれか1文字 | ls file[abc].txt | filea.txt , fileb.txt , filec.txt のようなファイルを表示 | grep "f[aeiou]o" file.txt | f と o の間に a , e , i , o , u のいずれかがある行を検索 |
[] 内記号に続く文字以外の1文字 | ls file[!abc].txt | filed.txt , filex.txt など、a , b , c 以外の文字が含まれる .txt ファイルを表示 | grep "f[^aeiou]o" file.txt | f と o の間に a , e , i , o , u 以外の文字がある行を検索 |
{} 内の区切り文字で区切られた文字列のいずれか | cp file{1,2,3}.txt /backup/ | file1.txt , file2.txt , file3.txt を /backup/ にコピー | grep "foo\(bar|baz\)" file.txt | foobar または foobaz を含む行を検索 |
使用例と解説まとめ
シェルのメタキャラクタと正規表現のメタキャラクタは、文字列パターンのマッチングに使用される記号ですが、それぞれ異なる文法と用途を持ちます。シェルのメタキャラクタは主にファイル名のパターンマッチングに使用され、正規表現のメタキャラクタはテキストのパターンマッチングに広く使用されます。これらのメタキャラクタを適切に使い分けることで、効率的なファイル操作やテキスト検索が可能となります。