繁体   English   中英

Mac删除多个文件重击

[英]Mac Deleting Multiple Files Bash

我正在尝试通过删除安装程序安装的所有文件来卸载程序。 这是我尝试过的脚本,但是在尝试运行它时,它在第6行(以**突出显示)上返回“ Too many arguments ”错误。

这将通过Apple Remote Desktop部署到多台计算机上。

我想将其放在程序包中运行,但作为可执行脚本也可以完成。 我要解决这个错误吗? 这不是完整的脚本,但遵循相同的模式。

#!/bin/bash

## This will uninstall ETC Nomad v2.3.3.9.0.10.mpkg
## From Contents of ETCnomad Eos Mac 2.3.3.9.0.10.pkg

**if [ -d /Applications/Eos Family Welcome Screen.app ]; then**
/bin/rm -rf /Applications/Eos Family Welcome Screen.app
fi

if [ -f /tmp/Element_Hotkeys.pdf ]; then
/bin/rm -rf /tmp/Element_Hotkeys.pdf
fi

if [ -f /tmp/Eos_Hotkeys.pdf ]; then
/bin/rm -rf /tmp/Eos_Hotkeys.pdf
fi

if [ -f /tmp/FixtureReleaseNotes.pdf ]; then
/bin/rm -rf /tmp/FixtureReleaseNotes.pdf
fi

if [ -f usr/local/etc/DCIDTable ]; then
/bin/rm -rf usr/local/etc/DCIDTable
fi

exit 0

回答

在包含空格的路径/文件名周围使用' ,否则shell会尝试将这些部分解释为与文件名不同,并感到困惑,因此出现错误消息。

更多评论

  • 正如jubobs指出的那样,在删除文件之前测试文件是否存在是没有用的。 此外,您已经使用了-f选项,该选项将忽略不存在的文件,因此测试变得无关紧要。
  • 从命令中删除绝对路径以使脚本可移植。 外壳程序的PATH环境变量用于在正确的位置搜索命令。
  • 无需从/tmp/删除文件,因为操作系统会为您执行此操作。
  • 修改/usr/类的系统文件夹时请务必小心,因为每个系统升级都会覆盖它们,而且通常很难分辨所有依赖项。

您可以简化脚本:

#!/bin/bash

## This will uninstall ETC Nomad v2.3.3.9.0.10.mpkg
## From Contents of ETCnomad Eos Mac 2.3.3.9.0.10.pkg

rm -rf '/Applications/Eos Family Welcome Screen.app'
# rm -rf /tmp/Element_Hotkeys.pdf
# rm -rf /tmp/Eos_Hotkeys.pdf
# rm -rf /tmp/FixtureReleaseNotes.pdf
rm -rf /usr/local/etc/DCIDTable

exit 0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM