如何在Linux的Bash Shell中复制和粘贴文本

想要在Bash shell的命令行复制和粘贴吗?无论您喜欢键盘还是鼠标,我们都将向您展示多种技术。无论您是在图形桌面上还是在传统的基于文本的TTY上,它们都可以工作。

通常的键盘快捷键不起作用

复制和粘贴文本是使用计算机的主要部分。当人们最初几次使用Linux电脑时,无论他们来自Windows还是MacOS世界,当他们试图在终端窗口内进行复制和粘贴时,他们往往会感到困惑。

在Windows中,使用Ctrl+C复制高亮显示文本的一部分,使用Ctrl+V粘贴它。在MacOS中,您可以使用Command+C复制它,使用Command+V粘贴它。它们遵循C复制和V插入的相同约定。

同样的击键也适用于大多数Linux图形应用程序,例如编辑器Gedit或LibreOffice办公套件。Ctrl+C复制高亮显示的文本,而Ctrl+V则将其粘贴到光标上。我们Linux的新手可能甚至没有考虑到这些约定已经延续到了这些应用程序中。他们使用肌肉记忆中的按键,然后继续他们的工作。

一旦我们的新手打开终端窗口,并试图在Bash shell命令提示符下复制和粘贴,一切都改变了。早在复制和粘贴被考虑之前很久,Ctrl+C和Ctrl+V就被分配了功能。事实上,这些击键在图形shell发明之前很久就被招募了,回到电传打字(TTY)还是一种物理东西的时候。

TTY中的Ctrl+C和Ctrl+V

当TTY是物理设备时,选择Ctrl+C作为生成信号的便捷组合键。该信号是SIGINT,它告诉当前进程终止。因为终端窗口是仿真的TTY,所以在仿真中保留并复制了击键组合(和许多其他的)。请注意,终端窗口才是仿真。Bash shell是在仿真TTY中运行程序。

我们可以很容易地看到已分配给Ctrl+C和Ctrl+V的函数。假设您键入以下命令并按“Enter”。

ls -R /

因为我们使用的是-R(递归)选项,ls命令将从根目录开始列出每个文件和目录。几分钟后,您意识到这不是您想要的,因此您可以通过按Ctrl+C来终止该过程。

Ctrl+C

ls进程终止。屏幕截图中突出显示了Ctrl+C的可见证据。它显示为^C。

Ctrl+V组合键调用“逐字插入”。这允许您在键入的内容中输入键的表示形式,而不是获得键的效果。要查看这一点,请尝试以下命令(不要键入逗号)。(例如,要尝试第一个,请按Ctrl+V,然后按Enter。)

Ctrl+V, EnterCtrl+V, PgDnCtrl+V, RightArrowCtrl+V, Esc

顺便提一下,您可能会注意到Enter由^M表示。我们在前面看到,Ctrl+C显示为^C。看起来,^代表Ctrl。因此,Ctrl+M的意思可能与Enter相同。这是否意味着我们可以通过键入Ctrl+M进入?在终端窗口中尝试。你会看到它确实起作用了。

因此,很明显,当Ctrl+C和Ctrl+V已经分配了历史悠久的功能时,我们不能指望它们执行复制和粘贴文本。那么我们能用什么呢?

相关:如何使用键盘快捷键提高Ubuntu的工作效率

Ctrl+Shift+C和Ctrl+Shift+V

很容易记住,因为它们与对应的Ctrl+Shift+C和Ctrl+Shift+V非常相似,所以Ctrl+Shift+V是Ctrl+C和Ctrl+V的直接替代。

如果您用鼠标突出显示终端窗口中的文本并按下Ctrl+Shift+C,则会将该文本复制到剪贴板缓冲区中。

Ctrl+Shift+C

可以使用Ctrl+Shift+V组合键将复制的文字粘贴到同一终端窗口或其他终端窗口。

Ctrl+Shift+V

您还可以粘贴到图形应用程序(如Gedit)中。但请注意,当您粘贴到应用程序(而不是终端窗口)时,必须使用Ctrl+V。

你也可以走另一条路。您可以高亮显示Gedit中的文本并按Ctrl+C,然后使用Ctrl+Shift+V将其粘贴到终端窗口中。

Ctrl+Insert组合键与Ctrl+Shift+C组合键相同,Shift+Insert组合键与Ctrl+Shift+V组合键相同。这里需要注意的是,这些组合键只能在同一个终端窗口中使用。

使用鼠标:右键单击

您可以使用鼠标在终端窗口中复制和粘贴。您必须使用鼠标突出显示要复制的文本,那么为什么不使用它来执行复制和粘贴操作呢?

突出显示一些文本后,用鼠标右键单击,然后从上下文菜单中选择“复制”。

要粘贴复制的文本,请再次用鼠标右键单击,然后从上下文菜单中选择“粘贴”。

文本被粘贴到命令行上光标的位置。*在本例中,给出的相对路径不正确,Bash无法更改目录。用户错过了路径开头的“~/”。他们键入了“~/”,然后复制了上一次尝试中路径的其余部分,并将其粘贴到第二个命令行中。

当它们按Enter键时,它们将被移动到目录。

此示例显示了粘贴到同一终端窗口中,但是您可以使用此右键单击技术将其粘贴到不同的终端窗口中。您还可以使用此方法粘贴到图形应用程序中。

使用鼠标:中键

还有一种使用鼠标复制和粘贴的更快的方法,只要你的鼠标有中键。如果你向下按你的滚轮(轻轻地!)。它发出咔哒声,你就有了一个中键。

突出显示终端窗口中的一些文本,然后按中键。高亮显示的文本将粘贴到命令行上的光标位置。复制和粘贴同时进行。

因此,突出显示一些文本:

然后按下您的中键:

您可以使用此方法在不同的终端窗口之间粘贴,也可以粘贴到图形应用程序中。只需突出显示文本,移动到另一个终端窗口或应用程序,然后按下您的中键。

老派--没有鼠标

如果你没有老鼠怎么办?如果不能突出显示任何文本,如何复制和粘贴呢?

Linux服务器通常配置为没有图形桌面环境(GDE),这意味着您无法访问鼠标。即使在运行GNOME这样的图形桌面环境的Linux计算机上,并且您确实有鼠标,也会出现无法使用鼠标突出显示文本的情况。

例如,您可能已经切换到其他TTY之一。在现代发行版中,它们位于Ctrl+Alt+F3(TTY3)到Ctrl+Alt+F6(TTY6)。(Ctrl+Alt+F2将返回您的GDE会话,Ctrl+Alt+F1将带您进入GDE的登录屏幕。)

也许您甚至正在使用真正的硬件TTY设备连接到Linux或Unix计算机。

无论哪种方式,这些技术都会对您起作用。这里要记住的一点是,这不是复制和粘贴,而是剪切、复制和粘贴,您只能从当前命令行剪切和复制。当然,您可以使用箭头键滚动历史记录以查找要从中剪切、复制和粘贴的命令行。

您可以使用的按键有:

Ctrl+W:剪切光标前的单词,并将其添加到剪贴板缓冲区。 Ctrl+K:剪切光标后的那部分行,并将其添加到剪贴板缓冲区。如果光标位于行的开头,它将剪切并复制整行。 Ctrl+U:剪切光标之前的那一行,并将其添加到剪贴板缓冲区,如果光标在行尾,则剪切并复制整行。 Ctrl+Y:粘贴剪切和复制的最后一个文本。

让我们跳到TTY3。(之后使用Ctrl+Alt+F1返回桌面。)

Ctrl+Alt+F3tty

我们有一个要删除的文件,让我们检查一下它在这里。

ls -l file_to_delete.txt

如果我们使用向上箭头键,我们将从命令历史记录中调用我们使用的最后一个命令。我们可以只编辑此行,但目的是演示剪切、复制和粘贴,因此我们将以稍微延长的方式完成删除文件的任务。

我们将光标移动到文件名的第一个字母,然后按Ctrl+K。这将删除该行的这一部分,并将文本复制到剪贴板缓冲区。

我们将按Backspace键,直到我们清除线条。

我们将键入RM以删除该文件。

现在我们可以按Ctrl+Y并粘贴该行的其余部分。

这就完成了我们的命令,我们可以按Enter键删除该文件。

此类型的剪切、复制和粘贴不能在其他TTY之间使用。例如,不能在TTY3和TTY4之间剪切、复制和粘贴。

额外的TTY最好被认为是一排并排坐着的物理TTY。无法在不同的物理终端之间剪切和粘贴,在这些仿真中也无法做到这一点。

收到,控制中心

无论您在使用Linux计算机时处于什么情况,都会有一种复制和粘贴的方法。你有选择的余地。其中一些是奇怪的选择,但至少有选择。

相关文章