非表示のOSXファイルの表示を切り替えるための小さなbashスクリプトを用意しました。
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
隠しファイルが非表示の場合、スクリプトはそれらを正常に表示しますが、その後、スクリプトを再実行して隠しファイルを再度非表示にすると、失敗して何も実行されません。
どこが間違っているのですか?
if
条件では、write
ではなくdefaults read
コマンドを使用する必要があります。それ以外の場合、結果は常にtrueになり、もちろん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