Non ho potuto farlo funzionare in modo affidabile, ma potresti provare a salvare un elenco di proprietà come questo in ~/Library/LaunchAgents/showall_external.plist
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd >
<plist version="1.0">
<dict>
<key>Label</key>
<string>showall_external</string>
<key>ProgramArguments</key>
<array>
<string>bash</string>
<string>-c</string>
<string>k=com.apple.Finder\ AppleShowAllFiles
sleep 3
if [[ -d /Volumes/WD/ ]]; then
if [[ $(defaults read $k) = 0 ]]; then
defaults write $k -bool true
osascript -e 'quit app "Finder"'
fi
else
if [[ $(defaults read $k) = 1 ]]; then
defaults write $k -bool false
osascript -e 'quit app "Finder"'
fi
fi</string>
</array>
<key>WatchPaths</key>
<array>
<string>/Volumes/WD/</string>
</array>
</dict>
</plist>
Può essere caricato con launchctl load ~/Library/LaunchAgents/showall_external.plist
o disconnettendosi e tornando indietro.
Senza il comando sleep / Volumes / WD / a volte esisteva quando il volume veniva smontato. Il programma viene eseguito anche quando i file in / Volumes / WD / sono modificati, quindi controlla prima il valore corrente della chiave. Il programma viene rallentato se è stato eseguito negli ultimi 10 secondi, quindi è possibile che si verifichi un ritardo di 10 secondi prima dell'esecuzione.
ControlPlane può eseguire uno script quando è collegato un dispositivo USB, ma non sono riuscito a capire come eseguire uno script quando Il dispositivo USB è disconnesso o viene espulso un volume.