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

macOS 复制文件到剪切板的小工具

  •  
  •   mayooot · 17 小时 38 分钟前 · 425 次点击

    起因

    最近工作中经常要手动创建一些虚拟的 k8s 集群,然后把 kubeconfig 发给测试,每次在 iTerm 终端上 vim 编辑完,都要用 open ./ 打开 Finder 然后复制粘贴发给测试,所以就想有没有命令直接能把文件复制到剪切板,不是像 pbcopy 那样把文件内容拷贝到剪切板。

    然后注意到 V2 上有个帖子在讨论怎么实现: https://www.v2ex.com/t/700647?p=1#reply27

    实现

    看了看上面帖子里的讨论,功能实现大概分为两个阶段:1. 获取当前文件的绝对路径 2. 调用 apple script 复制文件到剪切板。

    于是我复制粘贴了一个脚本去调用,发现获取文件绝对路径有使用 realpath 或者 readlink 的,但是速度都很慢,我工作中使用 Golang ,而且 Golang 打成二进制也比较容易,所以就用想着用 Golang 实现这俩步骤。

    首先使用 Golang 的 filepath.Abs 来获取绝对路径,这比调用 realpath 要快多了。

    其次就是如果直接使用 set the clipboard to POSIX file 命令,虽然可以复制到剪切板,但是在微信、企业微信、QQ 发送不出去... 加上 tell app "Finder" 后就能正常发送,好像是因为权限问题?

    但是添加了 tell app "Finder" 后速度就很慢,所以打算用 Object-C 来写复制的逻辑,然后用 Golang 调用,这样不管是获取文件的绝对路径还是复制文件到剪切板速度都有提升。

    这样用 Golang 实现一遍,首先速度有明显提升,其次只需要一个二进制就能运行,不用额外安装其他依赖了。

    项目地址

    https://github.com/mayooot/ClipChirp

    使用

    在 Release 里下载二进制文件,然后 mv 到 /usr/local/bin 就可以了。 一个简单的使用示例:

    $ clipchirp bird.png
    
    🦤 Successfully copied /Users/ming/ClipChirp/bird.png to clipboard
    

    如果对你有帮助,请给我一个 ⭐️ 吧~

    2 条回复    2024-12-26 11:41:54 +08:00
    gitreny
        1
    gitreny  
       4 小时 42 分钟前
    试试 maccy
    tars16
        2
    tars16  
       2 小时 2 分钟前
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5260 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 05:44 · PVG 13:44 · LAX 21:44 · JFK 00:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.