GNU/Linux >> Linux の 問題 >  >> Linux

グロブのBashでの設定、*がドットファイルと一致するかどうかを制御するには?

最近、
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

Linux
  1. コンソールで大きなファイルをチェックする方法

  2. Bash For Loopsの「do」キーワードの目的は?

  3. Bashの完了が代替案を循環することは可能ですか?

  1. すべてのファイルを取得しますが、ファイルは配列内にあります– Bash?

  2. Linux – Linuxで現在の日付のファイルを取得しますか?

  3. Debian VM の Bash の解像度を変更するにはどうすればよいですか?

  1. コマンドラインでの毎日のBashのヒント

  2. cpコマンドの2つの優れた使用法:Bashショートカット

  3. root ユーザーのファイル許可はどのように機能しますか?