Macos 有没有办法知道shell/terminal命令/应用程序的选项?

Macos 有没有办法知道shell/terminal命令/应用程序的选项?,macos,shell,configuration,terminal,customization,Macos,Shell,Configuration,Terminal,Customization,我想知道的是,是否有任何方法可以获取命令或应用程序使用的选项(没有手动输入。例如: 对于应用程序屏幕保护引擎,位于: /System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ 有-background选项,允许我将当前屏幕保护设置为桌面背景 ./ScreenSaverEngine -background 现在我想用这个应用程序做其他事情,或者至少我想知道是否

我想知道的是,是否有任何方法可以获取命令或应用程序使用的选项(没有手动输入。例如:

对于应用程序屏幕保护引擎,位于:

/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/
有-background选项,允许我将当前屏幕保护设置为桌面背景

./ScreenSaverEngine -background
现在我想用这个应用程序做其他事情,或者至少我想知道是否有可能做其他事情。所以我想知道ScreenSaverEngine的所有其他选项。我想可能有些选项是在应用程序中编码的,所以我尝试了类似的方法

strings ScreenSaverEngine | grep "-"
但是没有结果。ScreenSaverEngine没有手册,所以

man ScreenSaverEngine
不会有帮助的。我很乐意接受任何建议:-)


(顺便说一句,我使用的是MAC OS X)。

对于任何任意应用程序,这都是不可能的,因为传递到程序
main()
函数(在C中)的
argv
参数可以按程序希望的任何方式存储、解析和访问。它甚至可以将参数写入一个文件,然后在需要知道使用什么选项时读取该文件

但是,看起来命令行选项已经有文档记录了。 发件人:

ScreenSaverEngine支持一些特殊的命令行标志来帮助 在调试中:

-背景--所有屏幕保护程序窗口显示在所有其他窗口的后面(在查找器图标后面,但在桌面图像前面)。这个 密码和gamma淡入淡出功能被禁用。它不会在任何时候退出 鼠标或键盘活动

-调试——类似于后台,但在桌面上移动鼠标会导致其退出。在中运行屏幕保护引擎时非常方便 GDB。(正在尝试在此模式下绕过我的计算机,而不会导致 退出让我想起玩游戏(小时候不要碰地板)

-模块——加载指定的模块,而不是用户默认指定的模块。接受与~/Library/Preferences/ByHost/com.apple.screensaver.*.plist中moduleName节点相同的值 例如,慌乱、抽象或光谱。它似乎不接受 但是,指向.saver、.slideSaver或.qtz文件的完整路径或URL,因此 有必要将所需的模块放置在一个典型的 屏幕保护程序文件夹并引用它,但不带文件扩展名

-window——另一个命令在窗口中运行屏幕保护程序

这可以与-background结合使用。示例:-窗口-背景


下面是一个脚本,我想放在我的路径中:

#!/bin/bash

usage() {
    echo "usage: $0 [options]"
    echo "  -background  Screen saver windows appear behind all other windows"
    echo "  -debug       Like -background, except mouse movement over the"
    echo "                 desktop causes it to exit"
    echo "  -module      Loads the specified module by name"
}

engine=/System/Library/Frameworks/ScreenSaver.framework/Resources\
/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine

while getopts "hbackgrounddebugmodule" opt; do
    case "${opt}" in
        h)
            usage
            exit 0
            ;;
    esac
done

$engine "$@"

不确定结果的准确性。但这是合乎逻辑的

我继续回答这个问题,因为苹果打破了传统 -背景旗上有高塞拉。截至High Sierra 10.13.4,仍然是一个问题

这是从我的mac上运行的Sierra 10.12.16。可执行文件是相同的,但HighSierra的文件位置不同

所以要让它工作起来。ScreenSaverEngine是一个可执行文件

Strings是一个命令,它可以聚集任何看起来像英语的东西。 我需要对文件进行cat以获得字符串输出,因为默认情况下,它读取为二进制文件,并且不会给出任何结果

cat /System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine | strings
我手动查看了这些文件,但您可以添加此项以查看我最终注意到的文件:

/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine | strings | grep /System
然后我注意到程序调用了这个版本/A/屏幕保护程序

cat /System/Library/Frameworks/ScreenSaver.framework/Versions/A/ScreenSaver | strings
我手动浏览了一遍,发现了一个参数部分

回报: 论据

  • -伊德利切克
  • -角落检查
  • -调试
  • -窗口
  • ss加窗模式=1
  • -努姆文多斯
  • -背景
  • -前景
  • -罗金文杜
  • -缅因州
  • -模块
  • -锁延迟
  • 浮动价值
  • -黑色的
  • -无需提前检查
  • 无法理解参数“@”
  • 后台模式已禁用,因为已禁用全屏应用程序 检测到

不知道为什么没有官方文档。

-h
-help
-help
-?
是列出应用程序提供的帮助信息的常用开关。不,我放弃了尝试这些开关,因为任何不支持的选项都会启动屏幕保护程序:-/你看过苹果开发区的文档了吗-搜索这里为我找到了4个有用的文档。我找不到ScreenSaverEngine的参考资料,不过这个网站很棒->我将开始编写我的第一个Mac应用程序:-)。谢谢Jonathan。只需要一点跟进:不需要完整路径,一些
打开-a ScreenSaverEngine.app--args-background
在我的机器上运行良好。。要停止它,请使用类似以下内容:
pkill-x ScreenSaverEngine