如何快速删除命令?


168

我使用终端执行几乎所有任务。假设我输入了这样一个巨大的命令:

sudo a-huge-command

用单个快捷方式而不是继续按backspace击键来删除整个命令的最简单方法是什么?

我是Ubuntu的新手,希望以专业的方式使用Ubuntu。


13
还值得注意的是,您可以设置bash(以及其他几个shell)来了解vi键:set -o vi。然后esc,您可以执行,dd(或像在vi [m]中一样进行编辑/替换)。
韦恩·维尔纳

6
首页,“#”,输入
Alistair Buxton

5
这是一个便宜的技巧,但就其价值而言,我通常只是按向上箭头,直到我得到一个非常短的命令(例如ls),然后再按退格键-这通常只是几个按键,所以它并不是那么大交易。
肯尼·花生(KennyPeanuts)2012年

CTRL <-轻按两次通常可以让我回到查询的开始。.这是您的意思吗?
marc-andre benoit,2012年

Answers:


177

使用Ctrl+ U将文本从光标位置剪切到命令行开头。以后,如果需要,请使用Ctrl+ Y粘贴剪切的文本。

如果只想放弃当前命令行并获得新的干净提示,请按Ctrl+ C

有关更多参考,请查看Ubuntu文档中的“ 使用终端”


此答案适用于bash(Ubuntu默认)和tsch。
尼克(Nick)

我以为破折号是Ubuntu的默认设置?
克里斯

15
dash/bin/sh命令的默认解释器。bash是默认的登录名和TTY shell。
darvids0n 2012年

9
我发现Ctrl + C这是个坏习惯,因为我经常会不小心按照自己的提示向程序发送信号,杀死它们并失去进度和/或动力。
user606723 2012年

111

Ctrl+ U应该可以帮助您。

以下是可用的其余选项。从这里

UNIX可以理解几个控制键命令,这些命令是您在按住第二个键的同时按住控制键(ctrl)输入的

CTRL+ S-冻结屏幕并停止继续显示屏幕上的任何内容(等效于无滚动键)(有时需要一些时间才能工作)

CTRL+ Q-解冻屏幕并让屏幕继续显示

CTRL+ C-中断正在运行的程序

CTRL+ \-与CTRL-C相同,但强度更高(在终端不响应时使用)

CTRL+ Z-挂起正在运行的程序(使用fg命令继续执行该程序,请参见s $

CTRL+ H-删除最后输入的字符

CTRL+ W-删除键入的最后一个单词

CTRL+ U-删除最后输入的行

CTRL+ R-从历史记录中搜索文本

CTRL+ D-结束许多UNIX程序的文本输入,包括邮件和写入。

注意:

当我们使用CTRL+ WCTRL+ 删除时U,我们还将执行(编辑)“剪切”(拉入)操作(删除并存储在缓冲区/剪贴板中)。要将字符串粘贴(抽出)到缓冲区/剪贴板中,请使用CTRL+ Y


7
实际上ctrl -r从历史记录中搜索文本。
埃里克·卡瓦略

@EricCarvalho你是对的。从答案中删除该选项。
devav2 2012年

2
这些是通用的UNIX控制代码。默认的ubuntu终端是基于bash的,这是不同的。
OrangeDog 2012年

Ctrl-U将从光标删除到行首。我经常通过将光标放在历史记录命令的参数之前来使用它。这样,我可以使用相同的参数键入新命令-例如将更少的文件更改为kate文件,以便在查看文件后查看是否需要进行任何编辑。

1
@OrangeDog-很好-我在Ubuntu bash终端中使用了所有这些,除了CTR- \。
belacqua

61

我通常使用Alt+ Backspace。如果您正在使用bash,这将让你删除,直到前一个特殊字符(/;等)。如果使用zsh,它将同时删除斜线和分号。它比击中要快得多Backspace

在中bash,与Ctrl+的不同之处w在于Ctrl+ w删除了前一个单词,而Alt+ Backspace删除了直到找到前一个特殊字符。在中zsh,两个组合键都做同样的事情


8
Ctrl + W执行相同的操作。
hytromo

但是不适用于rxvt之类的终端。
sqram 2012年

1
@lyrae对我来说,它在rxvt中可以完美运行,尽管在xterm中却不能。并且仅在set -o emacs设置时有效。
Marco Marco

我使用ALT+Backspace以及CTRL+C。这适用于任何Linux。:)
tftd 2012年

@hakermania:不,不同。按Ctrl + W删除一个字和Alt + Backspace键删除,直到前一个特殊字符(/;,``等)。
jobin 2014年

35

这是可与外壳一起使用的键盘快捷键的清单bash

Ctrl + A    Go to the beginning of the line you are currently typing on
Ctrl + E    Go to the end of the line you are currently typing on
Ctrl + L    Clears the Screen, similar to the clear command
Ctrl + U    Clears the line before the cursor position. If you are at the end of the line, clears the entire line.
Ctrl + H    Same as backspace
Ctrl + R    Lets you search through previously used commands
Ctrl + C    Kill whatever you are running or start a new prompt
Ctrl + D    Exit the current shell
Ctrl + Z    Puts whatever you are running into a suspended background process. fg restores it.
Ctrl + W    Delete the word before the cursor
Ctrl + K    Clear the line after the cursor
Ctrl + T    Swap the last two characters before the cursor
Esc + T     Swap the last two words before the cursor
Alt + F     Move cursor forward one word on the current line
Alt + B     Move cursor backward one word on the current line
Tab         Auto-complete files and folder names

您想要做的是通过在行尾使用Ctrl+ CCtrl+ 来实现的U


这是最完整的列表,尽管最佳答案是Ctrl+C或(Ctrl+E Ctrl+U
New Alexandria

我感兴趣的列表中有多少适用于tcsh?
TCSGrad 2012年

@ shan23阅读man tcsh或使用的“编辑器命令”部分bindkey -l。看起来很不一样。
OrangeDog 2012年

请注意,如果您将vi绑定用于bash(或其他shell)的Readline,则其中某些操作将失败。这些也应该主要适用于tcsh。这些早熟的狂欢。bash还从csh / tcsh合并了许多不错的历史记录快捷方式。
belacqua

25

Alt+ #(即,Alt+ Shift+ 3)会注释掉当前命令,并继续对下一行。

例如,如果你输入testAlt+ #,你会得到:

you@computer$ #test
you@computer$ 

如果你希望得到您的旧的命令回来了,你可以按向上键和删除哈希字符(UpHomeDeleteUpCtrl+ ADelete)。

我认为这是GNU Readline的功能,因为它可以在Bash,Python和MySQL中使用。


22

Ctrl+ C-除了中断正在运行的命令外,它还可用于“中断”命令行输入。

Ctrl+相比U,您仍然会看到您键入的内容,但是光标将跳到新行,并且您将得到一个空的命令行提示符。


4
我之所以喜欢这样做,仅仅是因为肌肉记忆力强,您仍然可以复制/粘贴任何重要内容,因为中止的命令行会保留在那里。
ish 2012年

8

当您在命令行上工作时,Bash readline快捷方式Ctrl+ X+ E确实非常有用。如果您正在输入一个长命令,并决定要在默认文本编辑器中将其打开,则只需使用快捷键即可。

它利用了Bash的readline库,这个特定的快捷方式称为edit-and-execute-command。您可以通过放置export EDITOR="/usr/bin/vi"~/.bashrc或中来设置默认编辑器~/.bash_aliases

输入bind -P以查看您当前的readline绑定,并参考man readline在线Ubuntu手册页以获取更多信息。


7

我还使用Esc+ Backspace删除所有以前的字符,直到一个特殊字符为止。这是Alt+ Backspace。如果您一次只删除几个单词,则非常方便。


3

对于vi键绑定

当使用vi键映射时,例如in bashset -o viin或in zshbindkey -v

插入方式

它与默认/ emacs模式下的击键相同:

Ctrl+U

从当前位置删除到行首。因此,如果光标位于末尾,它将删除整行。

正常模式

有两种方法可以通过两次击键删除该行:

dd逐行删除,默认计数为一行:

dd

就触摸按键而言,这是最简单的。

另一种方法是:用转到行的开头^,然后用删除到行的结尾D

^D

它们都删除了整行,不仅删除了整个行,​​例如插入模式中的Ctrl+ U或变种bleow。

如果您当前位于行尾,则无需删除右侧的任何内容,这也可以:

从此处删除d,开始以下行^

d^

您可以在插入模式下使用所有这些功能,首先需要通常的转义才能进入正常模式。例如,要从插入模式中删除整行,请使用:

Escdd

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.