在命令行中调整Mac的系统音量

Lobsters Hottest 工具

摘要

一篇博文介绍了如何使用AppleScript在命令行中调整Mac的系统音量,并提供了一个自定义的bash脚本以便更轻松地控制。

<p><a href="https://lobste.rs/s/vda4gq/adjusting_mac_s_system_volume_on_command">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/05/23 12:45

# 在命令行中调整 Mac 的系统音量 来源:https://excessivelyadequate.com/posts/vol.html 由于我大概已经 270 岁了,习惯在*电脑*上听音乐(还是 MP3 文件!),而不是用智能音箱,有时我想调整 Mac 的系统音量,却不想从沙发上起身。肯定有不少 iOS 应用能实现这一点,附带着各种追踪和应用内购买——但再次强调,我几乎 270 岁了,所以更倾向于通过 SSH (https://www.termius.com/ios) 连接到我的电脑,然后运行一条命令。 感谢AppleScript (https://en.wikipedia.org/wiki/AppleScript),实现这一功能的技巧被控制在最小范围内:记住,内置的`osascript`工具执行 AppleScript 代码,运行... `` osascript -e "set volume output volume 100" `` ...会将音量调到最大——数字被解释为百分比。你也可以将音量调高或调低若干百分点: `` osascript -e "set volume output volume (output volume of (get volume settings) - 42)" `` ...或者(取消)静音电脑: `` osascript -e "set volume with output muted" osascript -e "set volume without output muted" `` 但如你所见,这些命令有点不直观,而且*非常*笨拙。为了在“懒人沙发土豆”的用例中提供更好的用户体验,我写了几行 bash 脚本,可以更少敲键地访问这些音量控制: `` #!/bin/bash USAGE="用法:vol [-h | --help | 数值_从_0_到_100 | -递减 | +递增]" # 如果参数不是预期的值,显示使用说明 if [ "$1" == "-h" ] || [ "$1" == "--help" ] || ! [[ "$1" =~ ^$|^[+-]?[0-9]+$ ]]; then echo "$USAGE" exit 1 fi # 获取旧音量 OLD_VOLUME="$(osascript -e "output volume of (get volume settings)")" if [ -z "$1" ]; then echo "$OLD_VOLUME %" else # 默认情况:将音量设置为指定值 NEW_VOLUME="$1" # 或者:递减或递增? if [[ "$1" == -* ]] || [[ "$1" == +* ]]; then NEW_VOLUME=$(($OLD_VOLUME + $1)) fi # 限制在 [0, 100] 范围内 if [ "$NEW_VOLUME" -lt 0 ] ; then NEW_VOLUME=0 fi if [ "$NEW_VOLUME" -gt 100 ] ; then NEW_VOLUME=100 fi # 给出反馈 MUTED="" if [ "$NEW_VOLUME" -eq 0 ]; then MUTED="(已静音)" fi echo "$OLD_VOLUME % -> $NEW_VOLUME % $MUTED" # 设置 osascript -e "set volume output volume $NEW_VOLUME" fi `` 你也可以在GitHub (https://github.com/doersino/vol)上找到这个脚本。 将这些代码行粘贴到一个名为`vol`的文件中,把它放在`$PATH`路径下的某个目录里,并确保该文件是可执行的:例如,运行`chmod u+x vol`。 (一个常见的目录选择是`~/local/bin`——你可以通过将`export PATH="$HOME/local/bin:$PATH`添加到你的`.bashrc`和/或`.bash_profile` (https://linuxize.com/post/bashrc-vs-bash-profile/) 来将其纳入`$PATH`——但我倾向于将这样的小工具作为函数维护在我的`.bashrc` (https://github.com/doersino/dotfiles/blob/master/.bashrc) 中。萝卜青菜,各有所爱。) 以下是使用由此创建的`vol`命令的方法: `` $ vol --help 用法:vol [-h | --help | 数值_从_0_到_100 | -递减 | +递增] `` `` $ vol 0 26% -> 0%(已静音) `` 但等等,还有更多! ## 从命令行控制你的音乐播放器https://excessivelyadequate.com/posts/vol.html#controlling-your-music-player-from-the-command-line 我使用的第一个 Apple 产品是 iTunes(在 Windows Vista 上!),我一直用它直到它更名为*Music*。然后我切换到了Swinsian (https://swinsian.com/),一个原生、快速、极简但功能齐全的音乐播放器。所有这三个应用——iTunes、Music 和 Swinsian——都支持一组共享的 AppleScript 钩子,下面的脚本就利用了这一特性: `` # 选择可用的播放器,优先选择 Swinsian,然后是 Music,最后是 iTunes PLAYER="iTunes" if [ -d "/System/Applications/Music.app" ]; then PLAYER="Music" fi if [ -d "/Applications/Swinsian.app" ]; then PLAYER="Swinsian" fi # 执行操作 if [ -z "$1" ]; then osascript -e "tell application \"$PLAYER\" to playpause" elif [ "$1" = "?" ]; then osascript -e "tell application \"$PLAYER\" to get name of current track" printf "\033[90mby \033[0m" osascript -e "tell application \"$PLAYER\" to get artist of current track" printf "\033[90mon \033[0m" osascript -e "tell application \"$PLAYER\" to get album of current track" elif [ "$1" = "prev" ]; then osascript -e "tell application \"$PLAYER\" to play previous track" elif [ "$1" = "next" ]; then osascript -e "tell application \"$PLAYER\" to play next track" else osascript -e "tell application \"$PLAYER\" to $1" fi `` 如上所述,将这段代码粘贴到一个可执行文件中——我的文件名叫`it`,是*iTunes*的缩写。完成后,运行`it`命令不带任何参数将暂停或恢复播放,加上`?`会打印当前播放曲目的信息,而`prev`和`next`则如你预期般工作。其他任何参数都会被直接传递给播放器,从而可以进行临时查询。(首次运行时会弹出一个窗口,要求你同意你的音乐播放器通过 AppleScript 进行控制。)

相似文章

SOUND

Product Hunt

SOUND 是一款 macOS 应用程序,提供从菜单栏进行每个应用程序的音频均衡、音量控制和扬声器选择,解决了内置应用级别音频设置缺失的问题。

SoundPipe

Product Hunt

SoundPipe 是一款适用于 Mac 的调音台应用程序。

LocalClicky

Product Hunt

LocalClicky 是一款让你用语音控制 Mac 的工具,所有处理都在本地设备上完成。

Sound Warden

Product Hunt

Sound Warden 是一款 macOS 实用工具,可自动将每个应用的音频路由到所需的音频设备。

macOS defaults 命令演示列表

Lobsters Hottest

一份精选的 macOS `defaults` 命令列表,包含交互式演示,使用户能够通过命令行自定义系统和应用程序偏好设置。