如何在不使用鼠标的情况下快速获取终端中的上一行输出?

Dan*_*iel 14 terminal bash shell ubuntu

Linux(例如Ubuntu)终端,有没有办法得到最后一行?假设我随机输入一个td命令,该命令尚未安装在我的系统上,因此我会收到如下消息。我想有一个“捷径”来sudo apt-get install textdraw快速运行。

有没有这样的工具,或者如何在不使用鼠标的情况下将最后一行复制到剪贴板?

username@WorkStation:~$ td
The program 'td' is currently not installed. You can install it by typing:
sudo apt-get install textdraw
username@WorkStation:~$
Run Code Online (Sandbox Code Playgroud)

Alp*_*pha 7

如果你不介意一点淫秽(我不介意),你可能想使用他妈的,一个完全符合你要求的工具。

嗯,不完全是,但它解决了同样的问题。它不只是获取最新的行,而是尝试匹配您键入的最后一个命令。

The Fuck 尝试为上一个命令匹配规则,使用匹配的规则创建一个新命令并运行它。

存储库中显示的示例显示了您提到的几个场景。

在此处输入图片说明


Tho*_*key 2

简短的回答:不,可能您没有可用的方法来执行此操作。

长答案:

  • 虽然可以一个终端模拟器,它允许您“仅”读回屏幕内容并进行编辑,但实际上,由于担心某些不需要的程序可能会窥探您的键盘输入,因此并不经常这样做。
  • 可以设计一个 shell来捕获命令的输出并允许您对其进行编辑(就像命令历史记录一样)。如果命令类似于vi(输出不是漂亮的面向行的文本),那么事情就会变得复杂。无论如何,bash 不会这样做。

在实践中,人们为了解决这个限制所做的就是使用其他程序来捕获命令输出并对其进行编辑。但这并不能解决你眼前的问题。

例如,我使用vi-like-emacs来发出临时 shell 命令。如果这些不需要进一步的输入,那么在窗口中运行它们、捕获命令的输出并根据需要编辑输出以完善命令会很好。Emacs 和 vim 也允许你做类似的事情。