这是命令 pathchkposix,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
pathchk — 检查路径名
概要
路径 [-p] [-P] 路径名...
商品描述
- 路径 实用程序应检查一个或多个路径名是否有效(也就是说,它们可以
用于访问或创建文件而不会导致语法错误)和可移植性(即,
没有文件名截断结果)。 更广泛的便携性检查由 -p
和 -P 选项。
默认情况下, 路径 实用程序应检查每个组件的每个组件 路径名 基于操作数
在底层文件系统上。 应为每个诊断编写 路径名 操作数
说:
* 长于 {PATH_MAX} 个字节(见 路径名 请按需咨询 理念 在基本定义中
POSIX.1-2008 卷, )
* 在其包含目录中包含任何超过 {NAME_MAX} 个字节的组件
* 包含目录中不可搜索的任何组件
* 包含在其包含目录中无效的任何字节序列
未指定诊断消息的格式,但应指示错误
检测到和相应的 路径名 操作数。
如果一个或多个组件的一个或多个组件不应被视为错误 路径名 操作数不要
只要与缺失组件指定的路径名匹配的文件就存在
创建不违反上述任何检查。
配置
- 路径 实用程序应符合 POSIX.1-2008 的基本定义卷, 部分
12.2, 公用事业 句法 指南.
应支持以下选项:
-p 与其根据底层文件系统执行检查,不如写一个
每个诊断 路径名 操作数:
* 长于 {_POSIX_PATH_MAX} 个字节(见 最低限度 理念 在基地
POSIX.1-2008 的定义卷, )
* 包含任何长于 {_POSIX_NAME_MAX} 字节的组件
* 包含不在可移植文件名中的任何组件中的任何字符
字符集
-P 为每个写一个诊断 路径名 操作数:
* 包含一个组件,它的第一个字符是特点
* 是空的
操作数
应支持以下操作数:
路径名 要检查的路径名。
标准输入
不曾用过。
INPUT FILES
无。
环境 变数
以下环境变量会影响执行 路径:
朗 为未设置或未设置的国际化变量提供默认值
空值。 (参见 POSIX.1-2008 的基本定义卷, 部分 8.2,
国际化 变量 国际化变量的优先级
用于确定语言环境类别的值。)
LC_ALL 如果设置为非空字符串值,则覆盖所有其他字符串的值
国际化变量。
LC_CTYPE 确定用于解释文本数据字节序列的语言环境
作为字符(例如,单字节而不是多字节字符
论据)。
LC_消息
确定应该用于影响格式和内容的语言环境
写入标准错误的诊断消息。
路径 确定用于处理的消息目录的位置 LC_消息.
异步 新闻
默认。
标准输出
不曾用过。
斯特德
标准错误应仅用于诊断消息。
OUTPUT FILES
无。
EXTENDED 商品描述
无。
退出 状态
应返回以下退出值:
0全部 路径名 操作数通过了所有检查。
>0 发生错误。
后果 OF 错误
默认。
- 以下 部分 旨在 内容丰富。
申请须知 用法
- 测试 实用程序可用于确定给定的路径名是否命名现有文件;
然而,它没有给出任何指示路径名的任何组成部分
在 _POSIX_NO_TRUNC 功能无效的目录中被截断。 这
路径 实用程序不检查文件是否存在; 它执行检查以确定是否
路径名确实存在或可以在没有路径名组件截断的情况下创建。
- 无声无息 shell 中的选项(请参阅 集 特殊内置)可用于原子
创建一个文件。 与系统接口卷中的所有文件创建语义一样
POSIX.1-2008,它保证原子创建,但仍然依赖于应用程序达成一致
约定并在文件创建后合作使用文件。
为了验证路径名是否满足文件名可移植性的要求,应用程序
应该同时使用 -p 和 -P 选项在一起。
示例
验证导入的数据交换存档中的所有路径名是否合法且
在当前系统上明确:
# 本篇 例子 假设 这 没有 路径名 in 这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 档案
# 包含 字符。
人份 -f 档案 | 口渴 -e 's/[^[:alnum:]]/\\&/g' | 参数 路径 --
if [ $? -eq 0 ]
然后
人份 -r -f 档案
其他
回音 调查 问题 before 输入 文件。
出口 1
fi
验证当前目录层次结构中的所有文件都可以移动到任何系统
符合 POSIX.1-2008 的系统接口卷,也支持 人份
效用:
发现 . -执行 路径 -p -P {} +
if [ $? -eq 0 ]
然后
人份 -w -f ../档案 .
其他
回音 便携版 档案 不能 be 创建。
出口 1
fi
验证用户提供的路径名是否命名了可读文件,并且应用程序可以
创建一个扩展给定路径的文件而不会被截断,也不会覆盖任何
现有文件:
案件 $− in
*C*) 重置="";;
*) 重置=“设置” +C"
集 -C;;
ESAC
测试 -r “$路径” && 路径 “$path.out” &&
rm “$path.out” > “$path.out”
if [ $? -ne 0 ]; 然后
的printf "%s: %s 而不去 发现 or %s.输出 失败 \
创建 检查。\n" $0 “$path$path”
$重置 # 重设 这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 无声无息 选项 in 案件 a 陷阱
# on 退出 依靠 on 它。
出口 1
fi
$重置
处理 < “$路径” > “$path.out”
本示例中进行了以下假设:
1. 处理 表示应用程序使用的代码 $路径 一旦它是
证实 $路径.out 按预期工作。
2. 状态 无声无息 调用此代码时选项未知,应该是
退出时设置为调用此代码时所处的状态。 (这 重置 变量是
本例中用于恢复初始状态。)
3.注意用法:
rm “$path.out” > “$path.out”
一种。 这 路径 在这一点上,命令已经验证 $路径.out 是不是
被截断。
湾随着 无声无息 选项集,外壳验证 $路径.out 还没有
调用前存在 rm.
C。 如果 shell 创建成功 $路径.out, rm 删除它,以便
应用程序可以在 处理 步。
d. 如果 处理 step 希望文件在调用时已经存在,即:
rm “$path.out” > “$path.out”
应替换为:
> “$path.out”
验证文件不存在,但离开 $路径.out 到位
用于通过使用 处理.
基本原理
- 路径 实用程序是 ISO POSIX-2:1993 标准的新功能。 它,连同 集
-C(无声无息) 选项添加到 shell,替换 临时表, 有效名称及 创建信息图
早期提案中出现的实用程序。 所有这些实用程序都试图解决
几个常见问题:
* 验证路径名的有效性(对于“有效”的几种不同定义)
由用户提供、由应用程序生成或从外部源导入。
* 原子地创建一个文件。
* 执行各种字符串处理函数以生成临时文件名。
- 创建信息图 实用程序,包含在早期提案中,提供检查和原子创建
在该实用程序的单个调用中; 这些是正交问题,不需要分组
成一个单一的实用程序。 请注意, 无声无息 选项还提供了一种创建
进程同步锁; 因为它提供了一个原子 创建信息图,没有种族
在存在的测试和下一个创建之间(如果它不存在)。
有这样的功能 tmp南() 在 ISO C 标准中很重要的许多高级
语言。 然而,shell 编程语言具有内置的字符串操作
设施,使得构建临时文件名变得非常容易。 需要的名字
显然取决于应用程序,但通常的形式类似于:
$TMPDIR/应用程序_缩写$$。后缀
如果可能存在对给定后缀的争用,一个简单的 shell or
而 循环可以与外壳一起使用 无声无息 选择创建一个没有风险的文件
冲突,只要应用程序尝试使用相同的文件名空间
在文件创建后合作使用文件。
出于历史目的, -p 不检查使用性格作为
路径名组件中的第一个字符,或用于空的 路径名 操作数。
未来 如何前往
无。
使用 onworks.net 服务在线使用 pathchkposix