我如何才能管道输出的命令到我的剪贴板,并粘贴回来时,使用终端?例如:

cat file | clipboard

当前回答

在不使用外部工具的情况下,如果你连接到服务器视图SSH,这是一个相对简单的命令:

在Windows 7+命令提示符中:

ssh user@server cat /etc/passwd | clip

这将把远程文件的内容放到本地剪贴板中。

(该命令需要运行Pageant以获取密钥,否则它将要求您输入密码。)

其他回答

使用.bashrc脚本的本机解决方案

Linux, macOS, Windows (WSL/CYGWIN)

这些系统都使用自己的工具将剪贴板功能合并到命令行界面(CLI)中。这意味着,当使用例如在Windows子系统for Linux (WSL)上的Ubuntu命令行时,通常的xclip解决方案将不起作用。这同样适用于macOS。

下表概述了在不同系统上需要的复制/粘贴工具:

OS Copy Paste
WSL clip.exe powershell.exe Get-Clipboard
CYGWIN > /dev/clipboard cat /dev/clipboard
macOS pbcopy pbpaste
Linux xclip -sel clip xclip -sel clip -o

统一的。bashrc解决方案

只需将以下代码放入~/。允许在所有系统上使用复制和粘贴。该解决方案适用于“正常”Linux系统(即Ubuntu, Debian)以及WSL和macOS:

if grep -q -i microsoft /proc/version; then
  # on WSL: version contains the string "microsoft"
  alias copy="clip.exe"
  alias paste="powershell.exe Get-Clipboard"
elif grep -q -i cygwin $(uname -a); then
  # on CYGWIN: uname contains the string "cygwin"
  alias copy="/dev/clipboard"
  alias paste="cat /dev/clipboard"
elif [[ ! -r /proc/version ]]; then
  # on MAC: version is not readable at all
  alias copy="pbcopy"
  alias paste="pbpaste"
else
  # on "normal" linux
  alias copy="xclip -sel clip"
  alias paste="xclip -sel clip -o"
fi

在所有系统上使用

复制:

# pipe
echo "hello world" | copy

# or for direct file input
copy < file

粘贴:

paste > file

一种方法是:

安装xclip,例如: Sudo apt-get安装xclip 管道输出到xclip复制到剪贴板: Cat文件| xclip 将刚才复制的文本粘贴到X应用程序中: xclip - o

要粘贴除X应用程序之外的其他地方,例如浏览器窗口中网页的文本区域,请使用:

cat file | xclip -selection clipboard

考虑创建一个别名:

alias "c=xclip"
alias "v=xclip -o"

为了了解这有多有用,假设我想在一个新的终端窗口中打开我的当前路径(在某些系统中可能有其他的方法,如Ctrl+T,但这只是为了说明目的):

Terminal 1:
pwd | c

Terminal 2:
cd `v`

注意v周围的' ',这首先将v作为命令执行,然后将其替换为cd使用。

只复制内容到X剪贴板

cat file | xclip

具有sudo特权:

echo '#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
from tkinter import Tk
r = Tk()
r.withdraw()
r.clipboard_clear()
data = ""
for i in sys.stdin:
        data = data + i
r.clipboard_append(data)
r.update()
r.destroy()' | sudo tee /usr/bin/copy > /dev/null
sudo chmod +x /usr/bin/copy

或者没有sudo权限(仅适用于一个用户):

echo '#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
from tkinter import Tk
r = Tk()
r.withdraw()
r.clipboard_clear()
data = ""
for i in sys.stdin:
        data = data + i
r.clipboard_append(data)
r.update()
r.destroy()' > ~/.local/bin/copy
chmod +x ~/.local/bin/copy

用法:

echo "hi" | copy

一样:

your_command_which_gives_output | pbcopy

WSL / GNU/Linux(需要xclip包):

your_command_which_gives_output | xclip -sel clip

Git Bash在Windows:

your_command_which_gives_output | clip

在OS X上,使用pbcopy;Pbpaste的方向相反。

pbcopy < .ssh/id_rsa.pub