MacOSで大文字と小文字を区別しないbashの奇妙な動作

MacOSで大文字と小文字を区別しないbashの奇妙な動作
~/testing $ echo Hello > hello.txt
~/testing $ echo Goodbye > goodbye.txt
~/testing $ cat goodbye.txt hello.txt > HELLO.txt
^C
~/testing $ ls -l
total 9056
-rw-r--r--  1 user  user        8 25 Jul 16:21 goodbye.txt
-rw-r--r--  1 user  user  4631048 25 Jul 16:22 hello.txt
~/testing $ 

世界保健総会?ここに何かがありました。ファイルを無感覚に削除するオプションはありませんか?これはなぜ円形に見えるのでしょうか?

答え1

Mac OS Xは、デフォルトでは大文字と小文字を区別しないファイルシステムを使用します。変更するには、大文字と小文字を区別するオプションを使用してディスクを再フォーマットする必要があります。主要ベンダーによって作成されたいくつかのプログラムに注意してください。<cough>Adobe</cough>、<cough>Microsoft</cough>大文字と小文字を区別するファイルシステムに深刻な問題があります。

ファイルシステムは大文字と小文字を区別しませんが、すべてのファイルは大文字と小文字を区別しません。つまり、+(大文字H、タブ順)という名前のファイルがあると、hello.txt完成候補を取得できません(シェルを区別しない完成に設定しない限り)。shiftHTab

答え2

cat goodbye.txt hello.txt > HELLO.txt

でき事の連続:

  1. シェルはhello.txtを0バイトに切り捨てます。
  2. catはhello.txtを指すstdoutにbyby.txtの内容を書き込みます。
  3. cat は hello.txt を読み始め、読み込んだ内容を stdout に書き込みます。 stdoutはまだhello.txtを指しています。 cat は同じファイルを読み書きするため、ファイルの終わりに達せずにファイルシステムがいっぱいになるまで hello.txt に追加し続けます。

答え3

OSXでは、ディスクフォーマットのデフォルトオプションはHFS +ジャーナリング(大文字と小文字を区別しない)です。この動作が必要な場合は、大文字と小文字を区別するように型を明示的に設定する必要があります。

あなたが見ている行動は意図的なものです。

関連情報