locate
正規表現でコマンドを使用するには、パターンを引用符で囲み、--regex
オプションを渡す必要がありますか?では、次はどういう意味ですか?
ㅏ)locate --regex file*
?ここで正規表現やシェルワイルドカードが発生しますか?
b) locate 'file*'
? 通過できなくても正規表現検索が対象になりますか--regex
?
c)locate file*
//シェルワイルドカードが発生することを知っています。
d)locate --regex 'file*'
//正規表現検索がデータベースファイルで実行されることを知っています。
答え1
シェルプロンプトでコマンドを入力できます。シェルは、ワイルドカード、代替変数、置換$()
などを含む、入力した内容を処理します。入力を処理した後、シェルはコマンドを実行します。
文字列にシェル固有の文字(スペースやアスタリスクなど)が含まれていますが、シェルがその文字を処理したくない場合は、引用符を使用する必要があります。現在のディレクトリに一致するファイルがない場合は、アスタリスクを引用しないと外れませんが、とにかく引用することをお勧めします。
--regex
このオプションはシェルの動作に影響を与えないことを理解することが重要です。まず、シェルはユーザーが入力するコマンドを処理します。locate
この処理の結果を取得します。
a)現在のディレクトリに一致するファイルがある場合、file*
シェルはそれらをfile*
これらのファイルのリストに置き換えます。電話する前にlocate
。一致するものがない場合、シェルは触れずに名前などのファイルをfile*
探しますfile
。つまり、シェルはグロービングを試み、シェルのグロービング結果が正しい構文である場合、正規表現検索が実行されます。filee
fileee
locate
b) 引用符は、アスタリスクを保持するようシェルに指示します。locate
で始まるファイルを見つけますfile
。正規表現検索はありません。
c)シェルはa)のようにワイルドカードを試みます。一致するものがない場合はlocate
検索が始まりますfile
。正規表現はありません。
d) シェルは式を考慮しない。locate
正規表現検索が実行され、名前などのファイルがfile
検索されます。filee
fileee