¿Cómo puedo tomar una captura de pantalla de todos los monitores con captura de pantalla u otras herramientas?

Quería usar screencapturepara tomar una captura de pantalla de todos los monitores desde un script, pero esto solo parece capturar el monitor principal. ¿Cómo puedo usar screencaptureo cualquier otra herramienta a la que se pueda llamar desde la línea de comandos para capturar todos los monitores?

Edité su pregunta para mantenerla (y las posibles respuestas) dentro del alcance definido en las Preguntas frecuentes .

Respuestas (1)

Está mal documentado, pero de hecho es posible con el screencapturecomando.

screencapture ~/Desktop/screen1.png ~/Desktop/screen2.png [...]

Aquí está la sección relevante de man screencapture:

 files   where to save the screen capture, 1 file per screen

Por supuesto, si lo está llamando mediante programación, es posible que no sepa cuántos monitores hay, por lo que tendrá que analizar la salida system_profiler SPDisplaysDataTypeo defaults read /Library/Preferences/com.apple.windowserver.plistdeterminar cuántos argumentos de nombre de archivo pasar a screencapture. Por ejemplo:

$ system_profiler SPDisplaysDataType | grep "Online: Yes" | wc -l
       2

Referencias

https://stackoverflow.com/questions/20099333/terminal-command-to-show-connected-displays-monitors-solutions
http://hintsforums.macworld.com/showthread.php?p=695603

gracias. Pensé que lo intenté con dos nombres de archivo, pero ahora parece funcionar...
Parece que pasar argumentos adicionales no daña nada, por lo que siempre puede especificar como 10 archivos y asumir que nunca tendrá más de esa cantidad de monitores.