Quiero ver una carpeta en mi Mac (Snow Leopard) y luego ejecutar una secuencia de comandos (dándole el nombre de archivo de lo que se acaba de mover en una carpeta (como parámetro ... x.sh "nombre de archivo")).
Tengo un script todo escrito en bash (x.sh) que se moverá algunos archivos y otras cosas en la entrada de $ 1 sólo necesito OSX para darme el nombre de archivo cuando los nuevos archivos / carpetas se mueven / creado en un dir.
¿Algún comando?
Para ello puede utilizar launchd. Launchd puede configurarse para lanzar automáticamente un programa cuando se modifica una ruta de archivo.
Por ejemplo el siguiente launchd config plist lanzará el programa /usr/bin/logger
cuando se modifique la carpeta del escritorio de mi cuenta de usuario:
<?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>logger</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/logger</string>
<string>path modified</string>
</array>
<key>WatchPaths</key>
<array>
<string>/Users/sakra/Desktop/</string>
</array>
</dict>
</plist>
Para activar el config plist guárdelo en la carpeta LaunchAgents de su carpeta Library como "logger.plist".
Desde el shell puede utilizar el comando launchctl
para activar el logger.plist ejecutando:
$ launchctl load ~/Library/LaunchAgents/logger.plist
La carpeta del escritorio está siendo monitorizada. Cada vez que se cambie debería ver una salida en el system.log (use Console.app). Para desactivar el logger.plist, ejecute:
$ launchctl unload ~/Library/LaunchAgents/logger.plist
El archivo de configuración anterior utiliza la opción WatchPaths
. También puede utilizar la opción
QueueDirectories
. Consulte la página del manual launchd para obtener más información.
Las Acciones de carpeta de Apple OSX permiten automatizar tareas basadas en acciones realizadas en una carpeta.