使用终端命令在特定时间将 Mac 上的音量设置为特定值

使用终端命令在特定时间将 Mac 上的音量设置为特定值

我想在 Mac 上安排增加音量,但无法让它正常工作。我现在在终端中执行的是这个命令:

echo 'osascript -e "set volume output volume 10"' | at 17:03

它没有任何效果,但有趣的是,我可以不使用“at”部分来使用它,但在这种情况下,我当然无法安排它。使用“sudo”也无济于事。

我的系统是“MacOS Big Sur 11.7.4”

提前致谢。

答案1

如果您想在特定时间运行它,crontab 可以很好地发挥作用。

在crontab中设置的方法有两种。

  1. 如果你了解 vi,请输入

    crontab -e
    

    插入一行或多行

    0 21 * * * /usr/bin/osascript -e  set volume output volume 0" > /dev/null 2>&1
    
    0 8 * * * /usr/bin/osascript -e  set volume output volume 100" > /dev/null 2>&1
    

    保存后就大功告成了。晚上 9 点关闭音量,早上 8 点打开。

  2. 替代方法:

    如果你已经有了 crontab 类型

    crontab -l > crontab.txt
    

    编辑 crontab.txt 并添加你想要的内容

    然后运行crontab crontab.txt进行安装。

    如果你还没有 crontab,第一次执行crontab crontab.txt

    安装它。

    最后,按顺序排列“字段”

    minute        0-59
    hour          0-23
    day of month  1-31
    month         1-12 
    day of week   0-6
    command and args
    0 is Sunday. 
    

man -acrontab 了解更多

答案2

我同意 LaunchAgent 的想法。这是一项古怪的技术,但一旦你学会了它,它就会变得强大而灵活。

不过,您不必真正编写脚本。LaunchAgents 可以有多个参数。

这会降低我的音量。Mac 首次加载时会静音( ),晚上 9:30 时静音——比我公寓楼的“安静时间”早半小时。

将其放入您的$HOME/Library/LaunchAgents/文件夹中,命名com.example.scheduled.mute.plist,如果您想重命名,则必须同时更改密钥文件名。标签必须是文件名,减去 .plist 扩展名。这样就比较挑剔了……

此外,这仅在您登录后(或任何人的主文件夹)才会执行,因为这$HOME/Library/LaunchAgents是您将登录时运行的 LaunchAgents 放在那里。/Library/LaunchAgents将是系统范围的,但我从未尝试以 root 身份运行 AppleScript。

此外,第一次运行它时,您可能会被提示“允许终端访问”或类似内容,并且必须进入系统偏好设置并允许它。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.example.scheduled.mute</string>
    <key>ProgramArguments</key>
    <array>
        <string>osascript</string>
        <string>-e</string>
        <string>set volume output volume 0</string>
    </array>
  <key>StartCalendarInterval</key>
  <dict>
    <key>Hour</key>
    <integer>19</integer>
    <key>Minute</key>
    <integer>30</integer>
  </dict>
    <key>RunAtLoad</key>
    <true/>
</dict>

答案3

如果你想在 macOS 上做这样的事情,你应该使用 launchd(查看启动 plist)。

echo是一个内置命令,所以我不确定您是否可以将其视为守护进程。您可能需要做的是编写一个简单的脚本,set_volume.sh其中包含:

echo 'osascript -e "set volume output volume 10"'

然后使其成为set_volume.sh可执行文件并将其视为启动守护程序。

相关内容