Linux 验证文件路径

Linux 验证文件路径,linux,macos,filenames,Linux,Macos,Filenames,我们希望验证用户可以输入的文件路径,例如foo/bar。是否可以在OS X或Linux上创建前导或尾随空格的文件,例如foo/bar/bazz touch ' foo ' 在linux上没有问题 linux上没有问题。在linux上可以使用的大多数文件系统中,不允许在文件名中使用“/”和空字符。仅此而已:)在linux上可以使用的大多数文件系统中,不允许在文件名中使用“/”和空字符。仅此而已:)使用标准Mac OS HFS+文件系统(大多数用户机器上的默认文件系统)在OS X上进行快速实验。

我们希望验证用户可以输入的文件路径,例如
foo/bar
。是否可以在OS X或Linux上创建前导或尾随空格的文件,例如
foo/bar/bazz

touch ' foo '
在linux上没有问题


linux上没有问题。

在linux上可以使用的大多数文件系统中,不允许在文件名中使用“/”和空字符。仅此而已:)

在linux上可以使用的大多数文件系统中,不允许在文件名中使用“/”和空字符。仅此而已:)

使用标准Mac OS HFS+文件系统(大多数用户机器上的默认文件系统)在OS X上进行快速实验。 可以创建和装载更传统的Unix文件系统

ls > " foo "
ls > "foo "
ls > " foo"
ls > foo


24 Aug 23:32  foo 
24 Aug 23:32 foo 
24 Aug 23:32  foo
24 Aug 23:32 foo

ls > "foo/ "
-bash: foo/ : Not a directory
所以-前导和尾随空间-是的。这确保了与经典Mac OS文件的兼容性。 使用/-no

现在试试

ls > Foo
我们看到“foo”被更新了。默认情况下,HFS不区分大小写(可以启用,但如果需要,最好使用完全替代的FS)


如果您的代码期望Foo和Foo同时存在,那么将一些标准Unix代码转换为OS X显然会导致问题。

使用标准Mac OS HFS+文件系统(大多数用户机器上默认的文件系统)在OS X上进行快速试验。 可以创建和装载更传统的Unix文件系统

ls > " foo "
ls > "foo "
ls > " foo"
ls > foo


24 Aug 23:32  foo 
24 Aug 23:32 foo 
24 Aug 23:32  foo
24 Aug 23:32 foo

ls > "foo/ "
-bash: foo/ : Not a directory
所以-前导和尾随空间-是的。这确保了与经典Mac OS文件的兼容性。 使用/-no

现在试试

ls > Foo
我们看到“foo”被更新了。默认情况下,HFS不区分大小写(可以启用,但如果需要,最好使用完全替代的FS)

如果您的代码希望Foo和Foo同时存在,那么将一些标准Unix代码转换为OS X显然会导致问题。

(pendantic)实际上,一些文件系统甚至允许您使用
“/”
“\0”
,我相当肯定的是内核不允许这样做。(不可否认,大多数或所有允许这样做的文件系统驱动程序都不允许您创建或甚至可能与这样的文件交互,但文件系统允许它们的实际布局。)确实如此。HFS不喜欢“:”但对“\0”很满意(pendantic),实际上有些文件系统甚至允许您使用
'/'
'\0'
,我相当肯定它的内核不允许这样做。(不可否认,大多数或所有允许这样做的文件系统驱动程序都不允许您创建或甚至可能与这样的文件交互,但文件系统允许它们的实际布局。)确实如此。HFS不喜欢“:”但喜欢“\0”