2016-09-18 9 views

答えて

3

グロブマッチです。

case '-*'スイッチドパラメータが " - "で始まるときはいつでも実行されます。

最後のケースとしてcase '*'が最初の一致するケースのみが使用されるため、「デフォルト:」のようになります。あなたが以前にそれを持っていたなら、それはそれの後のすべての事例を飲み込むだろう。

また、魚がそのグロブを展開するので、case -*は現在のディレクトリ内のすべてのファイル名がパラメータとして一致するため、引用符を使用する必要があります。したがって、switchedパラメータがファイルの名前であれば真となります。現在のディレクトリは " - "で始まります。

2

@faho's answerの助けを借りて、私は-*の目的を理解しています。

-*はグロブパターンです。 *.pdfReport_2016_*などのパターンとまったく違うわけではありません。

著者は、-で始まるすべてのディレクトリを無視するようにこのチェックを追加しました。 -で始まるディレクトリを作成しますが、CWDを設定しません。

理由は、-はシェルで特別な使い方をしています。

たとえば、cd -は、ディレクトリを-という名前のディレクトリに変更しません。代わりに、最後のディレクトリに移動します。

名前が-で始まるディレクトリまたはファイルが問題の原因です。 SOの姉妹サイトの質問に続いてアイデアを出します。

不思議著者

  • How to cd into a directory with this name “-2” (starting with the hyphen)?
  • How do I delete a file whose name begins with “-” (hyphen a.k.a. dash or minus)?

    How do you enter a directory that's name is only a minus?

    1. -で始まるディレクトリを無視することにしました。

    関連する問題