No pude hacer que esto funcionara de manera confiable, pero puedes intentar guardar una lista de propiedades como esta como ~/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>
Se puede cargar con launchctl load ~/Library/LaunchAgents/showall_external.plist
o al cerrar sesión y volver a iniciarla.
Sin el comando de suspensión / Volúmenes / WD / a veces existía cuando se desmontaba el volumen. El programa también se ejecuta cuando se modifican los archivos en / Volumes / WD /, por lo que primero verifica el valor actual de la clave. El programa se acelera si se ha ejecutado en los últimos 10 segundos, por lo que puede haber un retraso de hasta 10 segundos antes de ejecutarse.
ControlPlane puede ejecutar una secuencia de comandos cuando se conecta un dispositivo USB, pero no pude averiguar cómo ejecutar una secuencia de comandos cuando un El dispositivo USB está desconectado o se expulsa un volumen.