我希望能够从命令行关闭屏幕。
我知道这里有键盘快捷键ctrl+ ⇧+,⏏但我想从Shell脚本或远程执行。
有办法吗?
我希望能够从命令行关闭屏幕。
我知道这里有键盘快捷键ctrl+ ⇧+,⏏但我想从Shell脚本或远程执行。
有办法吗?
Answers:
虽然我找不到能使本机进入休眠状态的命令,但您下载的某个应用程序可以执行此操作。从这里有两个选择。
将应用程序安装到Applications文件夹,然后从Terminal或SSH运行 open /Applications/Sleep\ Display.app
右键单击“下载”文件夹中的应用程序,然后单击“显示软件包内容”。导航到Contents/MacOS
并复制sleepdisplay文件。
导航至/usr/bin
(您可以使用⇧+ ⌘+ G快捷方式并在其中键入目录)并粘贴二进制文件。现在,您可以在sleepdisplay
终端中或通过SSH 键入命令,显示屏将立即进入睡眠状态。
希望这可以帮助!
这是一个简单的shell脚本。
#!/usr/bin/env bash
open /System/Library/Frameworks/ScreenSaver.framework/Versions/A/Resources/ScreenSaverEngine.app
这将运行/启动您在该计算机上为屏幕保护程序启用的任何设置。
以下脚本将完成此工作(在Leopard和更高版本中),但必须与一起运行sudo
:
前提是pmset
可以设置直到显示器进入睡眠状态的时间,但是问题是值0会关闭功能,而不是将延迟设置为零,而值1则是一整分钟的延迟。这里的魔力在于2 ^ 31的值似乎被存储为负零,这神奇地起到了“立即关闭显示”的作用。
在Tiger和更早的版本中,需要使用不同的幻数,因为内部使用了不同的位大小变量来存储延迟(以分钟为单位),直到显示关闭。
这种模仿行为control- - shift,eject并可以在的Macbook Air无需使用eject钥匙。
#!/bin/bash
original_setting=`/usr/bin/pmset -g | /usr/bin/awk '/displaysleep/ {print $2}'`
magic_number=2147483648
/usr/bin/pmset -a displaysleep $magic_number; sleep 1; /usr/bin/pmset -a displaysleep $original_setting
在macOS Sierra上
pmset displaysleepnow
caffeinate -u -t 1
pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29
结果<4为休眠显示一个小型节点HTTP服务器以远程设置Mac的屏幕状态:https://github.com/ycardon/switch-api
"echo $[$(pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29) - 4]"
此操作来获得0或非零的条件逻辑退出代码(使用此命令可设置为true / false“屏幕是否打开?”)。
真的希望这个答案不会太过人为。我最喜欢的睡眠,重新启动,关闭(最重要的是锁定)的方式是,Mac正在使用Alfred(应用启动器)。
它不需要任何脚本,脚本知识或使用终端,这非常出色。
但是,如果您特别想使用终端,那么这可能不是您的解决方案。
好吧,这是一个古老的问题,但是似乎在任何地方都没有针对这个问题的真正好的答案。
我已经使用了AppleScript,尽管它需要第三方,未维护且不可注册的应用程序-Extra Suites。可以在开发人员的旧网站上下载。
# Gets the current state of the upper left hot corner, then sets it to sleep display.
tell application "System Events"
tell expose preferences
set givenActivty to get the activity of the top left screen
set the properties of the top left screen corner to {activity:sleep display}
end tell
end tell
# Uses Mouse to Activate upper left hot corner. [Moving directly to {0, 0} does not work
tell application "Extra Suites"
ES move mouse {1, 1}
ES move mouse {0, 0}
end tell
# Restores state of upper left hot corner.
tell application "System Events"
tell expose preferences
delay 1
set the activity of the top left screen corner to givenActivty
end tell
end tell
# Gets rid of Extra Suites nag window.
tell application "Extra Suites"
quit
end tell
我也将其合并到Alfred Workflow中。
干得好 -
sudo su
pmset displaysleepnow
使用Alfred(可在AppStore免费获得)是一种很好的显示方式,只需编写以下文字即可:“ sleep”。没有比这更简单的了。
当然,阿尔弗雷德(Alfred)所能做的还远远不止这些,您还可以重新启动,注销,清空垃圾箱,锁定,关闭等等。