@ sergiy-kolodyazhnyyが言ったように、ファイル名の最大長はファイルシステムによって異なり、大多数はファイル名の長さを255バイトに制限しています。
彼のチャートからの注目すべき脱落は光メディアです。UDFとRock Ridgeの拡張機能では、ファイル名に同じ255文字の制限がありますが、Rock RidgeとJolietを使用しないISO9660には、youtube-dl
ダウンロードのバックアップなどを行う場合に実際に実行される可能性のある非常に厳しい制限があります。
ディスクマスタリングプログラムに、実際には害を与えないと思われる方法で仕様から逸脱するオプションがある場合、Jolietファイル名は64 UTF-16コードポイントまたはそれらの103に制限されます。
同様に、Rock Ridge拡張なしのISO 9660レベル2および3は、31文字または37のファイル名に制限されています。
ISO 9660:1999 は genisoimage でサポートされていますが、K3bなどのフロントエンドではサポートされていませんが、207バイト(Rock Ridgeなし)または197バイト(Rock Ridgeあり)の制限があります。
(出典:genisoimage
マンページ)
最大パス長に関しては、それは大きな誤解です。ほとんどのLinuxファイルシステムにはありません。
そこ名前付き定数だPATH_MAX
が、それはだ、特定のPOSIX APIの唯一最大のあなたがすることができ、仕事 の周り。
この「パス長に制限がない」規則の結果として生じる唯一の例外は、FAT32とexFAT(32,760のUnicode文字)、NTFSとReFS(32,767のUnicode文字)、UDF(1,023バイト)、およびISO 9660(不明確ですが、私は見たことがあります) 180、207、212、または222バイトと記載されています)。
これは、この小さなPythonプログラムを実行して、結果のディレクトリを調べることで簡単に確認できます。
import os
for X in range(20):
os.mkdir('x' * 255)
os.chdir('x' * 255)
bash
プロンプトにパス全体を表示するMy では、問題が発生します。ただし、zsh
プロンプトに現在のフォルダーのみを表示するmy には問題がなくpwd
、5000バイト以上のパス全体を問題なく表示できるビルトインさえあります。