如何将粘贴重定向至文件?

如何将粘贴重定向至文件?

我从一个 Web 终端复制了一封很长的电子邮件(原始文本)。我可以将其粘贴到终端中,但我想将其提供给sa-learn。我在想我可以在这里做的一件事就是使用 heredoc。此语法似乎有效。

$ echo <<EOF | sa-learn --spam
<paste email>
EOF

然而,它似乎不起作用......

$ echo <<EOF > foo
AOSJFDOASDFJKOK
EOF

$ cat foo
(nothing)

在 bash 中 heredoc 是如何工作的?

答案1

echo打印其参数并忽略stdin<<EOF ... EOF(a这里的文件/定界符) 写入stdin。正如您所注意到的,cat从 读取stdin(并将其写出),因此它确实读取了 heredoc。由于sa-learn从 读取stdin,它还会读取heredoc

答案2

对于任何读过这个问题并且恰好使用 Mac OS X 的人,请查看pbpaste(1)。它会获取剪贴板上的所有内容(NeXTStep 过去将其称为粘贴板,而 Cocoa API 仍然如此,因此使用“pb”)并将其输出到stdout。因此在 Mac 上,您可以使用以下方式执行此操作:

pbpaste | sa-learn --spam

另请注意相关的pbcopy(1)

答案3

我想知道Ctrl+ X, Ctrl+E是否有帮助。

它允许你快速打开编辑器来编写长命令。似乎还有备择方案

相关内容