它是可能的管道到/从剪贴板在Bash?
无论是连接到设备手柄还是使用辅助应用程序,我都找不到任何东西。
例如,如果/dev/clip是一个连接到剪贴板的设备,我们可以这样做:
cat /dev/clip # Dump the contents of the clipboard
cat foo > /dev/clip # Dump the contents of "foo" into the clipboard
它是可能的管道到/从剪贴板在Bash?
无论是连接到设备手柄还是使用辅助应用程序,我都找不到任何东西。
例如,如果/dev/clip是一个连接到剪贴板的设备,我们可以这样做:
cat /dev/clip # Dump the contents of the clipboard
cat foo > /dev/clip # Dump the contents of "foo" into the clipboard
当前回答
Try
xclip
xclip - command line interface to X selections (clipboard)
man
其他回答
对于mac,你可以使用这个函数,它使用pbcopy和pbpaste,但更简单:
将此添加到你的.bashrc或.zshrc:
clp() {
if [[ -z "$1" ]]
then
# No input - act as paste
pbpaste;
else
# Input exists - act as copy
echo "$1" | pbcopy;
fi
}
复制使用clp“Content”,粘贴使用clp
Ruby的联机程序启发我尝试使用Python。
假设我们想要一个命令,将剪贴板中的任何内容缩进四个空格。它非常适合在Stack Overflow上共享代码片段。
$ pbpaste | python -c "import sys
for line in sys.stdin:
print(f' {line}')" | pbcopy
这不是打字错误。Python需要换行符来执行for循环。我们希望在一次传递中更改行,以避免在内存中构建额外的数组。
如果你不介意构建额外的数组尝试:
$ pbpaste | python -c "import sys; print(''.join([f' {l}' for l in sys.stdin]))" | pbcopy
但老实说,awk在这方面比python更好。我在~/中定义了这个别名。bashrc文件(
alias indent="pbpaste | awk '{print \" \"\$0}' | pbcopy"
当我运行缩进,剪贴板里的东西都会缩进。
这是一个简单的Python脚本,可以满足你的需要:
#!/usr/bin/python
import sys
# Clipboard storage
clipboard_file = '/tmp/clipboard.tmp'
if(sys.stdin.isatty()): # Should write clipboard contents out to stdout
with open(clipboard_file, 'r') as c:
sys.stdout.write(c.read())
elif(sys.stdout.isatty()): # Should save stdin to clipboard
with open(clipboard_file, 'w') as c:
c.write(sys.stdin.read())
将其保存为路径中的可执行文件(我将其保存到/usr/local/bin/clip.)你可以输入要保存到剪贴板上的内容。
echo "Hello World" | clip
你可以将剪贴板中的内容传输到其他程序……
clip | cowsay
_____________
< Hello World >
-------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
单独运行它只会输出剪贴板中的内容。
在Windows子系统for Linux (WSL)上,您可以使用clip.exe复制到剪贴板:
cat file | clip.exe
请记住使用|管道命令。而不是>命令,因为这将不起作用。
如果您像我一样在没有根权限的Linux服务器上运行,并且没有任何xclip或GPM,您可以通过使用临时文件来解决这个问题。例如:
$ echo "Hello, World!" > ~/clip
$ echo `cat ~/clip`
Hello, World!