Script Bash para ocultar / mostrar arquivos

1

Eu preparei um pequeno script bash para alternar a visibilidade dos meus arquivos ocultos do 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

Quando arquivos ocultos são invisíveis, o script os torna visíveis com sucesso, mas depois, quando executo novamente o script para tornar os arquivos ocultos invisíveis novamente, ele falha e não faz nada.

Onde estou indo errado?

    
por Can Sürmeli 13.07.2013 / 15:43

1 resposta

5

Nas condições if , você deve usar o comando defaults read , e não write . Caso contrário, o resultado é sempre verdadeiro e, claro, o elif nunca é executado.

Além disso, essa não é a sintaxe das condições if . Você deve usar:

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

Mas, neste caso, talvez algo assim seja menos detalhado:

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
    
por 13.07.2013 / 17:55