Script copie el contenido del portapapeles en un archivo

Quiero escribir un script de shell que copie el contenido del portapapeles (solo texto sin formato) cuando cambie el contenido anterior. Cuando ejecuto el script cada vez que copio algo (por lo que cambia el contenido del portapapeles), el script copia los nuevos valores en un archivo.

Escribí un script que funciona correctamente:

#!/bin/bash
prev=" "
while true
do
curr=$(pbpaste)
if [ "$curr" != "$prev" ]
then
   echo -n " " >> /Users/davide/desktop/file   
echo -n $curr >> /Users/davide/desktop/file     
fi
done

No me gusta mucho esta solución. Debe haber diferentes maneras de resolver este problema.

1) Obtenga el contenido del portapapeles, guárdelo en una variable y compare este valor con el valor actual del portapapeles (mi solución).

2) Tecla de detección presionada CMD+C. Cuando el usuario presiona CMD+C(acceso directo para copiar algo en el portapapeles), es casi seguro que el contenido del portapapeles cambia, pero no sé si es posible detectar la pulsación de tecla sin instalar bibliotecas adicionales.

3) Ver el proceso.

Procesos asociados a la acción de copiar CMD+C

Información del proceso PBOARD

¿Puede monitorear el uso de la CPU o la memoria del proceso pboard (al copiar algo en el portapapeles, el valor de este cambio porcentual)?

O (no sé si es posible) puedo ver para abordar el espacio del proceso?

Entonces mi pregunta es esta:

En tu opinión, ¿hay alguna alternativa mejor al guión que escribí, considerando las alternativas 2 y 3?

Esto suena como una buena prueba de concepto para que el malware busque contraseñas en el portapapeles. Supongo que esto se eliminará tarde o temprano y necesitará obtener un derecho para espiar los cambios en el portapapeles. Veremos qué sale de la WWDC en el frente de la privacidad; tal vez esto sea posible aún por un tiempo.
Escriba su Opción #2, lea esto para obtener algunas ideas. Además, lee esta publicación
¿Cómo va a "observar" los cambios en el portapapeles? Para hacer esto, necesita algo más que un script.
Hay un registrador de pulsaciones de teclas de código abierto para Mac que tendrá un código para que pueda comenzar.

Respuestas (1)

Un producto como este ya existe y está disponible gratis en la App Store- Flycut .

Desde su página de proyecto Github :

Guarde el elemento del historial del portapapeles que se muestra actualmente en un archivo, cerrando el bisel. Elimine el elemento del historial del portapapeles si se presionó la S mayúscula. El recorte se guarda en un archivo en el escritorio, similar a cómo se guardan las capturas de pantalla en OS X. Por ejemplo, "Escritorio/Recorte 2015-07-15 en 08.35.10.txt