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
。