フォルダー名にドット(。)を含めるのは悪い習慣ですか?複数のドットを含むファイル名はどうですか?


28

フォルダ名にドット(。)が含まれていると実用的な場合があります。たとえば、L = 0.5で行われた実験のデータを保存しています。そのため、フォルダの名前は次のようになります。

experiment_L0.5

ファイル名についても同様の問題が発生する場合があります。例えば:

file_L0.5.txt

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

ありがとう!


5
ドットが最初の文字の場合、フォルダーは非表示になります。それ以外は重要ではないと思います。
user3121023 14年

回答:


37

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

Ubuntuは通常、ドットと3文字(.txtなど)を使用してファイルタイプを識別しません。したがって、これはUbuntuのコンテキストでは特別な意味を持ちません。これは、Windowsとファイルを共有するときに便利です。Ubuntuは、ファイルの最初の数バイトでマジックナンバーを使用してファイルタイプを識別します。しかし、ノーチラス。ファイルタイプを識別するためにドットと3文字の拡張子が使用可能な場合、マジックナンバーは無視されます。この設定は変更できます。参照 拡張を無視するオウムガイフォース

Ubuntuでは、などのドットでファイルまたはフォルダー名を開始.experiment_L0.5すると、ファイルまたはフォルダーが非表示になります。NautilusでCtrl+ Hを押すと、隠しファイルの表示を切り替えることができます。Windowsでは、。で始まるファイル名。隠されていません。したがって.experiment_L0.5、Windowsシステムに名前の付いた隠しファイルを転送すると、わかりやすく表示されます。

Ubuntuでは、ファイル名の末尾に特別な意味がないため、ドットで終わる場合があります。ただし、Windowsでは、ファイル名と拡張子はドットで区切られており、ドットで終わるが拡張子のないファイル名は使用できません。Windowsでそのようなファイルを作成しようとしたときに、名前だけで、ドットも拡張子も付いていないファイルがありました。

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

お役に立てれば。


4
これは正しいです。ファイルをWindowsと共有する場合:、Windowsのファイル名では違法であるコロン文字を回避する必要がありますが、これは問題を引き起こします(実際にそうなります)。こちらもご覧ください
Rmano 14年

ありがとう@Rmano。回答にwikiへのリンクを追加しました。
user68186 14年

1
互換性について言えばfname.、Windowsでは末尾のドット(など)も許可されていないと思います。
Rmano 14年

@Rmanoに再び感謝します。いくつかの簡単なテストを実行しましたがtest.、Windowsで名前が付けられたファイルを作成できませんでした。回答を更新します。
user68186 14年

1
Rmanoのコメントに追加する-これは、VirtualBoxを介してWindowsドライブをマウントしている場合、Ubuntuで問題になる可能性があります。名前の末尾にドットを付けてmkdirしようとすると、「プロトコルエラー」で失敗します。
-bvanlew

11

短い答え

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

長い答え

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

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

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

もう1つの情報は、ファイルの「タイプ」です。「タイプ」には次のものがあります。

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

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

vim /home

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

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

私があなたに伝えたかった重要なことは、許可されていない文字もファイルシステムに依存するかもしれないということです。

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

  • Windowsはファイル拡張子を使用してファイルタイプを検出します
  • Linuxは、「マジックバイト」を使用してファイルタイプを検出します。マジックバイトはファイルのコンテンツの一部であるため、名前とは完全に独立しています。これらのバイトは、ファイルタイプの仕様の一部です(例としてpng仕様を参照)。また、.txtまたはなどの同じマジックバイトを持つファイルのファイル名拡張子も使用します.html(両方ともテキストファイルです)。

関連する


FATがファイル名を保存する方法についてのあなたの推測は正確ではありません:en.wikipedia.org/wiki/FAT32#File_Allocation_Table-実際の「FAT」はクラスターのリストを保存しますが、ディレクトリはext4の記述方法に似たファイル。:)また、.txtおよび.htmlファイルは確かに異なる「魔法の値を」持っているか-にhtmlファイルの名前を変更しようとtest.txtして実行されていますfile test.txt。元の質問とはあまり関係ありませんが、それでも:)
セルゲイ14

1
おかげで、FATに関する間違った部分を削除しました。マジック値についてfile:およびfileマジック値を使用してファイルのタイプを決定するだけではありません。すべての有効なHTMLファイルは(読み取り可能な文字を含むという意味で)テキストファイルですが、すべての有効なテキストファイルが(W3Cバリデーターに対して検証するという意味で)有効なHTMLファイルではありません。そのため、実際には非常に多くの種類のファイル(html、xml、csv、js、php、c、h、cppなど)がテキストファイルです。バイナリファイルのみに、明確に定義された位置にあるマジックバイトがあります。上記で指定したすべてのファイルには、コンテンツの前に任意の空白を含めることができます。
マーティントーマ14

5

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

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

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


いい視点ね。これは、WindowsとUbuntuの両方に適用されます。
user68186 14

1

これは、LinuxでもWindowsでも問題ではありません。

「program.d」という名前のフォルダーを作成するのが一般的な方法です-プログラムの構成と内容を保存するために(/ etcディレクトリを見てください)


0

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

そして、使用について.、ファイル名に(ピリオド)を、私はしていないようですと、それは問題ないはずだと思う「予約」どこでその使用のOpenVMS以外のシステムのいずれかの文字(、MS-DOSとWindowsファイル/ディレクトリ名は許可されますが、最後の出現は、VMS、MS-DOS、およびWindowsの拡張子区切り文字として解釈されます)。

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

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