V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
chunqiuyiyu
V2EX  ›  分享创造

Knao - 将上一个终端命令输出粘入剪切板

  •  
  •   chunqiuyiyu · 2019-05-09 21:51:07 +08:00 · 3464 次点击
    这是一个创建于 2060 天前的主题,其中的信息可能已经有所发展或是发生改变。

    说明

    最初的想法是将终端中出错的的命令输出记录下来,后来就想到可以一步到位放入剪切板中,便于分享给他人或者在网上搜索。也许没什么用处,但是让我熟悉了 TypeScript 与 Node.js 中子进程相关的 API。原理简单到发指:读取终端命令历史文件,找到上次运行的命令,重新运行命令,将输出通过管道操作符(|)输出到剪切板,只支持一些简单的同步命令。

    预览

    preview.gif

    链接

    Knao

    欢迎使用并提出意见建议。

    21 条回复    2019-05-20 14:02:00 +08:00
    henryhu
        1
    henryhu  
       2019-05-10 00:03:50 +08:00   ❤️ 2
    多数命令重复执行,结果不一样了,咋整?
    jamesxu
        2
    jamesxu  
       2019-05-10 06:36:31 +08:00 via iPhone   ❤️ 1
    没啥意义,直接 > 输出到文件
    Imr
        3
    Imr  
       2019-05-10 08:12:01 +08:00 via iPhone   ❤️ 1
    v 友的创意总能让人“大开眼界”
    InternetExplorer
        4
    InternetExplorer  
       2019-05-10 08:12:49 +08:00 via Android   ❤️ 2
    重新运行命令………你可真是个小机灵鬼.jpg
    InternetExplorer
        5
    InternetExplorer  
       2019-05-10 08:15:55 +08:00 via Android   ❤️ 1
    建议弄个命令白名单,不是什么命令都适合重新运行的
    henryhu
        6
    henryhu  
       2019-05-10 08:26:07 +08:00   ❤️ 1
    楼主,tee 命令了解一下,命令结果终端输出,同时输出到文件,例如:ifconfig | tee ifconfig.log
    JackieMe
        7
    JackieMe  
       2019-05-10 08:42:15 +08:00 via Android   ❤️ 1
    xclip 好像就是干这个的?
    Sainnhepark
        8
    Sainnhepark  
       2019-05-10 08:46:59 +08:00 via Android   ❤️ 1
    看到这个贴突然想问个问题,zsh 有没有什么办法在不重新运行上一个命令的情况下,打印上一个命令的输出?
    dongin
        9
    dongin  
       2019-05-10 10:25:07 +08:00   ❤️ 2
    mac 下不是有 pbcopy/pbpaste 么?
    omph
        10
    omph  
       2019-05-10 12:46:33 +08:00   ❤️ 1
    直接用 shell 做不更方便吗?
    history -n -1 | xargs sh -c | xclip
    chunqiuyiyu
        11
    chunqiuyiyu  
    OP
       2019-05-10 12:48:46 +08:00
    @henryhu
    @jamesxu
    @Imr
    @InternetExplorer
    @henryhu 简单的练习项目,只是为了熟悉 TypeScript 与 Node.js 中 child_process 的使用,没想那么多。
    chunqiuyiyu
        12
    chunqiuyiyu  
    OP
       2019-05-10 12:49:57 +08:00
    @JackieMe
    @dongin
    @omph 内部就是调用了这些 Shell 命令。
    chunqiuyiyu
        13
    chunqiuyiyu  
    OP
       2019-05-10 12:50:49 +08:00
    @Sainnhepark 没有方法。
    omph
        14
    omph  
       2019-05-10 13:28:09 +08:00   ❤️ 1
    @Sainnhepark [Save all the terminal output to a file - Unix & Linux Stack Exchange]( https://unix.stackexchange.com/questions/200637/save-all-the-terminal-output-to-a-file)
    lululau
        15
    lululau  
       2019-05-10 13:33:34 +08:00
    command | tee >(pbcopy or xclip)
    lululau
        16
    lululau  
       2019-05-10 13:36:10 +08:00
    如果只是偶尔想拷贝一下先前执行过的命令的输出的话,如果用 tmux 就不用说了,如果用 iTerm2 则可以使用 AppleScript 拿到 iTerm2 pane 的文本内容,3.3.0 好像开始支持 Python 了,但是不知道有没有这个 API
    Cabana
        17
    Cabana  
       2019-05-10 13:45:16 +08:00
    瞬间先到了 rm -rf ./
    Cabana
        18
    Cabana  
       2019-05-10 13:45:35 +08:00
    @Cabana #17 先->想
    mooncakejs
        19
    mooncakejs  
       2019-05-10 14:28:31 +08:00
    『重新运行命令』好可怕。
    cd logs
    rm -rf *
    ----
    cd /
    Knao
    fuzhuo233
        20
    fuzhuo233  
       2019-05-16 22:47:15 +08:00
    macOS 上 cat package.json | pbcopy; 粘贴回来 pbpaste > out
    cygwin 上 cat package.json > /dev/clipboard
    Linux 上我没用过貌似用 xclip 可以 cat package.json | xclip;

    macOS 一般在 vim 上按"+用加号寄存器来复制粘贴就行了…
    Kobayashi
        21
    Kobayashi  
       2019-05-20 14:02:00 +08:00   ❤️ 1
    @lululau iTerm2 根本不用你说的这么麻烦,直接 Cmd + Shift + a 拿到上一次输出。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2608 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 06:47 · PVG 14:47 · LAX 22:47 · JFK 01:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.