当我在终端中使用命令时,如何将其输出导入到剪贴板并在需要时粘贴回来?例如:
cat file | clipboard
当我需要复制我的ssh密钥时,我通常运行以下命令:
cat ~/.ssh/id_rsa.pub | pbcopy
在任何地方,按下cmd+v
或ctrl+v
。
pbcopy < command
对我不起作用。 - galactica在 Wayland 上,xcopy 似乎不起作用,请使用 wl-clipboard 替代。 例如,在 Fedora 上:
sudo dnf install wl-clipboard
tree | wl-copy
wl-paste > file
对于那些在Windows系统上安装了bash(称为Windows子系统Linux(WSL))的用户,尝试使用xclip会出现错误:
Error: Can't open display: (null)
echo hello | clip.exe
这个功能允许你使用粘贴命令(ctrl-v)。
stdout
复制到剪贴板中,可以在终端中再次粘贴。请参见:https://sourceforge.net/projects/commandlinecopypaste/
请注意,此工具不需要X会话。剪贴板可以在终端中使用,不必通过Ctrl+V或者中键单击粘贴到其他X窗口中。我来自一个简化版的KDE背景,没有访问xclip、xsel或其他高级功能的权限。更糟糕的是,我只有TCSH Konsole。
要求:qdbus、klipper、xargs、bash
创建一个名为foo.sh
的bash可执行文件。
#!/bin/bash
qdbus org.kde.klipper /klipper setClipboardContents "$1" > /dev/null
注意: 这需要使用bash,因为TCSH不支持多行参数。
在.cshrc
中添加TCSH别名。
alias clipboard xargs -0 /path/to/foo
说明:
xargs -0
将标准输入管道传递到单个参数中。该参数被传递给bash可执行文件,它使用qdbus
向klipper
发送“复制到剪贴板”的请求。对/dev/null
的管道是为了不将qdbus
返回的换行字符打印到控制台上。
示例用法:
ls | clipboard
这将当前文件夹的内容复制到剪贴板中。
注意:仅作为管道使用。如果需要复制参数,请直接使用bash可执行文件。
对于使用Arch Linux的用户,这里有一个很好的解决方案。使用pacman安装xsel,如下所示:
sudo pacman -S xsel
alias pbcopy='xsel --clipboard --input'
alias pbpaste='xsel --clipboard --output'
source
source ~/.bashrc
cat your_file.txt | pbcopy
提醒一下,良好的做法是将所有别名存储在~/.aliases文件中,并在.bashrc文件中调用它。
如果你像我一样在寻找“如何将一个命令的输出复制到剪贴板以供下一个命令使用”的答案,那么这个解决方案对于Mac用户来说非常有效。
例如,我想简单地复制$ which postgres
的输出,以便我可以直接粘贴到我的下一个命令中。
我通过将第一个命令$ which postgres
与$ pbcopy
进行管道传输来解决了这个问题。
which postgres | pbcopy
然后我可以简单地按下 command + V,这将产生我想要的结果:
/usr/local/bin/postgres
根据之前的帖子,我得到了以下轻量级别名解决方案,可以添加到.bashrc
中:
if [ -n "$(type -P xclip)" ]
then
alias xclip='xclip -selection clipboard'
alias clipboard='if [ -p /dev/stdin ]; then xclip -in; fi; xclip -out'
fi
示例:
# Copy
$ date | clipboard
Sat Dec 29 14:12:57 PST 2018
# Paste
$ date
Sat Dec 29 14:12:57 PST 2018
# Chain
$ date | clipboard | wc
1 6 29
只是为了涵盖一个边缘情况:),因为问题标题询问(至少现在)如何直接将命令输出复制到剪贴板。
通常情况下,我发现在执行命令后复制其输出很有用,而我不想或无法再次执行该命令。
对于这种情况,我们可以使用gdm或类似的鼠标实用程序,并使用鼠标进行选择。apt-get install gdm
,然后使用右键单击或Cntrl + Shift + c和Cntrl + Shift + v组合键在终端中进行复制和粘贴。
或者,这是我首选的方法(因为当您在多个并排的窗格中具有一个窗格内无法正确选择时,鼠标无法正常选择,您需要选择多行时),我们可以使用tmux将内容复制到tmux缓冲区中,使用标准的[,空格,移动以选择,输入或选择一块代码。当您在cli多路复用器(如tmux)的一个窗格中,并且您需要选择一堆文本但不包括行号时,这特别有用(我的vim设置呈现行号)
之后,您可以使用以下命令:
tmux save-buffer - | xclip -i
apt install xclip
和cat file | xclip -sel clip
- EsmaeelE