Как быстро удалить мои команды?

168

Я использую терминал почти для всех задач. Допустим, я ввел такую ​​огромную команду:

sudo a-huge-command

Какой самый простой способ удалить всю команду с помощью одного ярлыка, а не продолжать нажимать backspaceклавишу?

Я новичок в Ubuntu и хочу профессионально использовать Ubuntu.

Бэтмен
источник
13
Также стоит отметить , что вы можете установить bash(и несколько других оболочек) , чтобы понять ключи VI: set -o vi. Вы могли бы сделать esc, dd(или иным образом изменить / заменить , как вы могли бы сделать в VI [м]).
Уэйн Вернер
6
Главная, '#', Enter
Алистер Бакстон,
5
это дешевый хак, но для чего бы это ни стоило, я обычно просто нажимаю стрелку вверх, пока не доберусь до действительно короткой команды (например, ls), а затем backspace - обычно это всего пара нажатий клавиш, так что это не так уж и много. ' по рукам.
KennyPeanuts
CTRL <- нажатие пару раз, как правило, позволяет вернуться к началу моего запроса ... это то, что вы имеете в виду?
Marc-Andre Benoit

Ответы:

177

Используйте Ctrl+, Uчтобы вырезать текст из позиции курсора в начало командной строки. Позже, если вы хотите, используйте Ctrl+, Yчтобы вставить вырезанный текст.

Если вы просто хотите отменить текущую командную строку и получить новую чистую подсказку, нажмите Ctrl+ C.

Для получения дополнительной информации, пожалуйста, проверьте документацию Ubuntu для использования терминала

Эрик Карвалью
источник
Этот ответ работает как для bash (Ubuntu по умолчанию), так и для tsch.
Ник
Я думал, что черта была Ubuntu по умолчанию?
Крис
15
dashявляется интерпретатором по умолчанию для /bin/shкоманд. bashэто логин по умолчанию и оболочка TTY.
darvids0n
9
Я считаю, Ctrl + Cчто это плохая привычка, поскольку я часто случайно посылаю сигналы программам с их собственным запросом, убивая их и теряя свой прогресс и / или импульс.
user606723
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+ Wили CTRL+ U, мы также выполняем (редактировать) операцию «вырезать» (вставить) (удалить и сохранить в буфере / буфере обмена). Чтобы вставить (извлечь) строку в буфер / буфер обмена, используйте CTRL+ Y.

devav2
источник
7
На самом деле Ctrl-R ищет текст из истории.
Эрик Карвалью
@EricCarvalho Вы правы. Удаление этого варианта из ответа.
devav2
2
Это общие управляющие коды UNIX. Терминал по умолчанию для Ubuntu основан на bash, что отличается.
OrangeDog
Ctrl-U удаляет курсор от начала строки. Я часто использую его, помещая курсор непосредственно перед аргументами команды из истории. Таким образом, я могу набрать новую команду, используя те же аргументы - например, изменить меньше файла на файл kate, чтобы я мог отредактировать файл после того, как посмотрел на него, чтобы увидеть, нужны ли какие-либо изменения.
Джо
1
@OrangeDog - Все в порядке - я использую все это в моем терминале Ubuntu с bash-bashed, за исключением CTR- \ one.
Белаква
61

Я обычно использую Alt+ Backspace. Если вы используете bash, это позволит вам удалить недо предыдущий специальный символ ( /, ;, и т.д.). Если вы используете zsh, он также удалит косые черты и точки с запятой. Это намного быстрее, чем просто ударить Backspace.

В bash, это отличается от Ctrl+ wв том смысле, что Ctrl+ wудаляет предыдущее слово, где Alt+ Backspaceудаляет, пока не будет найден предыдущий специальный символ. В zshобоих сочетаниях клавиш одно и то же

Exeleration-G
источник
8
Ctrl + W делает то же самое.
Hytromo
Не будет работать для таких терминалов, как rxvt.
sqram
1
@lyrae Для меня это прекрасно работает в rxvt, но не в xterm. И это работает только если set -o emacsустановлено.
Марко
Я использую ALT+Backspaceтак же, как и CTRL+C. Это работает на любом Linux. :)
TFTD
@hakermania: Нет, все по-другому. Ctrl + W удаляет слово и Alt + Backspace удаляет до предыдущего специального символа ( /, ;``, и т.д.).
Jobin
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+ Cили Ctrl+ Uв конце строки.

OrangeDog
источник
Это самый полный список, хотя лучший ответ - Ctrl+Cили ( Ctrl+E Ctrl+U)
Новая Александрия
Сколько в списке применимо к tcsh, который меня интересует?
TCSGrad
@ shan23 Прочтите раздел «Команды редактора» man tcshили используйте его bindkey -l. Похоже, это очень разные.
OrangeDog
Обратите внимание, что некоторые из них потерпят неудачу, если вы используете привязки vi для readline bash (или другой оболочки). Это должно в основном применяться и к tcsh; эти предшествующие баш. В bash также есть много хороших ярлыков истории из csh / tcsh.
Белаква
25

Alt+ #(т.е. Alt+ Shift+ 3) закомментирует текущую команду и продолжит следующую строку.

Например, если вы печатаете t, e, s, t, Alt+ #, вы получите:

you@computer$ #test
you@computer$ 

Если вы хотите , чтобы ваша старую команду назад, вы можете нажать стрелку вверх и удалить хэш - символ ( Up, Home, Deleteили Up, Ctrl+ A, Delete).

Я думаю, что это особенность GNU Readline , поскольку она работает в Bash, Python и MySQL.

Снежный шар
источник
22

Ctrl+ C- в дополнение к прерыванию запущенных команд, он также может использоваться для «прерывания» ввода в командной строке.

В отличие от Ctrl+ U, вы все равно увидите, что набрали, но курсор переместится на новую строку, и вы получите пустую подсказку командной строки.

Вильмантас Баранаускас
источник
4
Я предпочитаю это просто из-за мышечной памяти, и вы все равно можете скопировать / вставить что-нибудь важное, потому что прерванная командная строка остается там.
МОГ
8

readlineЯрлык Bash Ctrl+ X+ Eдействительно очень полезен, когда вы работаете в командной строке. Если вы находитесь в процессе ввода длинной команды и решили, что хотите вместо этого открыть ее в текстовом редакторе по умолчанию, все, что вам нужно сделать, это использовать ярлык.

Он использует readlineбиблиотеку Bash, и этот конкретный ярлык называется edit-and-execute-command. Вы можете установить редактор по умолчанию, поместив export EDITOR="/usr/bin/vi"в ~/.bashrcили ~/.bash_aliases.

Войдите, bind -Pчтобы увидеть свои текущие readlineпривязки и обратиться к man readlineили страницам справки Ubuntu онлайн для получения дополнительной информации.


источник
7

Я также использую Esc+, Backspaceчтобы удалить все предыдущие символы до специального символа. Это же Alt+ Backspace. Удобно, если вы просто удаляете несколько слов за раз.

jytou
источник
3

Для viпривязок клавиш

Когда используется viключевая карта, например, bashс set -o viили zshс bindkey -v:

Режим вставки

Это то же самое нажатие клавиши, что и в режиме default / emacs:

Ctrl+U

удаление с текущей позиции до начала строки. Таким образом, он удаляет всю строку, если курсор находится в конце.

Нормальный режим

Есть несколько способов удалить строку двумя нажатиями клавиш:

Удалить также со счетчиком ddпо умолчанию в одну строку:

dd

что является самым простым с точки зрения клавиш, которых коснулись.

Другой способ: перейти к началу строки ^и удалить до конца строки D:

^D

Они оба удаляют всю строку, а не только слева, как Ctrl+ Uв режиме вставки или вариант bleow.

Если вы находитесь в конце строки, поэтому вам не нужно ничего удалять справа, это также будет делать:

Удалить отсюда d, до начала строки ^:

d^

Вы можете использовать их все из режима вставки, сначала вам нужно обычное побег, чтобы перейти в обычный режим. Например, чтобы удалить всю строку из режима вставки, используйте:

Escdd

Volker Siegel
источник