V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LevineChen
V2EX  ›  macOS

有人清楚 macOS 复制原理么?

  •  
  •   LevineChen · 2016-10-23 23:56:54 +08:00 · 2623 次点击
    这是一个创建于 2956 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    10 条回复    2016-10-24 11:27:54 +08:00
    xshwy
        1
    xshwy  
       2016-10-24 00:05:58 +08:00   ❤️ 1
    猜测这个应该是各个 APP 自己设定的

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

    在终端复制图片还是用 AppleScript 最方便吧。如果 pbcopy 好像不能记住文件类型
    execute
        9
    execute  
       2016-10-24 10:12:42 +08:00   ❤️ 1
    同意一楼二楼的回答,实际上楼主的描述在 Windows 下也是一样的,不同程序下 Ctrl+v 的效果不同。
    LevineChen
        10
    LevineChen  
    OP
       2016-10-24 11:27:54 +08:00
    @AnyOfYou 大兄弟 完美!
    @fatestigma 多谢 正需要这个
    @XiaoxiaoPu 谢谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2713 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:37 · PVG 23:37 · LAX 07:37 · JFK 10:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.