bashコマンドでのドットの意味は何ですか?それはアスタリスクとどう違うのですか?


11

私はbashのドットの意味とそれがアスタリスクとどのように異なるかを理解しようとしています。誰かが詳しく説明してもらえますか?たとえば、違いは何だcp -ar /foo/. /foo2/cp -pr /foo/* /foo2/

回答:


12

ドット(.)は.、ディレクトリ自体と同じディレクトリ内のディレクトリです(ls -la /foo表示されます)。したがって、foo/.他の場所にコピーする場合は、それ自体fooをコピーせずに、以下のすべてのツリーを効果的にコピーしfooます(コピー先foo2/.はと同じですfoo2)。

/foo/*シェルによって、の非表示ではないファイルとディレクトリのリストに展開されるため、dotfiles / dotdirsを除いて、/foo同じディレクトリ構造がにコピー/foo/foo2れます。効果的にcpは、(潜在的に)多くの議論を受けます。リストが大きすぎると、の実行がcp失敗する可能性さえあります。


すみませんが、混乱しています。したがって、本来、アスタリスクはコマンドを再帰的にしますか?つまりcp -r /foo/*、と同じことをしcp /foo/* ますか?
Mike B

5
@MikeB、いいえ、シェルは/ fooディレクトリ内のファイルのリストのみを展開します。cpの動作は変更されません。set -xまたはecho cp -pr /foo/* /foo2を使用して、何が起こっているかを確認します。ワイルドカードを展開するのはシェルであることを理解することが重要です。cp星が見えません。
ステファンChazelas

これはどうですか?chmod 755 -R。対chmod 755 -R *
wayofthefuture
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.