pbcopy & pbpaste:从命令行操作剪贴板

8 min read

对于几乎所有计算机用户来说,复制和粘贴是绝对必要的,如果您发现自己经常在命令行中工作,您会想知道如何直接从终端提示符操作 Mac OS X 的剪贴板。这就是 Mac 命令 pbcopy 和 pbpaste 的用途,正如您可能已经猜到的那样,这两个命令的作用与听起来完全一样, pbcopy 用于复制,而 pbpaste 用于通过命令行粘贴。它们实际上非常强大,下次您使用 bash、tcsh、zsh 或任何您喜欢的 shell 提示符时,您一定会发现它们很有用。

我们将简要介绍如何使用 pbcopy 和 pbpaste 来操作剪贴板数据,并通过一些示例说明如何将终端命令的输出重定向为剪贴板的输入,当然还有如何 驱逐 (开除) 使用 pbpaste 将剪贴板的内容放入命令行。

在 Mac 上从命令行使用 pbcopy 和 pbpaste

pbcopy:接受标准输入并将其放入剪贴板缓冲区

pbcopy 使用起来很简单,基本上是直接将一些东西放入其中,然后将其复制到剪贴板缓冲区中。然后可以通过 pbpaste 或标准 Finder 的粘贴命令 (command-v) 访问它。以下是如何使用它:

$ pbcopy < file.txt

就是这样,现在 file.txt 的内容将在您的剪贴板中,随时可以粘贴。但是 pbcopy 比这强大得多,您也可以直接复制命令和程序的输出。这是命令“ps”的示例:

$ ps aux | pbcopy

这会将 ps 命令的结果通过管道传输到剪贴板,它可以再次粘贴到任何地方。如果你想稍微过滤一下你的结果,你也可以 throw 这样做。使用 grep 命令的示例是:

$ ps aux | grep root | pbcopy

这通过管道传输“ps aux”命令的结果,但专门针对“root”进行过滤,并且仅将这些结果复制到剪贴板中。酷吧?

pbpaste:从剪贴板缓冲区获取数据并将其写入标准输出

pbpaste 使用起来同样简单,它会检索您放在剪贴板缓冲区中的任何内容并将其吐出。以最简单的形式,只需键入:

$ pbpaste

这将打印您从 pbcopy 命令或 Finder 的复制命令 (command-c) 复制的任何数据。如果需要,您可以通过命令行轻松将此输出路由到文件中,以便稍后访问,使用以下简单命令:

$ pbpaste > pastetest.txt

过滤粘贴的内容非常有用,而且命令结构很像我们之前在 pbcopy 中看到的。我们将过滤“rcp”,但您当然可以过滤任何您想要的内容

$ pbpaste | grep rcp

您将看到粘贴的内容仅与您在剪贴板中的数据中搜索“rcp”相匹配。