ファイルを非表示または表示する Bash スクリプト

ファイルを非表示または表示する Bash スクリプト

隠されたOS Xファイルの可視性を切り替えるために、小さな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

隠しファイルが表示されない場合、スクリプトは正常に表示されますが、隠しファイルを再表示しないようにスクリプトを再実行すると失敗し、何もしません。

私はどこで間違っていますか?

答え1

この場合、代わりにifそのコマンドを使用する必要があります。それ以外の場合、結果は常にtrueになり、もちろん実行されません。defaults readwriteelif

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

関連情報