Cha*_*art 5 unix path file-location posix filenames
POSIX 中是否有任何合法路径不能与文件相关联,规则或不规则?也就是说,哪个test -e "$LEGITIMATEPOSIXPATHNAME"不能成功?
说明 #1:路径名
通过“POSIX 中的合法路径”,我的意思是 POSIX 表示允许的路径,而不是 POSIX 没有明确禁止的路径。我查了一下,POSIX 规范称它们为字符串:
[a-zA-Z0-9._-](参见http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap03.html#tag_03_276);-;开头 和POSIX 还允许文件系统可能比这更宽松,但它禁止字符 NUL 和/出现在文件名中。请注意lost+found,根据此 def ,这种典型的 UNIX 文件名不是 FPF。还有另一个常量 PATH_MAX,其用法无需进一步解释。
理想的答案将使用 FPF,但我对任何带有 POSIX 未明确禁止的文件名的示例感兴趣。
澄清#2:不可能
显然,路径名通常可以绑定到文件。但是 UNIX 语义会告诉您,有一些特殊的地方通常不能创建任意文件,例如在/dev目录中。POSIX 中是否规定了任何此类特殊位置?这就是问题所追求的。
由于最后一个问题是是否有特殊的地方通常不能有文件,例如 POSIX 中规定的 /dev 目录,那么答案是YES。
IEEE 开放组基本规范第 6 期的第 10 章“POSIX 目录结构和设备”中给出了预先确定的文件和目录的完整列表:
以下目录应存在于合格系统上,并且合格应用程序应仅按照描述使用它们。严格遵守的应用程序不应假定能够在任何这些目录中创建文件,除非下面指定。
/
根目录。
/dev
包含 /dev/console、/dev/null 和 /dev/tty,如下所述。以下目录应存在于合格系统上,并应按所述使用:
/tmp
可供需要创建临时文件的应用程序使用的目录。应允许应用程序在此目录中创建文件,但不应假定此类文件在应用程序调用之间保留。以下文件应存在于符合要求的系统上,并且应可读可写:
/dev/null
无限的数据源和数据接收器。写入 /dev/null 的数据将被丢弃。从 /dev/null 读取应始终返回文件结束符 (EOF)。
/dev/tty
在每个进程中,与该进程的进程组关联的控制终端的同义词(如果有)。对于希望确保将消息写入终端或从终端读取数据(无论输出如何重定向)的程序或 shell 过程非常有用。它还可用于需要输出文件名的应用程序,当需要键入输出并且找出当前正在使用的终端很麻烦时。以下文件应存在于符合要求的系统上,并且不需要可读或可写:
/dev/console
/dev/console 文件是系统控制台的通用名称(请参阅系统控制台)。它通常链接到实现定义的特殊文件。它应向系统控制台提供符合 IEEE Std 1003.1-2001 基本定义卷第 11 章通用终端接口要求的接口。