dポイントプレゼントキャンペーン実施中!

LPICレベル1 翔泳社の本を参考にして試験対策をしていますが、p121の0回以上繰り返えす*でab*zでマッチするのが「az」「abz」「abbz」とあります。しかし、「az」はlsコマンドで試してみましたが引っかかりません。
この本が間違っているのでしょうか?

シェルはbashを用いています。(REDHAT9)

回答のほどよろしくお願い致します。

A 回答 (2件)

シェルによって違うというよりは「正規表現」と「シェルのワイルドカード」が違うんです。

シェルのファイル名の展開に使用する * や ? や [a-z] のようなものは正規表現とは違います(強いて言えば簡略化された正規表現です)。また、だいたいの有名なシェルは Bourne Shell (sh) の影響を受けており、ワイルドカードの規則はほぼ同じです(というか私は違うのを知りません)。

> aではじまりzで終わるファイルをdir1/からdir2へ移したい場合

それは mv dir1/a*z dir2 で出来ます。
*の部分は0文字以上の任意の文字列です。(これを正規表現で書くとしたら.*になります)。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
とりあえずよく分かってよかったです。
本当に感謝です。

お礼日時:2005/08/09 15:43

bashの * と正規表現の * は意味が違います。


シェルでは*は「任意の文字列」という意味で使われます。ですから、

# ls ab*z

は「abz」「abcdefbz」「abhogehogez」などに引っかかります。

この回答への補足

回答ありがとうございます。
ではほかのシェルでaではじまりzで終わるファイルをdir1/からdir2へ移したい場合、mv /dir1/a*v /dir2ではaから始まらないファイルも移動してしまうことになりますよね。ではどうしたらいいのでしょうか?

補足日時:2005/08/09 14:30
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
シェルによって違うなんてややこしいですね。

LPICの勉強がしにくいです!
とりあえず、通常のシェルは教科書どおりということを理解しておきます。

お礼日時:2005/08/09 14:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!