这是命令 fileposix,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
file — 确定文件类型
概要
文件 [-dh] [-M 文件] [-m 文件] 文件...
文件 -i [-h] 文件...
商品描述
- 文件 公用事业单位应按顺序对每个指定的 文件 的
尝试对其进行分类:
1。 如果 文件 不存在,无法读取,或无法确定其文件状态,
输出应表明该文件已处理,但其类型不能
决定。
2. 如果该文件不是普通文件,则应标识其文件类型。 文件类型
目录、FIFO、套接字、块特殊和字符特殊应标识为
这样的。 也可以识别其他实现定义的文件类型。 如果 文件 是一个
符号链接,默认情况下链接将被解析和 文件 应测试的类型
符号链接引用的文件。 (见 -h 和 -i 下面的选项。)
3.如果长度 文件 为零,则应将其标识为空文件。
4. 文件 实用程序应检查初始段 文件 并猜测
根据位置敏感测试识别其内容。 (答案不是
保证正确; 见 -d, -M及 -m 下面的选项。)
5. 文件 实用程序应检查 文件 并猜测基于识别其内容
关于上下文敏感的默认系统测试。 (答案不保证是
正确的。)
6. 该文件应标识为数据文件。
If 文件 不存在,无法读取,或无法确定其文件状态,
输出应表明该文件已处理,但其类型不能
决定。
If 文件 是一个符号链接,默认情况下,链接应该被解析并且 文件 应测试
符号链接引用的文件类型。
配置
- 文件 实用程序应符合 POSIX.1-2008 的基本定义卷, 部分
12.2, 公用事业 句法 指南,除了顺序 -m, -d及 -M 选项须
重要。
实施应支持以下选项:
-d 应用任何位置敏感的默认系统测试和上下文敏感的默认值
系统测试到文件。 如果没有,这是默认值 -M or -m 选项是
指定的。
-h 当遇到符号链接时,将该文件标识为符号链接。 如果 -h
没有指定和 文件 是一个符号链接,指向一个不存在的文件,
文件 应将文件标识为符号链接,就好像 -h 已被指定。
-i 如果文件是普通文件,请不要尝试对文件类型进行分类
进一步,但标识在 STDOUT 部分中指定的文件。
-M 文件 指定包含位置敏感测试的文件的名称
应用于文件以对其进行分类(请参阅扩展说明)。 不
位置敏感的默认系统测试或上下文敏感的默认系统
应进行测试,除非 -d 选项也被指定。
-m 文件 指定包含位置敏感测试的文件的名称
应用于文件以对其进行分类(请参阅扩展说明)。
如果 -m 指定选项而不指定 -d 选项还是 -M 选项,位置-
敏感默认系统测试应在位置敏感测试之后应用
由指定 -m 选项。 如果 -M 选项是用 -d 选项, -m
选项,或两者兼有,或 -m 选项是用 -d 选项,连接
这些选项指定的位置敏感测试应按顺序应用
由这些选项的外观指定。 如果一个 -M or -m 文件 选项参数是 - ,
结果未指定。
操作数
应支持以下操作数:
文件 要测试的文件的路径名。
标准输入
如果出现以下情况,则应使用标准输入 文件 操作数是 '-' 和实施对待
这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 '-' 作为标准输入的意思。 否则,不得使用标准输入。
INPUT FILES
- 文件 可以是任何文件类型。
环境 变数
以下环境变量会影响执行 文件:
朗 为未设置或未设置的国际化变量提供默认值
空值。 (参见 POSIX.1-2008 的基本定义卷, 部分 8.2,
国际化 变量 为国际化优先
用于确定语言环境类别值的变量。)
LC_ALL 如果设置为非空字符串值,则覆盖所有其他字符串的值
国际化变量。
LC_CTYPE 确定用于解释文本数据字节序列的语言环境
作为字符(例如,单字节而不是多字节字符
参数和输入文件)。
LC_消息
确定应该用于影响格式和内容的语言环境
写入标准错误的诊断消息和写入的信息性消息
到标准输出。
路径 确定用于处理的消息目录的位置 LC_消息.
异步 新闻
默认。
标准输出
在 POSIX 语言环境中,应使用以下格式来标识每个操作数, 文件
指定的:
"%s: %s\n", <文件>,类型>
的值类型> 未指定,除了在 POSIX 语言环境中,如果 文件 is
标识为下表中列出的类型之一,类型> 应包含(但
不限于)相应的字符串,除非文件由位置标识 -
由a指定的敏感测试 -M or -m 选项。 每个在字符串中显示应为
正好一个.
表 4-9: 文件 公用事业 输出 琴弦
┌──────────────────────────────────────────────┬──── ──────────────────────────────────┬────────┐
│ If 文件 是: │ <类型> 将 包含 这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 串: │ 笔记 │
├──────────────────────────────────────────────┼──── ──────────────────────────────────┼────────┤
│不存在│打不开││
│ │ │ │
│块特殊 │ 块特殊 │ 1 │
│人物特殊 │ 人物特殊 │ 1 │
│目录 │ 目录 │ 1 │
│先进先出 │ 先进先出 │ 1 │
│插座│插座│1个│
│符号链接 │ 符号链接 │ 1 │
│普通文件 │ 普通文件 │ 1,2 │
│普通文件清空 │ 清空 │ 3 │
│普通文件无法读取│无法打开│3│
│ │ │ │
│可执行二进制文件 │ 可执行文件 │ 3,4,6 │
│ar 档案库(见 ar) │ 存档 │ 3,4,6 │
│扩展 的cpio 格式(见 人份) │ cpio 存档 │ 3,4,6 │
│扩展 焦油 格式(见 乌斯塔尔 in 人份) │ tar 档案 │ 3,4,6 │
│ │ │ │
│Shell 脚本 │ 命令文本 │ 3,5,6 │
│C语言源码│c程序文本│3,5,6│
│FORTRAN源码│ fortran程序文本│ 3,5,6 │
│ │ │ │
│类型无法确定的普通文件│数据│3│
└──────────────────────────────────────────────┴──── ──────────────────────────────────┴────────┘
备注:
1. 这是一个文件类型测试。
2. 此测试仅适用于 -i 选项被指定。
3. 此测试仅适用于 -i 未指定选项。
4. 这是一个位置敏感的默认系统测试。
5. 这是一个上下文敏感的默认系统测试。
6. 位置敏感的默认系统测试和上下文敏感的默认系统
如果 -M 除非指定选项 -d 选项是
还规定。
在 POSIX 语言环境中,如果 文件 被标识为符号链接(请参阅 -h 选项),
应使用以下替代输出格式:
"%s: %s %s\n", <文件>,类型>,Contents of 链接>"
如果文件名为 文件 操作数不存在、无法读取或类型
文件名为 文件 无法确定操作数,这不应被视为错误
这会影响退出状态。
斯特德
标准错误应仅用于诊断消息。
OUTPUT FILES
无。
EXTENDED 商品描述
指定为选项参数的文件 -m or -M 选项应包含一个位置-
每行敏感测试,应应用于文件。 如果测试成功,则
应打印该行的消息字段,并且不应应用进一步的测试,使用
测试以单个开头的紧随其后的行的异常 '>' 字符
应适用。
每行应由以下四项组成- 分隔的字段。 (实现
可以允许一个或多个空白字符的任意组合,除了到
充当字段分隔符。)
抵消 一个无符号数(可选地前面有一个 '>' 字符)指定
这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 抵消,以字节为单位,要与之比较的文件中的值
这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 折扣值 线的领域。 如果文件短于指定的偏移量,
测试将失败。
如果 抵消 从字符开始 '>',该行中包含的测试
不得应用于文件,除非最后一行的测试
抵消 不是以a开头 '>' 那是成功的。 默认情况下, 抵消 应该
解释为无符号十进制数。 以 0x 或 0X 开头, 抵消
应解释为十六进制数; 否则,在前导 0 的情况下,
抵消 应解释为八进制数。
类型 要测试的文件中的值的类型。 类型应包括
类型规范字符 d, s及 u, 指定有符号十进制, 字符串,
和无符号十进制,分别。
- 类型 字符串应被解释为从文件开始的字节
指定 抵消 并包括由指定的相同字节数 折扣值
场地。 如果文件中剩余的字节不足 抵消 匹配
折扣值 场,测试将失败。
类型规范字符 d 和 u 可以跟一个可选的
无符号十进制整数,指定由
类型。 类型规范字符 d 和 u 可以跟一个可选的
C, S, I或 L, 表示该值的类型 坦克, 短, INT或 长,
。
类型说明符表示的默认字节数 d, f及 u 将
对应于它们各自的 C 语言类型如下。 如果系统声称
符合 C-Language Development Utilities 选项,那些说明符
应对应于使用的默认尺寸 c99 公用事业。 否则,
默认大小应由实现定义。
对于类型说明符 d 和 u, 默认字节数
对应于实现的基本整数类型的大小。 对于这些
说明符字符,实现应支持可选的值
要转换的字节数对应于 C- 中的字节数
语言类型 坦克, 短, INT或 长. 这些数字也可以指定
通过应用程序作为字符 C, S, I及 L, 分别。 字节顺序
解释数值时使用的是实现定义的,但应
对应于存储相应类型的常量的顺序
在系统内存中。
所有类型说明符,除了 s, 后面可以跟一个掩码说明符
形式 &数. 掩码值应与输入文件的值进行 AND 运算
对比之前 折扣值 线的领域。 默认情况下,
掩码应解释为无符号十进制数。 带有前导 0x 或
0X,掩码应解释为无符号的十六进制数; 除此以外,
前导 0,掩码应解释为无符号八进制数。
字符串 字节, 短, 长及 绳子 也应支持类型
字段,被解释为 dC, dS, dL及 s。
折扣值 - 折扣值 与文件中的值进行比较。
如果类型字段中的说明符是 s or 绳子,然后将该值解释为
一个字符串。 否则,将其解释为数字。 如果值是字符串,则
只有当字符串值与来自的字节完全匹配时,测试才会成功
文件。
如果 折扣值 是一个字符串,它可以包含以下序列:
\字符 这-Base 中指定的转义序列
POSIX.1-2008 的定义卷, 表 5-1, 逃生 序列 和
关联的 行动 ('\\', '\一种', '\b', '\F', '\n', '\r', '\t', '\v').
此外,转义序列 '\ ' (这特点
紧接着一个字符)应被识别为代表一个
特点。 使用任何其他字符的结果,其他
比一个八进制数字,跟随未指定。
\八进制 可用于表示字符的八进制序列
特定的编码值。 一个八进制序列应包括一个
后跟最长的一、二或三序列
八位数字字符 (01234567)。
默认情况下,任何不是字符串的值都应被解释为有符号的
十进制数。 任何这样的值,前导 0x 或 0X,应解释为
一个无符号的十六进制数; 否则,在前导零的情况下,该值应
被解释为一个无符号的八进制数。
如果该值不是字符串,则可以在它前面加上一个字符,指示
进行比较。 允许的字符及其比较
具体如下:
= 如果文件中的值等于 折扣值 领域。
< 如果文件中的值小于 折扣值
领域。
> 如果文件中的值大于
折扣值 领域。
& 如果所有设置位在 折扣值 字段设置
在文件的值中。
^ 如果设置位中的至少一个在 折扣值 部分
未在文件中的值中设置。
x 如果文件足够大以包含值,则测试将成功
从指定的偏移量开始指定的类型。
消息 - 消息 如果测试成功则打印。 这 消息 应解释
使用符号表示 的printf 格式规范; 看 的printf。 如果
折扣值 字段是一个字符串,那么文件中的值应该是
这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 的printf 格式规范; 否则,文件中的值应为
论点。
退出 状态
应返回以下退出值:
0 成功完成。
>0 发生错误。
后果 OF 错误
默认。
- 以下 部分 旨在 内容丰富。
申请须知 用法
- 文件 实用程序只需要猜测许多文件类型,因为只有
详尽的测试可以确定某些类型。 例如,二进制数据
某些实现可能匹配可执行文件的初始段或 焦油 存档。
请注意,该表表明输出包含指定的字符串。 系统可能会添加
字符串之前或之后的文本。 对于可执行文件,例如,机器架构
并且可能包括有关文件如何链接编辑的各种事实。 另请注意,在
识别以开头的 shell 脚本文件的系统 “#!” 作为可执行文件,这些
可能被识别为可执行的二进制文件而不是 shell 脚本。
示例
判断参数是否为二进制可执行文件:
文件 -- “ $ 1” | grep的 -q ':.* 可执行文件' &&
的printf "%s is 可执行文件。\n$1"
基本原理
- -f 选项被省略,因为可以(并且应该)使用
参数 效用。
历史版本 文件 实用程序尝试识别以下类型的文件:
符号链接、目录、特殊字符、特殊块、套接字、 焦油 存档, 的cpio
存档,SCCS 存档,存档库,空的, 压缩 输出, 收拾 输出,二进制数据,
C 源代码、FORTRAN 源代码、汇编源代码、 恩罗夫/的troff/方程/表 资源 的troff 输出,外壳
脚本、C shell 脚本、英文文本、ASCII 文本、各种可执行文件、APL 工作区、
编译的 terminfo 条目和 CURSES 屏幕图像。 只有那些合理的类型
在 POSIX 中指定的或与 POSIX 实用程序直接相关的在
表。
历史系统使用了一个名为“魔法文件” /etc/魔法 帮助识别文件
类型。 因为它通常对用户和脚本能够识别特殊的有用
文件类型, -m 标志和用户创建的魔法文件的可移植格式已被
指定的。 不要求实施 文件 使用这种方法
识别文件,只允许用户添加他们自己的分类测试。
此外,在历史实践中增加了三个选项。 这 -d 旗帜已经
添加以允许用户使他们的测试遵循任何默认系统测试。 这 -i 旗
已添加以允许用户可移植地测试 shell 脚本中的常规文件。 这 -M
已添加标志以允许用户忽略任何默认系统测试。
POSIX.1-2008 对默认系统测试和系统之间交互的描述 -d,
-M及 -m options 没有明确指出有两种类型的``默认系统
测试''。 “位置敏感测试”通过查找特定的文件来确定文件类型
正在检查的文件中特定偏移量处的字符串或二进制值。 这些位置——
敏感测试是使用描述的魔法文件在历史系统中实现的
以上。 其中一些测试现在内置于 文件 实用程序本身在某些
实现,因此输出可以提供比魔术文件提供的更多细节。
例如,一个魔法文件可以很容易地识别一个 核心 大多数实现的文件,但是
无法命名删除内核的程序文件。 一个魔法文件可以产生这样的输出
如:
/home/dwc/核心: ELF 32 bit MSB 核心 文件 SPARC 版本 1
但是通过将测试构建到 文件 实用程序,您可以获得输出,例如:
/home/dwc/核心: ELF 32 bit MSB 核心 文件 SPARC 版本 1, 在 '测试程序'
这些扩展的内置测试仍被视为对位置敏感的默认系统
测试,即使它们没有被列出 /etc/魔法 或任何其他魔法文件。
上下文相关的默认系统测试始终内置于 文件 公用事业。 这些
测试在文本文件中寻找语言结构,试图识别 shell 脚本、C、
FORTRAN 和其他计算机语言源文件,甚至纯文本文件。 随着
添加 -m 和 -M 选项位置敏感和上下文之间的区别
敏感的默认系统测试变得很重要,因为测试的顺序很重要。
上下文相关的系统默认测试不应该在任何位置之前应用 -
敏感测试,即使 -d 选项在 a 之前指定 -m 选项或 -M 选项由于
上下文敏感的系统默认测试错误的可能性很高
在指定的位置敏感测试之前将任意文本文件识别为文本文件
这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 -m or -M 将应用选项以提供更准确的识别。
离开的意思 -M - 和 -m - 未指定允许这些的现有原型
以向后兼容的方式继续工作的选项。 (在那个实现中, -M
- 大致相当于 -d 在 POSIX.1-2008 中。)
历史 -c 选项被省略,因为对用户或便携式 shell 不是特别有用
脚本。 此外,合理执行 文件 实用程序会报告任何
每次读取魔法文件时都会发现错误。
魔法文件的历史格式与Rationale 中指定的相同
ISO POSIX-2:1993 标准 抵消, 折扣值及 消息 领域; 然而,它使用了
比当前规范文本指定的格式更不精确的类型字段。 新的
type 字段值是历史字段值的超集。
以下是一个示例魔术文件:
0 短 070707 的cpio 档案
0 短 0143561 字节交换 的cpio 档案
0 绳子 070707 ASCII码 的cpio 档案
0 长 0177555 很 旧 档案
0 短 0177545 老 档案
0 短 017437 老 包装 data
0 绳子 \037\036 袋装 data
0 绳子 \377\037 压实 data
0 绳子 \037\235 压缩 data
>2 字节&0x80 >0 阻止 压缩
>2 字节&0x1f x %d 位
0 绳子 \032\001 编译 术语信息 条目
0 短 0433 诅咒 屏幕 图片
0 短 0434 诅咒 屏幕 图片
0 绳子 系统 V 发布 1 档案
0 绳子 ! \n__.SYMDEF 存档 随机 图书馆
0 绳子 ! 存档
0 绳子 ARF_BEGARF 飞猪 清除 文本 档案
0 长 0x137A2950 可扩展 开放字体 二进制
0 长 0x137A2951 加密 可扩展性 开放字体 二进制
基本整数数据类型的使用旨在允许实现选择一个
该体系结构上的应用程序通常使用的字长。
该标准的早期版本允许使用八字节以外的字节实现
位,但这已在此版本中进行了修改。
未来 如何前往
无。
使用 onworks.net 服务在线使用 fileposix