Wikipediaによると、メタキャラクターは、カラット(^)、ドル記号($)、アスタリスク(*)などの特殊な意味を持つ文字です。
Linuxでは、これらのメタキャラクタはかなりの数であり、その意味は実行しているコマンドやプログラムによって異なります。
メタキャラクターとしての完全停止(。)
謙虚なフルストップは、 cd 、 findやshなどのコマンドを実行するときに現在の位置を寄付するために使われますが、 awk 、 grep 、 sedなどのアプリケーションでは任意の文字を示すために使用されます。
例として、以下のコマンドは、現在のフォルダ以下のすべてのmp3ファイルを検索します。
見つける。 -name * .mp3
このコマンドを実行して作業ディレクトリ(pwd)を表示すると、mp3ファイルをホームフォルダ内の音楽フォルダに保存していると仮定すると、おそらく結果が返されます。
このコマンドを見てみましょう:
ps -ef | grep f..efox
psコマンドは、実行中のすべてのプロセスを一覧表示します。 grepコマンドは入力行を取り、パターンを検索します。
したがって、ps -efコマンドは実行中のプロセスのリストを取得し、それをgrepに渡して、リスト内のf..efoxを持つ行を検索します。 任意の文字を意味することができます。
あなたがfirefoxを走らせているなら、あなたはマッチを得るでしょう。 同様に、fonefoxまたはfreefoxが動作しているプログラムがある場合、それらも返されます。
メタキャラクターとしてのアスタリスク(*)
アスタリスクは、普遍的によく知られているメタキャラクターであり、パターンを検索するときに0以上を意味するために使用されます。
例えば:
見つける。 -name * .mp3
* .mp3は、.mp3で終わるファイル名の一致を返します。 同様に、次のようにgrepコマンドでアスタリスクを使用できました。
ps -ef | grep F * efox
これは、アスタリスクが0以上を意味するため、firefox、facefox、およびfonefoxを見つけるだけでなく、flutefox、ferretfox、さらにはfefoxを見つけることができるため、これはわずかに異なります。
メタキャラクター(^)としてのカラット
カラット(^)は、行または文字列の開始を示すために使用されます。 それで、どのように使用されていますか?
lsコマンドは、次のようにフォルダ内のすべてのファイルを一覧表示するために使用されます。
ls
"gnome"のような特定の文字列で始まるフォルダ内のすべてのファイルを知りたければ、その文字列を指定するためにカラットを使用することができます。
例えば:
ls | grep ^ gnome
これは、gnomeで始まるファイルのみを一覧表示することに注意してください。 ファイル名にgnomeを持つファイルが必要な場合は、再びアスタリスクに戻ります。
上の例では、lsはファイル名のリストを返し、そのリストをパターンマッチングに使用されるgrepに渡します。 grepは、カラット記号がその後ろに来る文字で始まる何かを見つけることを意味することを知っています。この場合、それはグノームです。
メタキャラクターとしてのドル記号($)
ドル記号は、Linuxではメタ文字として複数の意味を持つことができます。
パターンを一致させるために使用される場合、それはカラットとは反対の意味であり、特定の文字列で終わるパターンを示します。
例えば:
ls | grep png $
これは、pngで終わるすべてのファイルをリストします。
ドル記号は、bashシェル内の環境変数にアクセスするためにも使用されます。
例えば:
輸出犬=モリー
エコー$ドッグ
行エクスポート犬= mollyは、dogという環境変数を作成し、その値をmollyに設定します。 環境変数にアクセスするには、$記号が使用されます。 $記号でecho $ dog文はmollyを表示しますが、echo dog文はdogという単語を表示します。
メタキャラクターをエスケープする
メタキャラクターに特別な意味を持たせたくない場合もあります。 f.refoxというファイルとfirefoxというファイルがある場合はどうでしょうか?
次のコマンドを見てください:
ls | grep f.refox
何が返されたと思いますか? f.refoxとfirefoxの両方がパターンに一致するため、両方が返されます。
f.refoxだけを返すには、実際に完全停止を意味するために完全停止をエスケープする必要があります:
ls | grep f \\。refox
一般的なメタキャラクタとその意味
キャラクター | 意味 |
。 | 任意の文字 |
* | 0文字以上 |
^ | パターン(つまり^ gnome)で始まる行や文字列にマッチする。 |
$ | パターンで終わる任意の行や文字列にマッチする(例:gnome $) |
\ | 次の文字をエスケープしてその特別な意味を削除する |
[] | リストまたは範囲のいずれかに一致する(["abc"、 "def"]または[1..9] |
+ | 1つ以上の先行する(つまり、grep a +) |
? | ゼロまたは1つ前にマッチする |