它是可能的管道到/从剪贴板在Bash?

无论是连接到设备手柄还是使用辅助应用程序,我都找不到任何东西。

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

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

当前回答

一种从剪贴板粘贴到文件的方法,不需要任何工具,除了echo。

转义你想要粘贴的文本中的单引号:用“\”替换所有出现的“\”并将结果复制到剪贴板。 输入echo -n ' 按Shift +插入 输入' > filename.txt 按回车键

基本上你是这样做的:

Echo -n复制“text”带“\”单引号“\”转义“> filename.txt”

即使复制的文本有新的行,它也能工作。

其他回答

Mac版:

echo "Hello World" | pbcopy
pbpaste

它们位于/usr/bin/pbcopy和/usr/bin/pbpaste。

这是一个简单的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 |
                ||     ||

单独运行它只会输出剪贴板中的内容。

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"

当我运行缩进,剪贴板里的东西都会缩进。

对于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

在Windows上(使用Cygwin)尝试 Cat /dev/clipboard或echo "foo" > /dev/clipboard如本文所述。