sea*_*ull 7 terminal international macos
在 Windows 中,命令行中的字符串解析对于 Batch 和 PowerShell 来说都是一个错误。基本的命令行工具(如 )以字符串形式fsutil返回dcdiag其输出,这些字符串已国际化为操作系统安装的语言,如果不考虑对每种语言的措辞和格式选择的支持,几乎不可能以一刀切的方式编写脚本。
只要有可能,我都会在 PowerShell 中编写(返回对象而不是字符串)并使用 WMI 返回非本地化枚举器,我通过查找表自行翻译;然而,总会有一些工具是设备上收集所需信息的唯一手段。
我现在正在为 macOS 编写一个调用(在本例中)该csrutil工具的脚本。
与许多 *nix 实用程序一样,它的输出是字符串格式。运行它会产生以下输出:
System Integrity Protection status: unknown (Custom Configuration).
Configuration:
Apple Internal: disabled
Kext Signing: disabled
Filesystem Protections: disabled
Debugging Restrictions: disabled
DTrace Restrictions: disabled
NVRAM Protections: disabled
BaseSystem Verification: enabled
This is an unsupported configuration, likely to break in the future and leave your machine in an unknown state.
Run Code Online (Sandbox Code Playgroud)
不知怎的,互联网不包含我能找到的关于这个主题的任何知识,所以:
这不是关于 Bash 或 ZSH 的问题,因为我知道它们总是英语,但 macOS 因创建不兼容的 Apple 特定 POSIX 工具分支而臭名昭著;此外,如上所述,有许多 Apple 开发的命令行工具旨在管理 macOS 系统。我是否应该假设这些内容至少已翻译成德语并购买安装了德语的 macOS 设备?或者一切都是英文的?
总的来说,我想问的是,我应该从苹果伪造的命令行工具中获得多少国际化程度的期望。
目前,大多数(非 .app)系统管理工具只有英文版。这有利于解析输出。
例如,您可以尝试检查这样的二进制文件:
strings /usr/bin/csrutil | less
Run Code Online (Sandbox Code Playgroud)
在这种情况下,二进制文件中不存在任何翻译
您可能会考虑设置$LANG或$LC_MESSAGES区域设置(仅在脚本中使用本地env设置),例如
env LC_MESSAGES=C /usr/bin/csrutil
Run Code Online (Sandbox Code Playgroud)
envcsrutil将在环境变量设置为“C”的情况下启动LC_MESSAGES,这是一个特殊设置,翻译为“就好像该程序尚未本地化一样”。
这将导致此会话输出英语,但一般不会对您的系统产生影响。
| 归档时间: |
|
| 查看次数: |
1205 次 |
| 最近记录: |