Tengo un simple comando bash que he intentado invocar desde AppleScript pero hace una extraña sustitución unicode.
Ejemplo de contenido del portapapeles:
# 6C (d1/s2): F 11-12 100 Fly (1:12.95Y)
El comando de la terminal:
$ pbpaste | gsed 's/\x2D/\xE2\x96\xB8/g' | pbcopy
cambia "-" por "▸" cuando lo encuentra en el portapapeles
-
HYPHEN-MINUS
Unicode: U+002D, UTF-8: 2D
▸
BLACK RIGHT-POINTING SMALL TRIANGLE
Unicode: U+25B8, UTF-8: E2 96 B8
La salida del portapapeles es buena:
# 6C (d1/s2): F 11▸12 100 Fly (1:12.95Y)
El AppleScript como lo escribí:
do shell script "pbpaste | gsed 's/\\x2D/\\xE2\\x96\\xB8/g' | pbcopy"
La salida del portapapeles es incorrecta:
# 6C (d1/s2): F 11'ñ∏12 100 Fly (1:12.95Y)
Intenté jugar con algo como esto en AppleScript
set the clipboard to «class ktxt» of ((the clipboard as text) as record)
También eché un vistazo al contenido del portapapeles después de copiar el texto de un sitio web utilizando este comando en el terminal:
$ osascript -e "the clipboard as record"
osascript -e "the clipboard as record"
«class HTML»:«data HTML3C6D65746120636861727365743D277574662D38273E3C7370616E207374796C653D22636F6C6F723A2072676228302C20302C2030293B20666F6E742D66616D696C793A20417269616C2C2048656C7665746963612C2073616E732D73657269663B20666F6E742D73697A653A20313270783B20666F6E742D7374796C653A206E6F726D616C3B20666F6E742D76617269616E742D6C69676174757265733A206E6F726D616C3B20666F6E742D76617269616E742D636170733A206E6F726D616C3B20666F6E742D7765696768743A203430303B206C65747465722D73706163696E673A206E6F726D616C3B206F727068616E733A20323B20746578742D616C69676E3A202D7765626B69742D6C6566743B20746578742D696E64656E743A203070783B20746578742D7472616E73666F726D3A206E6F6E653B2077686974652D73706163653A206E6F726D616C3B207769646F77733A20323B20776F72642D73706163696E673A203070783B202D7765626B69742D746578742D7374726F6B652D77696474683A203070783B206261636B67726F756E642D636F6C6F723A20726762283233392C203235302C20323533293B20746578742D6465636F726174696F6E2D746869636B6E6573733A20696E697469616C3B20746578742D6465636F726174696F6E2D7374796C653A20696E697469616C3B20746578742D6465636F726174696F6E2D636F6C6F723A20696E697469616C3B20646973706C61793A20696E6C696E652021696D706F7274616E743B20666C6F61743A206E6F6E653B223E23203643202864312F7332293A20462031312D31322031303020466C792028313A31322E393559293C2F7370616E3E», «class utf8»:# 6C (d1/s2): F 11-12 100 Fly (1:12.95Y), «class ut16»:# 6C (d1/s2): F 11-12 100 Fly (1:12.95Y), string:# 6C (d1/s2): F 11-12 100 Fly (1:12.95Y), Unicode text:# 6C (d1/s2): F 11-12 100 Fly (1:12.95Y)
El "mismo" texto después de haberlo pasado por el comando terminal y pegado en una nota de Stickies:
$ osascript -e "the clipboard as record"
osascript -e "the clipboard as record"
«class RTF »:«data RTF 7B5C727466315C616E73695C616E7369637067313235325C636F636F61727466323531330A5C636F636F61746578747363616C696E67305C636F636F61706C6174666F726D307B5C666F6E7474626C5C66305C666E696C5C666368617273657430204D656E6C6F2D526567756C61723B7D0A7B5C636F6C6F7274626C3B5C7265643235355C677265656E3235355C626C75653235353B5C726564305C677265656E305C626C7565303B7D0A7B5C2A5C657870616E646564636F6C6F7274626C3B3B5C6373677261795C63303B7D0A5C706172645C74783536305C7478313132305C7478313638305C7478323234305C7478323830305C7478333336305C7478333932305C7478343438305C7478353034305C7478353630305C7478363136305C7478363732305C7061726469726E61747572616C5C7061727469676874656E666163746F72300A0A5C66305C66733232205C636632205C436F636F614C69676174757265302023203643202864312F7332293A20462031315C7563305C75393635362031322031303020466C792028313A31322E393559297D», «class utf8»:# 6C (d1/s2): F 11▸12 100 Fly (1:12.95Y), «class ut16»:# 6C (d1/s2): F 11▸12 100 Fly (1:12.95Y), string:# 6C (d1/s2): F 11, Unicode text:# 6C (d1/s2): F 11▸12 100 Fly (1:12.95Y)
Sólo información adicional. Los caracteres que fueron sustituidos por lo que quiero tienen esta información unicode
ñ
LATIN SMALL LETTER N WITH TILDE
Unicode: U+00F1, UTF-8: C3 B1
∏
N-ARY PRODUCT
Unicode: U+220F, UTF-8: E2 88 8F
EDITAR: Parece que la canalización de los resultados a pbcopy
mientras se trabaja en el terminal, era un problema cuando se llamaba desde AppleScript.
He cambiado el AppleScript por:
do shell script "pbpaste | gsed 's/\\x2D/\\xE2\\x96\\xB8/g'; pbcopy"
?? Los resultados aparecen dentro de la ventana de resultados de AppleScript, pero esto borra el Portapapeles... ¿Alguien sabe por qué AppleScript borra el portapapeles cuando se utiliza pbcopy
en un do shell script
¿comando?