/** * 在Linux系统中,文件路径遵循一定的规则。路径可以分为绝对路径和相对路径。以下是一些常见的规则和示例: * * 绝对路径: 从根目录(/)开始的路径。 * 示例:/home/user/documents/file.txt * 相对路径: 相对于当前工作目录的路径。 * 示例:如果当前工作目录是/home/user,则相对路径documents/file.txt将指向/home/user/documents/file.txt。 * 目录分隔符: 目录之间的分隔符是斜杠(/)。 * 示例:/home/user/documents * 特殊目录: * .:表示当前目录。 * 示例:./file.txt * ..:表示父目录。 * 示例:../documents/file.txt * 家目录: 用户的主目录通常用波浪号(~)表示。 * 示例:~/documents/file.txt * 环境变量: 使用环境变量时,可以通过$符号引用。 * 示例:$HOME/documents/file.txt * 空格处理: 如果路径中包含空格或特殊字符,可以使用引号将整个路径括起来,以避免解释器误解。 * 示例:"/path/with spaces/file.txt" * 文件名区分大小写: Linux系统是区分大小写的,因此File.txt和file.txt是不同的文件。 * 这些规则构成了Linux文件路径的基本元素。了解这些规则对于在Linux系统中导航和操作文件系统非常重要。 */ import type { FNode } from '../interface'; declare class ParsePath { dot: string; dDots: string; slash: string; parentStartStr: string; currentStartStr: string; absolutPath: (path: string) => boolean; relativePath: (path: string) => boolean; home: (path: string) => boolean; parent: (path: string) => boolean; current: (path: string) => boolean; rootStart: (path: string) => boolean; parentStart: (path: string) => boolean; currentStart: (path: string) => boolean; split: (path: string) => string[]; /** * 判断 str 是否是名字 * @param str */ notName: (str: string) => boolean; /** * 对路径做简化处理,目的是找到最短路径(最短是指路径字符最短,并不是真实寻找路径的最短) * 记录每一个节点的深度,其中 context 节点深度为 0,向上寻找的点深度 -1,向下寻找的点深度 +1 * 如果出现了两个点的深度一致,则这两点需要合并。如果这两点之间还存在着其他点,那么这些点都会被省略。 * 合并的规则是:(为了描述方便,前一个点称为 A,后一个点称为 B) * 除了保留字符 . 以及 .. 以及 / ,其他的字符都是名字(将来保留字符应该会增加) * 1. B 点如果有名字,A 点为 .. 则不能覆盖,A 为其他情况都可以覆盖; * 2. B 点如果没有名字而 A 点有,则 保留 A 点的名字覆盖 B 点的; * 3. 如果都没有名字,则保留 B 点字符覆盖 A 点的字符。 * @param path * @param context */ simplifyPath: (path: string, context?: FNode) => { pathArr: string[]; newContext: FNode; }; } declare const _default: ParsePath; export default _default;