当前位置:  开发笔记 > 编程语言 > 正文

在Bash脚本中管道往返剪贴板

如何解决《在Bash脚本中管道往返剪贴板》经验,为你挑选了14个好方法。

是否可以在Bash中管道进出剪贴板?

无论是与设备手柄之间的管道连接还是使用辅助应用程序,我找不到任何东西.

例如,如果/dev/clip是链接到剪贴板的设备,我们可以这样做:

cat /dev/clip        # Dump the contents of the clipboard
cat foo > /dev/clip  # Dump the contents of "foo" into the clipboard

lhunath.. 803

你有点暧昧.我希望你可能是X内部想要把东西放在X xclip剪贴板中的Linux用户.

重要的是要了解xclip -selection c没有剪贴板.没有"剪贴板"这样的东西,因为pbcopy可以在Windows,Mac OS X,许多其他操作系统,X内部,X外部运行......更不用说X本身有三个不同的剪贴板.你可以处理很多剪贴板.通常,您要与之交谈的剪贴板具有一个实用程序,可让您与之交谈.

在X的情况下,是的,有gpm(和其他人).screen将数据发送到剪贴板,在大多数应用程序中使用Ctrl-C,Ctrl-V.

如果您正在尝试与Mac OS X剪贴板通信,那就是readreg.

如果您处于Linux终端模式(没有X),那么您可能需要查看/dev/clipboard.

还有GNUclip,它有一个剪贴板.要把东西放在那里,看看xclip命令" xclip -selection c".

在Windows/cygwin下,使用pbcopygpm用于较新版本的Windows(至少Windows 10).



1> lhunath..:

你有点暧昧.我希望你可能是X内部想要把东西放在X xclip剪贴板中的Linux用户.

重要的是要了解xclip -selection c没有剪贴板.没有"剪贴板"这样的东西,因为pbcopy可以在Windows,Mac OS X,许多其他操作系统,X内部,X外部运行......更不用说X本身有三个不同的剪贴板.你可以处理很多剪贴板.通常,您要与之交谈的剪贴板具有一个实用程序,可让您与之交谈.

在X的情况下,是的,有gpm(和其他人).screen将数据发送到剪贴板,在大多数应用程序中使用Ctrl-C,Ctrl-V.

如果您正在尝试与Mac OS X剪贴板通信,那就是readreg.

如果您处于Linux终端模式(没有X),那么您可能需要查看/dev/clipboard.

还有GNUclip,它有一个剪贴板.要把东西放在那里,看看xclip命令" xclip -selection c".

在Windows/cygwin下,使用pbcopygpm用于较新版本的Windows(至少Windows 10).


请注意,`xclip -selection c`将在大多数应用程序中将数据发送到与^ C,^ V一起使用的剪贴板
cygwin:[/ dev/clipboard](http://williammitchell.blogspot.com/2008/03/fun-with-cygwins-devclipboard.html)
在较新的Windows版本中,您可以像这样使用`clip`:`dir | clip`
在Windows上,`/ dev/clipboard`也适用于Msys/MinGW bash shell
令人遗憾的是,GNU/Linux没有像`/ dev/clipboard`这样的设备,并且强制安装xclip,默认情况下至少在Kubuntu*中缺少gpm(我猜大多数其他发行版也是如此)*.

2> doug..:

确保您使用别名,xclip="xclip -selection c" 否则您不能只使用Ctrl+ v将其粘贴到其他位置.

echo test | xclip    

Ctrl+v === test


因为我在osx和linux之间来回走动,所以我的dotfiles中有以下内容.`alias pbcopy ="xclip -selection c"``alias pbpaste ="xclip -selection clipboard -o"`希望有所帮助.
`xclip -selection clipboard -o`
@ApockofFork,`xclip`不添加换行符,`echo`是.试试`printf test | xclip -i -selection clipboard`.(`printf`除非你写''test \n'`,否则不会添加换行符.)
或者使用`echo -n`代替`printf`.

3> tleb..:
安装
# You can install xclip using `apt-get`
apt-get install xclip

# or `pacman`
pacman -S xclip

# or `dnf`
dnf install xclip

如果您没有访问apt-get,也没有pacman,也没有dnf,来源可在SourceForge上.

建立

巴什

~/.bash_aliases,添加:

alias setclip="xclip -selection c"
alias getclip="xclip -selection c -o"

不要忘记使用. ~/.bash_aliases或重新启动配置文件来加载新配置.

~/.config/fish/config.fish,添加:

abbr setclip "xclip -selection c"
abbr getclip "xclip -selection c -o"

不要忘记通过重新启动终端来重新启动fish实例以应用更改.

用法

您现在可以使用setclipgetclip,例如:

$ echo foo | setclip
$ getclip
foo


对于所有其他发行版:您可以从http://sourceforge.net/projects/xclip/下载源代码

4> jtruelove..:

在macOS上使用内置pbcopypbpaste命令.

例如,如果你跑

cat ~/.bashrc | pbcopy

~/.bashrc文件的内容可用于使用Cmd+ v快捷键进行粘贴.



5> Zoredache..:

尝试

xclip

xclip - command line interface to X selections (clipboard) 



6> Andrew_1510..:

在Debian/Ubuntu/Mint上的xsel

# append to clipboard:
cat 'the file with content' | xsel -ib

# or type in the happy face :) and ...
echo 'the happy face :) and content' | xsel -ib

# show clipboard
xsel -b

# Get more info:
man xsel

安装

sudo apt-get install xsel



7> thebunnyrule..:

哇,我简直不敢相信这个问题有多少答案.我不能说我已经尝试了所有这些,但我已经尝试了前3或者4,但它们都不适合我.对我有用的是一个答案,该答案位于一个名为doug的用户写的评论中.由于我觉得它很有帮助,我决定重新回答一下.

安装xcopy实用程序,当您在终端时,输入:

复制

Thing_you_want_to_copy|xclip -selection c

myvariable=$(xclip -selection clipboard -o)

我注意到很多答案推荐pbpaste和pbcopy.如果您使用这些实用程序但由于某些原因它们在您的仓库中不可用,您可以随时为xcopy命令创建别名并将其命名为pbpaste和pbcopy.

alias pbcopy="xclip -selection c" 
alias pbpaste="xclip -selection clipboard -o" 

那么它看起来像这样:

Thing_you_want_to_copy|pbcopy
myvariable=$(pbpaste)



8> Evan Conrad..:
2018回答

使用clipboard-cli.它适用于macOS,Windows,Linux,OpenBSD,FreeBSD和Android,没有任何实际问题.

安装它:

npm install -g clipboard-cli

那你可以做

echo foo | clipboard

如果你愿意,你可以别名cb通过把你的下面.bashrc,.bash_profile.zshrc:

alias cb=clipboard


@Stas,我希望如此,它是由最多产的节点贡献者Sindresorhus(https://github.com/sindresorhus)制作的。他负责Ava测试库,xo linter,Yeoman和无数其他项目。他还负责无数这样的小型图书馆,这些图书馆将他的代码集中存储在互联网上几乎所有使用JS的网站上。这并不是说他不会受到影响;只是对他的回购协议的关注程度和他自己的声誉使得它比大多数随机npm回购协议的可能性要小得多。
您确定这是一个安全的`npm`软件包吗?

9> knowledge_is..:

在Windows子系统上,您可以使用clip.exe将其复制到剪贴板.

cat file | clip.exe

请记住使用|管道命令.而不是>命令,因为那不起作用.



10> Wolfgang Fah..:

这是一个随时可用的bash脚本,用于读取可在多个平台上运行的剪贴板.如果您添加功能(例如更多平台),请在此处编辑脚本.

#!/bin/bash
# WF 2013-10-04
# multi platform clipboard read access
# supports
#   Mac OS X
#   git shell / Cygwin (Windows)
#   Linux (e.g. Ubuntu)

#
# display an error
#
error() {
  echo "error: $1" 1>&2
  exit 1
}

#
# getClipboard
#
function getClipboard() {
 os=`uname`
      case $os in 
        # git bash  (Windows)
        MINGW32_NT-6.1)
          cat /dev/clipboard;;
        # Mac OS X
        Darwin*)
          pbpaste;;  
        # Linux 
        Linux*)
          # works only for X clipboard - a check that X is running might be due
          xclip -o;;
        *)
          error "unsupported os $os";;
      esac
}

tmp=/tmp/clipboard$$
getClipboard >$tmp
cat $tmp
# comment out for debugging
rm $tmp



11> Norman H..:

在Windows(Cygwin的)尝试 cat /dev/clipboardecho "foo" > /dev/clipboard在提到这个文章.



12> Sunny Mileno..:

Linux中有不同的剪贴板; X服务器有一个,窗口管理器可能有另一个,等等.没有标准设备.

哦,是的,在CLI上,屏幕程序也有自己的剪贴板,就像其他一些应用程序一样,如Emacs和vi.

在X中,您可以使用xclip.

您可以查看此主题以获取其他可能的答案:http: //unix.derkeiler.com/Newsgroups/comp.unix.shell/2004-07/0919.html


听起来创建/ dev/clip对某人来说是一个很好的项目.
我完全知道多个剪贴板。这如何使我的问题难以回答?

13> 小智..:

仅适用于Mac:

echo "Hello World" | pbcopy
pbpaste

这些位于/usr/bin/pbcopy/usr/bin/pbpaste.



14> Stenemo..:

复制并粘贴到Windows中的剪贴板(Cygwin):

看到:

$ clip.exe - ?

CLIP描述:将命令行工具的输出重定向到Windows剪贴板.然后可以将此文本输出粘贴到其他程序中.参数列表:/?显示此帮助消息.示例:DIR | CLIP将当前目录列表的副本放入Windows剪贴板.CLIP

还存在getclip(可以代替shift + ins!),putclip(echo oaeuoa | putclip.exe把它放到剪辑中)

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有