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

Can*_*eli 1 osx bash shell-script files osx-finder

我准备了一个小 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
Run Code Online (Sandbox Code Playgroud)

当隐藏文件不可见时,脚本成功地使它们可见,但之后,当我重新运行脚本以再次使隐藏文件不可见时,它失败并且什么也不做。

我哪里错了?

Pau*_*ida 5

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

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

if [ $(command) == "TRUE" ]; then
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)