「：
豫言终端是一个以中文为一等公民的友好命令终端。
它可以用中文名称、无调全拼、拼音首字母或唯一拼音前缀启动程序。
：」

寻观「标准库」之书。
寻观「标准库」之「数据结构」之「整数操作」之书。
寻观「标准库」之「数据结构」之「字符串术」之书。
寻观「标准库」之「数据结构」之「多态列」之书。
寻观「标准库」之「操作系统」之「子进程」之书。
寻观「标准库」之「操作系统」之「命令行参数」之书。
寻观「标准库」之「操作系统」之「文件系统」之书。
寻观「标准库」之「操作系统」之「环境变量」之书。
寻观「标准库」之「操作系统」之「进程」之书。
寻观「标准库」之「输入输出」之「笔」之书。
寻观「豫言终端」之「命令解析」之书。
寻观「豫言终端」之「程序解析」之书。
寻观「豫言终端」之「交互编辑」之书。

「用法」者『豫言终端

用法：
  yysh
  yysh -c 「命令行」

命令名可以是程序的原名、无调全拼、拼音首字母或唯一拼音前缀。
当前目录优先于 PATH。有多个拼音匹配时会列出候选，不会猜测。
所有含非 ASCII 字符的本地文件及目录均可作模糊候选；纯 ASCII 名称不显示。
Tab 显示或切换候选，Ctrl-E 或右方向键填入候选；Enter 始终执行当前命令。
空格后按 Tab 会列出当前目录候选；所有命令的文件与目录补全规则相同。
直接执行目录名等同于切换目录；本地可执行文件可直接按名称运行，无需写 ./。

内建命令：
  切换【目录】    也可写 cd 或 qiehuan
  目录            也可写 pwd 或 mulu
  帮助            也可写 help 或 bangzhu
  清屏            也可写 clear 或 qingping
  退出【状态】    也可写 exit 或 tuichu
』也。

「命令名等于三者之一」乃化「字符串」而化「字符串」而化「字符串」而化「字符串」而「爻」也。
「命令名等于三者之一」者会「命令名」而会「甲」而会「乙」而会「丙」而
    「或者」于（「字符串相等吗」于「命令名」于「甲」）于
        （「或者」于（「字符串相等吗」于「命令名」于「乙」）于（「字符串相等吗」于「命令名」于「丙」））
也。

「取主目录」乃化「有」而「字符串」也。
「取主目录」者会「无」而
    虑「结果」者「获取环境变量」于『HOME』而
    若「结果」中「零」则「结果」中「一」否则『.』
也。

「展开主目录」乃化「字符串」而「字符串」也。
「展开主目录」者会「目录文字」而
    若「字符串相等吗」于「目录文字」于『~』则「取主目录」于「元」否则
    若「串开头是它吗」于『~/』于「目录文字」
    则（「取主目录」于「元」）附（「去除串开头」于『~』于「目录文字」）
    否则「目录文字」
也。

「执行切换」乃化（「列」于「字符串」）而「整数」也。
「执行切换」者会「参数们」而
    鉴「参数们」而
        有「罄」则「执行切换」于（（「列」【（「取主目录」于「元」）】））
        或有（（「列」【「目录文字」】））则（
            虑「实际路径」者「展开主目录」于「目录文字」而
            虑「结果」者「切换当前路径」于「实际路径」而
            若「等于」于（「结果」中「零」）于「零」
            则「零」
            否则（「标准错误打印行」于（『无法切换到「』附「实际路径」附『」：』附（「结果」中「一」））；「一」））
        或有「其他」则（「标准错误打印行」于『切换：只能接受一个目录』；「二」）
也。

「执行退出」乃化（「列」于「字符串」）而「整数」也。
「执行退出」者会「参数们」而
    鉴「参数们」而
        有「罄」则（「退出」于「零」；「零」）
        或有（（「列」【「状态文字」】））则（虑「状态」者「理解整数」于「状态文字」而（「退出」于「状态」；「状态」））
        或有「其他」则（「标准错误打印行」于『退出：最多接受一个状态码』；「二」）
也。

「执行外部程序」乃化「字符串」而化（「列」于「字符串」）而「整数」也。
「执行外部程序」者会「命令名」而会「参数们」而
    虑「解析结果」者「解析程序」于「命令名」而
    若「等于」于（「解析结果」中「零」）于「零」
    则「运行并继承标准流」于（「解析结果」中「一」）于「参数们」
    否则（「标准错误打印行」于（「解析结果」中「二」）；「一二七」）
也。

「无参数目录命令」乃化「字符串」而化（「列」于「字符串」）而「爻」也。
「无参数目录命令」者会「命令名」而会「参数们」而
    鉴「参数们」而
        有「罄」则（
            虑「实际路径」者「展开主目录」于「命令名」而
            若「路径存在」于「实际路径」则「路径是文件夹」于「实际路径」否则「阴」）
        或有「其他」则「阴」
也。

「执行参数列」乃化（「列」于「字符串」）而「整数」也。
「执行参数列」者会「参数列」而
    鉴「参数列」而
        有「罄」则「零」
        或有（「缀」于「命令名」于「参数们」）则
            若「命令名等于三者之一」于「命令名」于『切换』于『cd』于『qiehuan』则「执行切换」于「参数们」否则
            若「命令名等于三者之一」于「命令名」于『目录』于『pwd』于『mulu』则（「打印行」于（「获取当前路径」于「元」）；「零」）否则
            若「命令名等于三者之一」于「命令名」于『帮助』于『help』于『bangzhu』则（「打印行」于「用法」；「零」）否则
            若「命令名等于三者之一」于「命令名」于『清屏』于『clear』于『qingping』则（「打印」于（（「字节转字符串」于「二七」）附『[2J』附（「字节转字符串」于「二七」）附『[H』）；「零」）否则
            若「命令名等于三者之一」于「命令名」于『退出』于『exit』于『tuichu』则「执行退出」于「参数们」
            否则若「无参数目录命令」于「命令名」于「参数们」则「执行切换」于（（「列」【「命令名」】））
            否则「执行外部程序」于「命令名」于「参数们」
也。

「执行命令行」乃化「字符串」而「整数」也。
「执行命令行」者会「命令行」而
    虑「解析结果」者「解析命令行」于「命令行」而
    若「解析结果」中「零」
    则「执行参数列」于（「解析结果」中「一」）
    否则（「标准错误打印行」于（『命令行错误：』附（「解析结果」中「二」））；「二」）
也。

「生成提示」乃化「整数」而「字符串」也。
「生成提示」者会「上次状态」而
    若「标准输出是终端」于「元」
    则
        虑「逃逸」者「字节转字符串」于「二七」而
        虑「状态前缀」者若「等于」于「上次状态」于「零」则『』否则（「逃逸」附『[31m』附（「整数表示」于「上次状态」）附『 』）而
        「状态前缀」附「逃逸」附『[36m』附（「获取当前路径」于「元」）附「逃逸」附『[0m ❯ 』
    否则（「获取当前路径」于「元」）附『 > 』
也。

「交互循环」乃化「整数」而「有」也。
「交互循环」者会「上次状态」而
    若「且」于（「标准输入是终端」于「元」）于（「标准输出是终端」于「元」）
    则
        虑「候选索引」者「枚举可执行程序」于「元」而
        虑「读取结果」者「读取交互命令行」于（「生成提示」于「上次状态」）于「候选索引」而
        若「等于」于（「读取结果」中「零」）于「零」
        则「交互循环」于（「执行命令行」于（「读取结果」中「一」））
        否则若「等于」于（「读取结果」中「零」）于「二」
        则「交互循环」于「一三零」
        否则「退出」于「上次状态」
    否则
        虑「读取结果」者「尝试读取标准输入行」于「元」而
        若「读取结果」中「零」
        则「交互循环」于（「执行命令行」于（「读取结果」中「一」））
        否则「退出」于「上次状态」
也。

鉴「获取参数」于「元」而
    有「罄」则「交互循环」于「零」
    或有（（「列」【『-c』，「命令行」】））则「退出」于（「执行命令行」于「命令行」）
    或有（（「列」【『--help』】））则「打印行」于「用法」
    或有「其他」则（「标准错误打印行」于『用法：yysh 【-c 「命令行」】』；「退出」于「二」）。
