当我在终端中使用命令时,如何将其输出导入到剪贴板并在需要时粘贴回来?例如:
cat file | clipboard
一种方法如下:
安装 xclip
,例如:
sudo apt-get install xclip
将输出导入到 xclip
中以复制到剪贴板中:
cat file | xclip
将刚刚复制的文本粘贴到 X
应用程序中:
xclip -o
如果要将其粘贴到其他地方(而不是 X
应用程序中),例如浏览器窗口中的文本区域,请使用:
cat file | xclip -selection clipboard
考虑创建一个别名:
alias "c=xclip"
alias "v=xclip -o"
Terminal 1:
pwd | c
Terminal 2:
cd `v`
v
周围的` `
。这将首先执行v
作为命令,然后将其替换为cd
以使用。X
剪贴板中。cat file | xclip
Error: Can't open display: (null)
@Legend。 - alper在 macOS 上,使用 pbcopy
命令可将内容复制到剪贴板;pbpaste
命令则相反,可以将剪贴板上的内容粘贴。
pbcopy < .ssh/id_rsa.pub
pbcopy < .ssh/id_rsa.pub
。 - doublejoshpbcopy < git merge-base master some-branch
- Bengit merge-base master some-branch | pbcopy
。请注意,此处的翻译并没有改变原文的含义,只是使其更通俗易懂。 - Samcb
,它可以在这个github gist中找到。_copy(){
cat | xclip -selection clipboard
}
_paste(){
xclip -selection clipboard -o
}
_copy(){
cat | pbcopy
}
_paste(){
pbpaste
}
_copy(){
cat > /dev/clipboard
}
_paste(){
cat /dev/clipboard
}
此脚本模仿了tee
(请参见man tee
)。
它就像您的普通复制和粘贴命令,但统一并能感知您何时希望它可链接
$ date | cb
# clipboard contains: Tue Jan 24 23:00:00 EST 2017
# clipboard retained from the previous block
$ cb
Tue Jan 24 23:00:00 EST 2017
$ cb | cat
Tue Jan 24 23:00:00 EST 2017
$ cb > foo
$ cat foo
Tue Jan 24 23:00:00 EST 2017
$ date | cb | tee updates.log
Tue Jan 24 23:11:11 EST 2017
$ cat updates.log
Tue Jan 24 23:11:11 EST 2017
# clipboard contains: Tue Jan 24 23:11:11 EST 2017
(按时间顺序来看,最好在最后演示此方法)
# clipboard retained from the previous block
$ cb < foo
$ cb
Tue Jan 24 23:00:00 EST 2017
# note the minutes and seconds changed from 11 back to 00
cb --test
,它会在链接测试上挂起。 - Pablo Adames我写了这个小脚本,可以避免猜测复制/粘贴命令。
该脚本的Linux版本需要在系统中已安装xclip。该脚本名为clipboard。
#!/bin/bash
# Linux version
# Use this script to pipe in/out of the clipboard
#
# Usage: someapp | clipboard # Pipe someapp's output into clipboard
# clipboard | someapp # Pipe clipboard's content into someapp
#
if command -v xclip 1>/dev/null; then
if [[ -p /dev/stdin ]] ; then
# stdin is a pipe
# stdin -> clipboard
xclip -i -selection clipboard
else
# stdin is not a pipe
# clipboard -> stdout
xclip -o -selection clipboard
fi
else
echo "Remember to install xclip"
fi
脚本的OS X版本依赖于pbcopy和pbpaste,它们预装在所有 Mac 上。
#!/bin/bash
# OS X version
# Use this script to pipe in/out of the clipboard
#
# Usage: someapp | clipboard # Pipe someapp's output into clipboard
# clipboard | someapp # Pipe clipboard's content into someapp
#
if [[ -p /dev/stdin ]] ; then
# stdin is a pipe
# stdin -> clipboard
pbcopy
else
# stdin is not a pipe
# clipboard -> stdout
pbpaste
fi
使用这个脚本非常简单,因为你只需要像这两个示例中所示一样将输入或输出管道传递到clipboard
即可。
$ cat file | clipboard
$ clipboard | less
pbcopy
和pbpaste
命令,这样可以同时适用于Linux和苹果电脑(OS X)。 - StackedCrooked~/.scripts/clipboard
中chmod +x ~/.scripts/clipboard
~/.bashrc
的末尾添加export PATH=$PATH:~/.scripts
~/.config/fish/fish.config
中添加set PATH ~/.scripts $PATH
clipboard(){ ... }
,然后粘贴到.bashrc文件中。 - Sebastian Nowakdate | cb | tee -a updates.log
这样链接。这将把 date
命令输出发送到剪贴板,并将其传递给 tee -a
命令,该命令将其附加到文件并将其传递给 stdout
。但它就像是一个“防泄漏的剪贴板tee”,因为如果你只做 date | cb
,你就不会得到任何输出。最后,它还可以执行 cb > file.txt
https://gist.github.com/RichardBronosky/56d8f614fab2bacdd8b048fb58d0c0c7 - Bruno Bronoskyxclip -i -selection clipboard
为 xargs echo -n | xclip -i -selection clipboard
来实现这一点。 - Ivaylo Strandjevcat - | perl -pe 'chomp if eof' | xclip -selection clipboard
- Ivaylo Strandjev.bashrc
脚本的本地解决方案每个系统都使用自己的工具将剪贴板功能整合到命令行界面(CLI)中。这意味着,例如在Windows Subsystem for Linux(WSL)上使用Ubuntu CLI时,通常的xclip
解决方案将无法工作。在macOS上也是一样。
下表提供了不同系统所需的复制/粘贴工具概述:
操作系统 | 复制 | 粘贴 |
---|---|---|
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
解决方案只需将以下代码放入您的~/.bashrc
中,即可在所有系统上启用copy
和paste
的使用。该解决方案适用于“普通”的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
将以下内容添加到您的~/.bashrc
文件中:
# Now `cclip' copies and `clipp' pastes'
alias cclip='xclip -selection clipboard'
alias clipp='xclip -selection clipboard -o'
Now clipp pastes and cclip copies — but you can also do fancier stuff:
clipp | sed 's/^/ /' | cclip
↑ indents your clipboard; good for sites without stack overflow's { } button
您可以通过运行以下命令来添加:
printf "\nalias clipp=\'xclip -selection c -o\'\n" >> ~/.bashrc
printf "\nalias cclip=\'xclip -selection c -i\'\n" >> ~/.bashrc
对于 Mac,这是使用命令行复制(到剪贴板)并粘贴(从剪贴板)的示例方法
将 pwd
命令的结果复制到剪贴板中
$ pwd | pbcopy
使用计算机的粘贴快捷键或像下面这样的命令来使用剪贴板中的内容
$ cd $(pbpaste)
macOS:
your_command_which_gives_output | pbcopy
WSL / GNU/Linux (需要使用xclip软件包):
your_command_which_gives_output | xclip -sel clip
在Windows上使用Git Bash:
your_command_which_gives_output | clip
如果您正在通过SSH连接到服务器,并且不使用外部工具,这是一个相对简单的命令:
从Windows 7+命令提示符中:
ssh user@server cat /etc/passwd | clip
这将把远程文件的内容复制到您的本地剪贴板。
(此命令需要运行Pageant以获取密钥,否则它会要求您输入密码。)
echo Hello World | clip
。 - user7154703我正在使用 Parcellite 和 xsel
将最近一次的 git
提交信息复制到我的剪贴板管理器中(由于某些原因,xclip
不起作用):
$ git log -1 --pretty=%B | xsel -i -b
-i
is the default. I use a lot for eg xsel -b | sort | uniq -c | sort -rn | xsel -b
- Pablo Bianchi
apt install xclip
和cat file | xclip -sel clip
- EsmaeelE