次の質問は、bashおよびlinuxのみを対象としています。
もしそうなら、これらの制限は何でしょうか?システム固有の場合、どのようにアクセスできますか?
ファイルシステムに大きく依存します。 ext FS(現在Linuxで最も使用されている):
拡張子は、FSが認識しているものではなく、255バイトの拡張子が含まれています(拡張子なしでファイル名を持つことができます)。
ここ は、FSごとのこれらの制限のより包括的なリストです。
また、最大長を変更できるファイルシステムの拡張機能もあります。たとえば、メタファイルを保持するために下位のファイル名の一部を使用し、ファイル名を最大143文字に制限するeCryptFS。 buntu eCryptFS launchpad entryを参照してください。
一時ディレクトリで、次を実行します。
num=1
while [ true ]
do
if ! touch $(printf "%${num}s" | tr ' ' 'a')
then
echo $num
break
fi
((num++))
done
そして私は得る:
touch: cannot touch `aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa': File name too long
256
つまり、私の制限は255です。
Mac OS X 10.6.7の場合:
man getconf
getconf NAME_MAX / # 255 bytes
getconf PATH_MAX / # 1024 bytes
# check file path length with wc before using touch, mkdir, etc.
echo '/very/lllooooonnnnnggggg/file/path.txt' | wc -c
私は他の答えを参照し、それらに賛成してください。
Linuxでは、ファイル名とパス名の長さは以下に依存します。
linux/limits.h
で定義されている定数 DavidBalažic は 同様の質問 を指しています。bash でこれらのプロパティを動的に取得するには:
- ファイルの絶対パス名の文字数に制限はありますか?
はいあります。
sfpによる回答 質問で Linuxのファイル名の長さの制限? サーバーfaultを参照してください
要するに:
#define PATH_MAX 4096 /* # chars in a path name including nul */
そして、
- ファイル名(拡張子なし)のみの文字数に制限はありますか?
同じリンクされた答え:
#define NAME_MAX 255 /* # chars in a file name */
使用するファイルシステムに依存します。たとえば、ext4のファイル名の最大長は256バイトで、パス名の長さは無制限です。
詳細については、 ファイルシステムの比較 を参照してください。
これはbashに依存しません。 OSに依存します。 Macでは、ファイル名に0xff、パス名に0x400程度。 Ubuntu 9では、ファイル名に144文字の制限がありました。
このリンクは Wikipedia にあります。多数のファイルシステムのパスとファイル名の制限を伝えます。
参考までに、Dockerでは、ファイル名の制限は現在 242文字 です。