Очистить команду из терминала в OS X


24

Скажем, я набрал команду в терминале 'mv * .jpg .. \ photos' и, когда я печатаю, понимаю, что больше не хочу выполнять эту команду вообще. Я хочу просто удалить все утверждение. Я не хочу очищать весь экран или удалять историю bash. Я просто хочу прервать текущую строку и стереть ее.

Есть ли сочетание клавиш или мне нужно удалить каждый символ?

Ответы:


36

Предполагая, что вы находитесь в Bash, используйте Ctrl+ U.


Благодарность! это сделал Есть ли где-нибудь задокументированный список форматов сочетаний клавиш?
Пол Александр


2
Это работало для меня в zshell тоже.
LandonSchropp

1
Это работает, только если ваш курсор находится в конце строки. Для тех ситуаций, когда ваш курсор находится в начале, вам нужно использовать CTRL-K
Jarrod Nettles

Как вы вызываете это в сценарии?
Джонни

7

Многие программы, которые ждут, пока вы наберете командную строку, а затем выполните эту строку, включая bash, принимают Ctrl+, Cчтобы означать «Прервать текущую задачу и вернуться к основному приглашению».

Несколько программ, в том числе bash, принимают Ctrl+ U( команда «Очистить» от терминала в OS X ) для обозначения «стереть начало строки до курсора» (или «стереть всю строку»).

В bash наблюдаемые различия между Ctrl+ Cи Ctrl+ Uвключают:

  • Вы можете отменить Ctrl+ U, но не Ctrl+ C.
  • Ctrl+ Uсохраняет часть строки после курсора, если есть.
  • Ctrl+ Uстирает затронутый текст с экрана; Ctrl+ Cпоказывает новое приглашение под текущей строкой.

Иногда вы хотите прекратить вводить команду, но ввести ее в историю оболочки, чтобы запустить позже. Полезный трюк - поместить #в начало строки и выполнить ее: поскольку строка теперь является комментарием, она ничего не будет делать. В bash есть комбинация клавиш: Alt+ #.


2

Существует readlineфункция, которая, вероятно, не связана с нажатием клавиши kill-whole-line, которая убивает всю строку, а не только убивает часть перед курсором ( unix-line-discardчто является неправильным и связано с Ctrl- u).

Вы можете связать это с любым доступным нажатием клавиши. Мне нравится ShiftAlt- Uтак как это связанная функция. Это нажатие клавиши может быть связано с тем, do-lowercase-versionчто оно делает то, что делает несмещенная версия (в данном случае upcase-word). Поскольку нам для этого не нужны два ключа, давайте использовать этот.

Вы можете попробовать это в командной строке, создав привязку следующим образом:

bind '"\eU":kill-whole-line'

или сделайте это постоянным, поместив эту строку в ваш ~/.inputrcфайл:

"\eU":kill-whole-line

Чтобы отменить Ctrl- uили ShiftAlt- U(или любую операцию, которая может быть отменена), нажмите Ctrl- Shift- _(подчеркивание) или Ctrl- x Ctrl- u(два нажатия клавиш). Или вы можете вставить (вернуть) то, что вы убили, нажав Ctrl- yчто можно повторить, если вам нужно несколько копий этого текста.

Кстати, если вы хотите убить текст от курсора до конца строки, вы можете нажать Ctrl- k. Таким образом, вместо привязки, описанной выше, вы можете уничтожить целую строку, нажав Ctrl- u Ctrl- k. Только часть, убитая вторым из этих нажатий клавиш, будет сохранена в буфере уничтожения, но вы все равно можете сделать отмену дважды, чтобы восстановить их оба.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.