¿Es posible acceder al Portapapeles como un archivo desde la línea de comandos?

5

Cuando se copia algo en el portapapeles, ¿está disponible en algún lugar como un archivo editable? Supongo que está escrito en alguna parte, incluso si es solo un archivo temporal, aunque probablemente estoy equivocado.

Me gustaría poder editar fácilmente el contenido del portapapeles, usando un editor como Vim, y luego tener esas ediciones guardadas de nuevo en el Portapapeles.

DKatri
fuente
Escribir el contenido de la pasta en un archivo en texto sin formato sería un riesgo de seguridad en el que los datos saldrían de una aplicación e irían a otra. Como puede ver en la respuesta, hay formas de acceder a eso, pero volcarlo en un archivo cada vez que cambie sería una buena definición de malware y spyware TBH, especialmente si ese archivo era legible por cuentas que no son de tipo administrador / no root . Lo que ha pedido es bastante lógico y lo he visto implementado de varias maneras.
bmike
@bmike Buen punto sobre la accesibilidad de todo el sistema del archivo temporal. Creo que es reparable, pero primero necesito acceso a una Mac para probar el script que tengo en mente :-)
nohillside
El tuyo no fue tan malo ya que la persona tiene que activar el fragmento @nohillside: estás en lo cierto /var/folders, es muy fácil ocultarlo u otro espacio temporal restringido para el usuario en lugar de la temperatura global. La automatización de "cuando alguna vez se copia algo" es donde el verdadero problema se dispararía si el riesgo no se entendiera o no se manejara.
bmike

Respuestas:

6

Puede leer y escribir en el Tablero con los comandos de Terminal pbcopyy pbpaste. Para editarlo, podrías usar algo como

pbpaste > /tmp/clip.txt && vi /tmp/clip.txt && pbcopy < /tmp/clip.txt

Si lo necesita con frecuencia, una función de shell puede ser más adecuada. Puede definir uno poniendo lo siguiente en su.bashrc

pbedit() {
    local _t=$(mktemp)
    chmod 600 "$_t"

    pbpaste > "$_t"
    ${EDITOR:-vi} "$_t"
    pbcopy < "$_t"

    rm -f "$_t"
}

Esto trata de minimizar el riesgo de que otras personas accedan al archivo temporal durante la edición (pero no puede evitar el acceso de nadie con privilegios de administrador o root).

benwiggy
fuente
Si bien el OP nunca indicó cuál puede ser el contenido del portapapeles, esta respuesta solo es relevante para el texto y no para los datos binarios que pueden estar en el portapapeles.
user3439894
1
Es cierto, aunque los datos binarios generalmente no se prestan para editarse fácilmente con vim. Sin embargo, me atrevo a decir que hay algunos que ruedan de esa manera.
benwiggy
Esto es asombroso Solo recuerde que la implementación de cartón en macOS es como un servidor que puede contener múltiples elementos, binarios y texto, y los elementos de texto pueden tener múltiples interpretaciones cuando se almacena Unicode o texto enriquecido. Para la mayoría de los casos, suponiendo que tiene un solo elemento y que su texto es verdadero. developer.apple.com/documentation/appkit/…
bmike