短い答え

短い答え

場合によっては、フォルダー名にドット ( .) を含めることが実用的な意味を持ちます。たとえば、L=0.5 で実行された実験のデータを保存する場合、フォルダーの名前は次のようになります。

experiment_L0.5

ファイル名でも同様の問題が発生する可能性があります。例:

file_L0.5.txt

Ubuntu で作業するのは悪い習慣でしょうか? これらのディレクトリを Windows ユーザーと共有するのはどうでしょうか?

答え1

私の知る限り、フォルダーやファイルに 1 つまたは複数のドットを使用して名前を付けても問題はありません。

Ubuntuでは、一般的にドットと3文字(.txtなど)をファイルの種類を識別するために使用しません。そのため、Ubuntuのコンテキストでは特別な意味はありません。これは、Windowsとファイルを共有するときに便利です。Ubuntuでは、魔法の数字ファイルの最初の数バイトにマジックナンバーを追加してファイルの種類を識別します。ただし、ドットと3文字の拡張子でファイルの種類を識別できる場合、Nautilusはマジックナンバーを無視します。この設定は変更できます。 nautilus に拡張機能を無視させる

Ubuntu では、ファイル名またはフォルダ名を のようにドットで始めると、その.experiment_L0.5ファイルまたはフォルダは非表示になります。NautilusでCtrl+を押すと、非表示ファイルの表示を切り替えることができますH。Windows では、先頭が で始まるファイル名は.非表示になりません。そのため、 という名前の非表示ファイルを Windows システムに転送すると.experiment_L0.5、そのファイルははっきりと表示されます。

Ubuntu では、ファイル名の末尾にドットがあっても特別な意味はありません。ただし、Windows ではドットがファイル名と拡張子を区切るため、拡張子なしでドットで終わるファイル名は許可されません。Windows でそのようなファイルを作成しようとすると、ドットも拡張子もなく、名前だけのファイルが作成されました。

参照:ファイル名に関するWiki

お役に立てれば。

答え2

短い答え

  • Windows では次の文字は使用できません: <>:"/\|?*(ソース
  • 他に推奨されない文字は、スペースとドット.ソース
    • 名前にスペースが含まれていると、コマンドライン ツールの使用が難しくなります (難しくなりますが、不可能ではありません)
    • ドットは RegEx で使用されます (例: を使用する場合grep)。先頭のドットは、Linux の慣例によりファイルを非表示にします。Windows では、ドットはファイル拡張子で使用され、ファイル タイプの検出に使用されます。
  • また、WindowsではCON、、、、、、、、、、、、、、、、、、、、、、、、およびPRNというファイル名AUXも許可されません。(​​​​​CLOCK$NUL COM1COM2COM3COM4COM5COM6COM7COM8COM9 LPT1LPT2LPT3LPT4LPT5LPT6LPT7LPT8LPT9ソース
  • 私が知る限り、Unix ファイル システムで許可されていない文字は、/と null (null バイト、\0) だけです。
  • 参照:ファイルシステムの制限(どの Windows と互換性を持たせたいのかはわかりません)。

長い答え

技術的背景: ファイルシステム

Ubuntuはext4ファイル システム。ファイル システムは、基盤となるストレージ (ディスク、SSD など) 上のファイルの保存場所、所有者/グループ/その他の読み取り/書き込み/実行の形式でのアクセス許可、タイムスタンプ、名前を追跡します。

ファイルシステムは、利用可能なストレージを構成します。最初のブロックは「スーパーブロック」と呼ばれます。このブロックは、ファイルシステムをマウントするために使用されます。私の知る限り、すべての最新のファイルシステムは、そのスペースをブロックに分割しています。ほとんどのファイルシステムのブロック サイズも固定されていると思います (確信はありませんが)。ただし、ブロック サイズは、ファイルシステムの作成時に構成できます。ext4 (および ext2 と ext3) は、ファイルとディレクトリにいわゆる「inode」を使用します。これらの inode には、他のブロック (inode または「データ ブロック」である可能性があります) へのポインタが含まれています。また、ファイルの「最初の」inode には、上で述べたすべての情報が含まれています。

もう 1 つの情報は、ファイルの「タイプ」です。「タイプ」は次のいずれかになります。

  • 通常ファイル
  • ディレクトリ
  • デバイスファイル(ブロックまたはキャラクタデバイス)
  • ...

実際、エディターでディレクトリを開くこともできます。

vim /home

ディレクトリには完全なパスは含まれず、コンテンツの名前のみが含まれているため、ファイルに を含められない理由がわかりません/。便利だからかもしれません。( が許可されない理由を知っている人はいますか/?)

ただし、他のファイル システムでは状況が異なります。FAT16 と FAT32 では、いわゆる「ファイル アロケーション テーブル」が使用されていました。つまり、ファイルに保存されているすべてのファイル、それらのファイルがどの「クラスター」で始まり、どのクラスターで終わるかが、単一リンク リストとして含まれたテーブルが存在するということです。

重要なことは、許可されていない文字はファイル システムによっても異なる可能性があるということです。

技術的背景: ファイルの種類

  • Windowsはファイル拡張子を使用してファイルの種類を検出します
  • Linux はファイルの種類を検出するために「マジックバイト」を使用します。マジックバイトはファイルの内容の一部であり、したがって名前とはまったく独立しています。これらのバイトはファイルタイプの仕様の一部です(png仕様例として、 または.txt.htmlどちらもテキスト ファイル)などの同じマジック バイトを持つファイルには、ファイル名拡張子も使用します。

関連している

答え3

.完全性を保つために、1 つのドットまたは 2 つのドットのみで構成される名前は..特別です。

  • .現在のディレクトリを参照します
  • ..親ディレクトリを参照します

.これらのエントリは自動的に追加され、常に存在するため、またはという名前のファイルを持つことはできません..

答え4

Unix、Linuxファイルシステムでは、ファイル名の付け方は非常に柔軟です。唯一使えないファイル名はヌル文字または/名前に を含む文字。ただし、名前の移植性の観点から、他のシステムで禁止/予約されている文字の使用は避けるのが賢明です。たとえば、" * : < > ? \ / |Windows システムでファイルにアクセスする場合は、ファイル名に の文字 (NTFS によって制限されている文字) を使用しないでください。

そして.ファイル名に(ピリオド)を使用することについて、それは問題ないと思うので、"予約済み"以下の Wikipedia リンクで述べられているように、どのシステムでも . 文字は使用できません (OpenVMS、MS-DOS、Windows ではファイル名/ディレクトリ名での使用が許可されていますが、VMS、MS-DOS、Windows では最後の出現が拡張子区切り文字として解釈されます)。

他のシステムでは、通常はファイル名の一部と見なされ、複数のピリオドが許可されることがあります。Unix では、先頭のピリオドは、ファイルまたはフォルダーが通常非表示であることを意味します。

関連情報