为什么在 macOS 中运行此脚本时会出现“没有此文件或目录”错误?

为什么在 macOS 中运行此脚本时会出现“没有此文件或目录”错误?

在 macOS 的终端中,我可以手动执行此命令,它会执行我想要的操作:

cd ~/Library/Preferences
mv Adobe "Adobe.old.$(date +%c)"

我想为此创建一个简单的脚本,可以通过终端 shell 运行。我尝试创建一个包含以下内容的文件,但它对我来说不起作用:

mv "~/Library/Preferences/Adobe" "~/Library/Preferences/Adobe.old.$(date +%c)"

我得到以下输出:

<name>@<machinename> desktop % sh adobecleanup.txt
mv: rename ~/Library/Preferences/Adobe to ~/Library/Preferences/Adobe.old.Mon Jan 18 16:44:15 2021: No such file or directory

答案1

您将用户主目录路径前缀括~/在引号中。

看看你已经做了哪些有效的事情:

cd ~/Library/Preferences
mv Adobe "Adobe.old.$(date +%c)"

看看不起作用的命令:

mv "~/Library/Preferences/Adobe" "~/Library/Preferences/Adobe.old.$(date +%c)"

关键区别在于,在有效的情况下,路径以 开头,~/并且不带引号。而在无效的命令中,路径以 开头,"~/并且明确带引号。当您这样做时,系统实际上是在寻找~/文字路径;而不是用户主目录扩展路径。

为了让它工作,请像这样取消引用整个内容:

mv ~/Library/Preferences/Adobe ~/Library/Preferences/Adobe.old.$(date +%c)

或者只是不要在引用的路径中包含前缀路径,如下所示:

mv ~/"Library/Preferences/Adobe" ~/"Library/Preferences/Adobe.old.$(date +%c)"

相关内容