最近、
mv ./* ../somedirectory
のようなことをしたときに驚いた。
そして、.gitignore
のようなファイルが見つかりました 動かされませんでした。
私はほとんどの作業をOSXのzshで行っていますが、この驚きはCentOSのbashに私を悩ませました。 OS Xでbashを試したところ、同じ動作が見つかりました:*
ドットファイルと一致しません。これは私には非常に望ましくないように思えますが、どうやらこれはbashのデフォルトです。 (私が覚えている限り、これはzshのデフォルトでもあるかもしれませんが、何年も前に.zshrcで変更していて、動作が異なることを忘れていた可能性があります。)
期待どおりに動作するようにbashを構成するにはどうすればよいですか:*すべてのファイルに一致し、ドットファイルを無視しないようにします。
これがまったく不明な場合は、次の方法で再現します
cd /tmp
mkdir {t,d}est
touch test/{.,}{1,2,3,4,5,6,7}
ls -hal test
mv test/* dest
ls -hal test # notice dot files are still there
ls -hal dest # notice only some files were mv'ed
承認された回答:
バッシュ
すでにお気づきのように、bashは.
名前またはスラッシュの先頭。ドットに関するマッチングを変更するには、dotglob
を設定する必要があります オプション– man bash:
dotglob If set, bash includes filenames beginning with a `.' in the results of pathname expansion.
bashで有効/設定するには、shopt
を使用します 例:
shopt -s dotglob
zshの場合、dotglob
を使用することもできます オプションですが、setopt
を使用する必要があります 有効にするには、例:
setopt dotglob