Mac中一些有用的冷门命令
本文最后更新于:2022年9月5日 早上
Mac中一些有用的冷门命令
苹果系统自带的设置可以调整许多设置,但不是全部。有些设置隐藏在“百度区”中,只有在受其困扰遂上网搜索时才会发现。本文收集了一些我自己用到过的指令并解释了其用法,希望能对大家有所帮助。打开Terminal,输入本文提到的命令,探索新大陆。
不要随便在命令行中输入你不了解的指令,正如不要随便安装你不了解的软件。它们可能会修改系统文件对你的使用体验造成不可逆的影响,也可能在系统中你不知道的位置留下一点足迹(俗称“拉屎”),日积月累磁盘空间就被蚕食掉了。本文提到的指令都配套了与之对应的解除此设置的指令,如果你不喜欢某设置可以改回去,不会对你的系统造成影响。
1.日常
1.1.解决软件打不开
1 |
|
系统会自动为一些文件打上“备份”的属性标签,包括来自网络的文件以及自己写的脚本等。被打上此标签的可执行程序是不允许执行的。例如,如果你写了一个脚本就像在Windows和Linux中常做的那样,无论是执行需要何种权限的命令,也无论脚本类型是.sh
,.command
,.bash
或者是根本没有拓展名,你的脚本是根本不可能双击执行的,一定会显示权限不够。
这条语句可以去除这个“备份”标签,解除这个障碍(当然你得手动给你的脚本+x
的权限,这在任何系统中都一样)。这不会对你正常使用文件产生任何影响。
2022.4.16更新,command脚本如果在第一行指定了
#!/bin/zsh
那么给执行权限就可以执行,就不需要删除com.apple.quarantine
属性了。否则就需要那样操作才能执行脚本。
如果破解软件由于没有签名无法启动,可以通过手动强制本地签名的方式为其签名。
1.2.解决conda环境自动激活
1 |
|
有时我们不希望所有的环境都混在一起,但是自从安装了conda,每次打开命令行都会自动激活base环境。可以通过以上语句控制base环境是否自动开启。
1.3.控制Dock栏自动隐藏的动画速度
1 |
|
苹果默认的动画很丝滑,但不是所有人都愿意看过渡动画。有些人就是喜欢“来也匆匆去也匆匆”的系统,那么可以使用以上指令修改系统关闭或开启此动画。也可以尝试修改其中的值来调整到合适的速度。
注意&&
用来连接先后执行的两条指令,在此设置中killall Dock
必不可少,只有Dock自动重启后修改的设置才会生效。
1.4.修改启动台图标数量
1 |
|
启动台图标很大,有些人安装了很多软件以至于想要使用时不好找(当然也可以用“聚焦”来快速搜索,但是谁能记住所有软件的名字呢)。使用上述指令可以调整启动台默认展示图标的列数、行数。只有Dock自动重启后修改的设置才会生效。
注意行列数改多不会让图标间隔变小,只会让图标变小。苹果的图标全部是按照像素点点对点制作,缩放后可能看着有点模糊。默认的数值是5行7列,我实际体验下来还是默认的最好用。
1.5.在Dock栏上添加空白分隔
1 |
|
Dock栏上有时软件会很多,看起来眼花缭乱不方便找软件,此时可以使用上面的指令为Dock栏添加几个空白,可以随意将它们拖到合适的地方。如果不需要这空白了,只要像移除Dock栏上的其他图标一样拖出去即可删除。本质上此指令是修改Dock栏配置文件,添加一个不指向任何东西的空白图标。
注意Dock栏中的短竖线左侧为软件区域,右侧为文件及文件夹区域,左右两侧的空白不互通,对应的两条指令也不同。
1.6.查看系统唤醒
1 |
|
一般来说苹果电脑关盖就会进入睡眠状态,立即将所有内存数据写入磁盘,几个小时后断开除内存外其他所有硬件的电源。这种睡眠方式理论上是非常省电的,但是系统有可能会被一些情况唤醒,甚至是频繁唤醒,导致电量快速消耗。使用此指令可以检查电脑被什么进程唤醒了,如果是系统进程可以考虑是否要关闭,如果是第三方软件可以考虑是否要卸载(本人有强迫症对流氓软件零容忍)。
1.7.设置电脑名称
1 |
|
一般来说命令行会显示你在系统偏好设置“共享”中设置的电脑名,但是也有些特殊情况,比如路由器DHCP服务突然挂了,它会给电脑分配一个169.254网段的地址,电脑此时就会自动改名为“bongu”,网络恢复后不会恢复,更改共享中的电脑名也不会恢复。不影响什么,但是使用命令行时看着心里不舒服。此时可以使用这条指令改名。
1.8.显示隐藏文件
1 |
|
一般来说苹果电脑会自动隐藏掉隐藏文件
,因为那些配置文件和软件运行库文件夹不是普通用户需要操心的,隐藏掉看起来会非常整洁。不过我等程序员显然不喜欢自己电脑用起来像别人的电脑。虽然使用⌘+⇧+.
可以临时控制显示或者隐藏文件,但是每次重启电脑都要重新选择显示所有文件,这样不够elegant。使用此命令可以直接设置默认始终显示隐藏文件。参考前面的几条指令,将TRUE
替换为FALSE
可以设置默认不显示隐藏文件,将write
替换为delete
可以删除刚刚设置的默认配置。
1.9.设置环境变量
1 |
|
显示隐藏文件后,在用户家目录下可以看到一个隐藏文件.bash_profile
,这就是用户环境变量,你可以仿照我的写法写适合你自己的环境变量。还能看到一个隐藏文件名为.zshrc
,这是zsh的默认配置文件,在用户打开Terminal时自动加载。
1 |
|
.zshrc
中的前14行都由我安装Miniforge时自动生成,这是控制conda环境的语句。第16行由我自己添加,这一句的意思是,每次打开黑窗口时自动刷新一次环境变量。使用这个方法可以在日常使用开发工具时解决复杂的环境问题,也可以使用alias
语法自定义常用的指令。
注意使用此方式配置的环境变量只能在用户自己点击Terminal时使用。软件在调用命令时不会加载环境变量,因此找不到目录时可能要考虑使用完整绝对路径。例如我在使用typora搭配picgo配置图床时typora一直显示找不到指令。
1.10.切换最高权限
Mac购买之初会要求创建一个用户,此用户为管理员账户,但在Terminal中一般运行在普通权限下,需要特殊权限比如sudo
的时候会要求用户输入密码。在图形界面下不能指定使用管理员用户,也就是不能像linux直接使用root用户操作那样。但是在Terminal中可以切换到管理员权限:
1 |
|
值得注意的是,此状态权限仍小于“系统权限”,比如/usr/bin
这个目录无论如何你是无法编辑的,因为Mac有系统完整性保护(SIP)。而且最新的机器似乎保护更严格,即使关闭了SIP仍然不能编辑系统某些内容(比如删掉系统自带某些软件),因为它们是“只读的镜像”,这可能是通过其特殊的文件系统实现的。
顺带一提,电脑中只有一个用户时不要给用户改名。如果想改名可以通过新建一个用户然后将其加入管理员用户组。直接改名会导致直接失去管理员权限,然后你就没权限新建一个管理员了🤪。当然已经跳坑了也有办法解决,进启动界面用安全模式命令行新建一个管理员账户。这个操作在M1芯片和Intel芯片的Mac上不同,具体请参考官方客服。
1.11.修改终端默认样式
Mac默认的shell是zsh,默认是白底黑字的。在.bash_profile
中添加如下语句并刷新环境变量可以使终端高亮并使用linux默认颜色配置模式。
1 |
|
在自己的电脑上使用终端可能不需要那么多的输入提示,例如“abc@mac ~%”,此时可以编辑.zshrc
修改默认配置样式,使用source .zshrc
刷新设置后生效。
1 |
|
默认提示也可以改点颜色:
%F{color}
是配置颜色,{}中color是256色的颜色值,也可以使用black,red,green,yellow,blue,magenta,cyan和white
等常用色%f
表示后面恢复默认颜色%B
粗体%b
表示后面恢复默认字重
我的个人配置如下:
1 |
|
1.12.查看硬盘寿命
1 |
|
1.13.取消系统截图阴影
系统自带的截图是唯一一个能截出圆角的截图方式,然而一般会带着窗口阴影一起截下来。使用下面指令可以取消阴影。
1 |
|
2.defaults命令
plist文件在macOS中被用来记录系统的各种偏好设置,所有与系统有关的设置项文件都在/Library/Preferences
中。使用defaults命令可以修改这些设置甚至是写入自己的设置。设置项可能导致软件崩溃,移除设置项可以直接删除配置文件或者使用给出的命令。
1 |
|
3.xattr命令
Mac OS X 10.4及更高版本通过使用HFS+文件系统属性文件B树功能支持*扩展属性。每个属性由一个名称和相关数据组成,该名称是一个以\0
截止的Unicode字符串。
1 |
|
可选选项:
-l
,将表单和值对应起来进行显示-r
,递归地处理-s
,如果文件参数是符号链接,对符号链接本身采取行动而不是它指向的文件-v
,强制运行结果中显示文件名(默认只有一个文件时不现实文件名)-x
,强制属性值用16进制表示
这个东西官方还做了C语言的API,但是咱平时也用不着,这里就不写了,官方文档放上:显示xattr,获取xattr,设置xattr,移除xattr。
4.pmset命令
在macOS中系统偏好设置提供的电源设置项显然太少了。您能分辨这些情况下电脑中的程序是否还会运行吗?
- 不关盖,放至黑屏后
- 不关盖,按指纹键锁屏
- 插着电源关盖
- 插着电源关盖,然后拔出电源
- 不插电源关盖,然后插入电源
实际上,macOS的pmset
命令为我们提供了更丰富的设定。以下介绍参考了维基百科。
4.1.选择设置对象
设置的对象默认为全部场景,否则请指定场景。指定场景命令不能单独使用,必须和其他指令组合使用,否则不会生效。
-c
(充电器),调整连接到充电器时使用的设置-b
(电池),调整使用本机电池时使用的设置-u
(UPS),调整运行UPS时使用的设置-a
(所有,默认)调整所有场景的设置
4.2.设置唤醒、睡眠、开机或关机
可以根据一周中任意的一天和时间组合重复发生,也可以设置在未来的日期和时间。语法如下:
1 |
|
schedule参数用于设置一次性电源事件,repeat用于设置每日或每周事件。事件的调度只能由特权用户完成。每次设置都会覆盖以前的设置,因此想要设置多个触发事件必须在一个命令字符串中输入它们。schedule参数识别以下附加参数:
- 类型。sleep、wake、poweron、shutdown或wakeorpoweron
- 日期和时间(仅限schedule)。格式为”MM/dd/yy HH:mm:ss”必须为24小时格式,必须加引号
- 时间(仅repeat)。格式为HH:mm:ss;必须为24小时格式,但不必加引号
- 工作日。MTWRFSU的子集,如M、MTWRF、weekdays、weekends和everyday都可以
- 所有者。描述是谁正在安排电源事件的人或程序(可选)
举例:要将一周中每天的关机事件设置为23:59,并将一周中每天的唤醒或开机事件设置为7:00
1sudo pmset repeat shutdown MTWRFSU 23:59:00 wakeorpoweron MTWRFSU 7:00:00
语法限制很严格,任何错误都将导致命令失败,并将显示一条简短的帮助消息。计划事件设置存储在专用硬件中,因此“黑苹果”上此功能可能不稳定。重复事件存储在/Library/Preferences/SystemConfiguration/com.apple.AutoWake.plist
中,此文件可以使用defaults
命令手动编辑,但更改有可能被覆盖;更改后不会立即生效。
4.3.查看所有电源管理配置项
-g
显示有关当前电源管理配置的信息,或最近活动的日志。如果没有提供其他参数,仅显示当前设置;如果后面跟了其他参数则显示此参数的详细设置项。如果提供了多个参数,那么只有第一个参数是有用的,多余的参数会被忽略。
-g live
,显示当前正在使用的设置-g custom
,显示所有电源的自定义设置-g cap
,显示机器支持哪些电力管理功能-g sched
,显示计划启动、唤醒或关闭、睡眠事件-g ps / batt
,显示电池和 UPS 的状态-g pslog
,显示电源(电池或者 UPS)状态的连续日志-g rawlog
,显示直接读取电池的电池状态的连续日志-g therm
,显示影响 CPU 速度的温度阈值。不适用于全部平台-g thermlog
,显示影响 CPU 速度的温度的通知日志。不适用于全部平台-g assertions
,显示电量提醒的概要。此提醒可以阻止系统睡眠或显示器睡眠。适用于 10.6 及更新版本-g assertionslog
,显示电量提醒的日志。适用于 10.6 及更新版本-g sysload
,显示“系统负载顾问”——。适用于 10.6 及更新版本-g ac/adapter
,显示关于交流电源适配器的详情。只有 MacBoook 和 MacBook Pro 支持。-g log
,显示睡眠,唤醒及其他电源管理时间的历史。这个日志只提供给管理员和调试目的-g uuid
,显示当前活跃的睡眠、唤醒的 UUID。-g uuidlog
,显示当前活跃的睡眠、唤醒的 UUID,并且打印一个新的被系统设置的 UUID-g history
,一个调试工具。当使用启动参数 io=0x3000000 被启用时,打印系统睡眠唤醒的 UUID 的时间线。-g powerstate
,打印当前为 IO Kit 驱动电源状态。调用者应该至少提供一个 IO Kit 类名来作为参数。如果没有类名被听过,它将打印全部驱动的电源状态。-g stats
,打印自系统启动以来睡眠和唤醒系统的计数。-g systemstate
,打印当前系统的电量状态和可用能力。-g everything
,打印每个参数。这是一个有用的快速收集所有 pmset 提供的输出。适用于 10.8。
4.4.配置休眠和安全睡眠选项
pmset可以识别以下参数,它们可以按任何顺序给出。任何错误的语法或无法识别的参数都将导致整个命令失败,这会在屏幕上打出一个log和一个简短的帮助文档。电源管理设置只能使用sudo权限修改。
通过pmset进行的所有更改都将保存在/Library/Preferences/SystemConfiguration/com.apple.PowerManagement.plist
的持久首选项文件中。可以使用defaults
命令手动修改此文件,但电源管理系统不会立即处理这些更改。对配置文件的手动编辑有可能被覆盖。pmset touch
命令将从磁盘上重读现有设置并应用。
displaysleep
,控制显示器无操作几分钟后灭屏,0以禁用显示睡眠disksleep
,控制磁盘几分钟无操作后自动断电,0以禁用磁盘睡眠sleep
,无操作几分钟后系统睡眠(所有程序暂停),0以禁用睡眠womp
,允许以太网数据包唤醒,设为1以启用或0以禁用。只有当设备插入电源时才会显示此设置,否则运行“pmset -g”时不会有womp设置项hibernatemode
,更改休眠模式。(0/3/25以外的选项慎用)- 0,休眠时只有内存通电
- 1,内存数据写入磁盘,然后电脑完全断电
- 3,内存数据写入磁盘,同时保持内存供电
- 5,与模式1大致相同,但适合安全地处理虚拟内存的数据
- 7,与模式3大致相同,但适合安全地处理虚拟内存的数据
- 25,与模式1大致相同,用于Mac OS X 10.7中的休眠
hibernatefile
,更改休眠时内存映象储存的位置。只能位于根卷上ring
,允许通过调制解调器唤醒,1启用或0禁用autorestart
,电池寿命检测到损耗时自动重启,1启用或0禁用dps
,根据负载动态地调整处理器速度,1启用或0禁用reduce
,保持降低处理器速度,1启用或0禁用powerbutton
,按下电源键时进入睡眠而不是关机,1启用或0禁用powernap
,让机器即使在睡眠时也能保持最新状态(接收更新和时钟同步等),1可以启用,0可以禁用lidwake
,(仅限笔记本)开盖时唤醒机器,1启用或0禁用acwake
,(仅限笔记本)当电源更换(插上或拔下充电线)时唤醒机器,1启用或0禁用lessbright
,(仅限笔记本)切换到指定电源时略微调低显示屏亮度,1启用或0禁用halfdim
,显示器睡眠时将亮度调到一半,1启用或0禁用sms
,(仅支持笔记本)感受到加速度时自动锁定机械硬盘的磁头,1启用或0禁用haltlevel
,(仅限UPS)当UPS仅剩某百分比电量时电脑自动关机haltafter
,(仅限UPS)使用UPS供电指定分钟数后电脑自动关机haltremain
,(仅限UPS)当UPS仅剩指定分钟数时电脑自动关机ttyskeepawake
,当任何tty(例如远程登录会话)处于活动状态时阻止空闲系统睡眠,除非其空闲时间超过系统睡眠计时器,1启用或0禁用时,tty才处于非活动状态autopoweroff
,(交流电源)如果系统支持的话,默认启用欧洲标准的能源节省计划。进入睡眠后超过设置的时间后,内存数据写入磁盘,进入低功率芯片组睡眠。从这种状态唤醒比从正常睡眠中醒来需要更长的时间。如果连接任何外设、或系统处于电池供电状态、或系统联网并启用了唤醒网络访问,系统将不会自动关机。1启用或0禁用autopoweroffdelay
,(交流电源)设置进入自动关机模式前的时间,整数,以秒为单位standbydelaylow
,将休眠映像写入磁盘并内存断电的等待时长。低电量时启用,整数,以秒为单位standbydelayhigh
,将休眠映像写入磁盘并内存断电的等待时长。高电量时启用,整数,以秒为单位networkoversleep
,此设置会影响macOS是否在睡眠期间显示共享网络服务。并非所有平台都使用此设置;不支持更改其值destroyfvkeyonstandby
,进入睡眠模式时销毁文件保险库密钥。默认情况下,即使系统处于待机状态,文件保险库键也会保留。如果密钥被销毁,将提示用户在退出待机模式时输入密码。1 - 销毁,0 - 保留。由于系统必须完全关机,您还需要将“hibernatemode”设置为25。
举例:设置仅由电池供电时,10 分钟后进入睡眠状态,并在 5 分钟后将显示屏设置为睡眠状态
1
pmset -b sleep 10 displaysleep 5
举例:当连着充电器时,设置30分钟后入睡,显示器设置为永不入睡
1
pmset -c sleep 30 displaysleep 0
$\ $
参考文档
本博客所有文章除特别声明外均为原创,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!