用于隐藏/显示文件的 Bash 脚本

用于隐藏/显示文件的 Bash 脚本

我准备了一个小 bash 脚本来切换隐藏的 OS X 文件的可见性。

if (defaults write com.apple.finder AppleShowAllFiles FALSE); then
    defaults write com.apple.finder AppleShowAllFiles TRUE
elif (defaults write com.apple.finder AppleShowAllFiles TRUE); then
    defaults write com.apple.finder AppleShowAllFiles FALSE
fi

killall Finder

当隐藏文件不可见时,脚本成功地使它们可见,但之后,当我重新运行脚本以使隐藏文件再次不可见时,它会失败并且不执行任何操作。

我哪里错了?

答案1

在这种if情况下,您应该使用该defaults read命令,而不是write.否则,结果始终为真,当然elif永远不会运行。

另外,这不是if条件的语法。你应该使用:

if [ $(command) == "TRUE" ]; then

但在这种情况下,也许这样的事情会不那么冗长:

STATUS=$(defaults read com.apple.finder AppleShowAllFiles)
case "$STATUS" in
    "TRUE") OPTION="FALSE" ;;
    "FALSE") OPTION="TRUE" ;;
esac
defaults write com.apple.finder AppleShowAllFiles $OPTION

killall Finder

相关内容