我正在编写一个 shell 脚本,旨在提示用户输入文件,并且由于我不希望脚本的最终用户精通技术,而不是启动命令行进行交互,所以我希望 shell 是能够以标准方式(例如使用 xdg 或类似方式)调用系统文件管理器,该管理器将在类似“打开文件...”的对话框中打开它,并在打开文件或目录后输出完整或相对路径。已选择。有没有办法在 Linux 或 MacOS 或两者中执行此操作?
我正在编写一个 shell 脚本,旨在提示用户输入文件,并且由于我不希望脚本的最终用户精通技术,而不是启动命令行进行交互,所以我希望 shell 是能够以标准方式(例如使用 xdg 或类似方式)调用系统文件管理器,该管理器将在类似“打开文件...”的对话框中打开它,并在打开文件或目录后输出完整或相对路径。已选择。有没有办法在 Linux 或 MacOS 或两者中执行此操作?
您可以在 macOS 上通过使用
osascript
命令运行 AppleScript 的choose file
命令来执行此操作。像这样的事情:请注意,如果用户取消选择对话框(或出现其他问题),
osascript
将向 stderr 打印一条错误消息(以及以错误状态退出,这是if
上面的测试检查的内容),因此您可能需要重定向错误输出来抑制或捕获这一点。此外,macOS 文件名和路径通常包含空格,因此请务必在所有变量引用两边加上双引号(例如,
ls "$filepath"
而不仅仅是ls $filepath
)。一般来说,这是良好的脚本卫生,但在这里尤其重要。shellcheck.net擅长发现常见错误,例如未加引号的变量引用,因此我建议运行脚本来查看它的建议。有关该
choose file
命令的更多信息,请参阅Apple 的 Mac 自动化脚本指南:提示输入文件或文件夹。