有人清楚 macOS 复制原理么?

2016-10-23 23:56:54 +08:00
 LevineChen

比如复制一个文件 在 iterm 黏贴为完整路径, 在其他输入框内黏贴为文件名. 黏贴到 QQ 输入框又以文件形式发送了.

有如上困惑的原因是 现在想通过 terminal 复制图片到 clipboard 的 buffering 里 折腾了一晚上没法实现. 但是看了一些第三方的 剪切板管理工具是可以实现的.

2620 次点击
所在节点    macOS
10 条回复
xshwy
2016-10-24 00:05:58 +08:00
猜测这个应该是各个 APP 自己设定的

猜测复制粘贴的时候,是复制的文件的完整路径,到了各个 APP 粘贴的时候,由各个 APP 来实现是 读取完整路径 还是 读取文件发送
bao3
2016-10-24 00:17:44 +08:00
这是每一个 app 自己的行为。。。看它是怎么解析复制的内容,比如 Terminal app ,它一定不会让你把整个文件复制上去,只会接受路径。比如 mail app 它一定不接受路径而是直接把文件放进去当附件,但是 outlook 则是既不接受路径也不接受文件,而只接受文件名。。。同一次复制,不同的 app 对它的解析是不一样的。
LevineChen
2016-10-24 00:17:56 +08:00
@xshwy 这不合理 你的意思是字符串路径么? 如果是 app 怎么知道我是真的复制了字符串还是一个路径.
Trim21
2016-10-24 00:22:31 +08:00
@LevineChen terminal 没有必要让你粘贴一个文件吧
df4VW
2016-10-24 00:23:44 +08:00
@LevineChen 判断下文件存不存在不就好了。大哥你确定不是来找茬的?
XiaoxiaoPu
2016-10-24 00:48:07 +08:00
剪贴板里的东西是富媒体信息, app 自己去解析,可以选择性的丢弃一部分。比如,你在网页上复制,在备忘录里粘贴会保留格式,在终端里就只保留纯文本了。
AnyOfYou
2016-10-24 00:57:12 +08:00
剪贴板数据里包含元数据来描述内部信息的类型。
我一般用这个 function ,最终还是调用 AppleScript 实现的。

copyfiletoclipboard () {
local filefullpath
filefullpath=$(realpath $1)
osascript -e 'on run args' -e 'set the clipboard to POSIX file (first item of args)' -e end "$filefullpath"
}

可以用,但是多文件的 Copy 会有问题。
fatestigma
2016-10-24 01:11:53 +08:00
macOS 的剪贴板应该是 NSPasteboard 吧。可以多看看这个的文档: https://developer.apple.com/reference/appkit/nspasteboard

在终端复制图片还是用 AppleScript 最方便吧。如果 pbcopy 好像不能记住文件类型
execute
2016-10-24 10:12:42 +08:00
同意一楼二楼的回答,实际上楼主的描述在 Windows 下也是一样的,不同程序下 Ctrl+v 的效果不同。
LevineChen
2016-10-24 11:27:54 +08:00
@AnyOfYou 大兄弟 完美!
@fatestigma 多谢 正需要这个
@XiaoxiaoPu 谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/314880

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX