zip - -r フラグ使用時の "." と "* .[^.]*" パターンの違い

zip - -r フラグ使用時の "." と "* .[^.]*" パターンの違い

zipフラグ付きのコマンドを使用してディレクトリの内容 (隠しファイルとディレクトリを含む) を再帰的に圧縮する場合-r、次の 2 つの間に違いはありますか。

zip ../foo.zip -r .

そして:

zip ../foo.zip -r * .[^.]*

それとも全く同じですか?

最初のコマンドは現在のディレクトリ ( .) をターゲットとして取り、-rパラメータ自体にすべての隠しファイルとディレクトリを含める必要があります。

2 番目のコマンドは、私が間違っていなければ、現在のディレクトリ内のすべての非ドット ファイル (最初に ) に一致し、次にchar で始まり、その後にドット以外の任意の文字 ( ) が続く*すべてのファイルに一致します。つまり、親ディレクトリへの移動は除外されます。.[^.]..

オンラインの例で 2 番目のコマンドを見つけましたが、まったく同じように動作するのであれば、より単純な最初のコマンドの代わりにそれを使用する意味がわかりません。

また、POSIX シェル スクリプトでは、 ShellCheck は* .[^.]*を に置き換える必要があるという表記について警告します./* .[!.]*。これは、単純な で.同じことができる場合、これを使用しないもう 1 つの十分な理由です。

私の推測では、私が見つけた例zip ../foo.zip * .[^.]*(-rフラグなし)では、現在のパス ( ) が の代わりにターゲットとして指定されている場合、隠しファイルとディレクトリを含める処理が既に行われているとは-r考えずに、コマンドが取得され、フラグが単純に追加されたものと思われます。-r.* .[^.]*

私の質問は、-rフラグを使用する場合、これら 2 つのコマンドは同等ですか? 私の推測は正しいですか?

関連情報