我正在尝试编写一个简单的电子脚本来在我不同的时间机器备份之间切换,但我遇到了一些困难,因为tmutil
当卷名中有空格时会不断抛出错误,就像
sudo tmutil removeexclusion -v /Volumes/MacOS Mojave
/Volumes/MacOS Mojave: The operation couldn’t be completed. Invalid argument
好吧,这一点还是很明显的,但是现在,
sudo tmutil removeexclusion -v "/Volumes/MacOS Mojave"
/Volumes/MacOS Mojave: The operation couldn’t be completed. Invalid argument
甚至
sudo tmutil removeexclusion -v /Volumes/MacOS\ Mojave
/Volumes/MacOS\ Mojave: The operation couldn’t be completed. Invalid argument
man tmutil
在这些命令的文档中并没有真正详细介绍空格或特殊字符,转义字符和引用路径通常都是执行此操作的方法,但显然在本例中不行。当我在没有空格的卷名上使用引号时,引号有效,但这不是这里的重点。
答案1
因此,感谢评论者们的宝贵帮助,我能够确定名称中带有空格的分区也是我的根分区,并且 tmutil 只能将其显示为/
。第一个提示是运行ls -al /Volumes
,它给出的输出为
lrwxr-xr-x 1 root wheel 1 26 Aug 13:22 MacOS Mojave -> /
一开始我也没想太多,毕竟只是一个别名而已对吧?
但当我跑的时候
sudo tmutil addexclusion -v "/Volumes/MacOS Catalina"
在另一个有空格的分区上,碰巧当时不是我的根分区,我没有收到错误,从而排除了错误是由空格引起的理论根本.然后,跑步
sudo tmutil addexclusion -v "/"
成功排除“MacOS Mojave”,正如我在 TM 的偏好设置窗格中看到的那样。
因此,总而言之,tmutil 可以完美地处理名称中包含空格的卷,但您必须注意根分区,它不会以其名称来寻址,而是作为/
。这两个细节恰好合谋隐藏在喊着“不允许有空格”的烟幕后面。
回答最初提出的问题:是的,您可以使用空格来处理名称,该空格可以用“ ”括起来,也可以用 \ 转义。