Как запустить команду, не нажимая клавишу Enter?


119

Случайно я сопоставляюсь Enterчерез xkbsetк Pointer_button2.

Теперь каждый раз, когда я нажимаю, Enterпоявляется какой-то бредовый текст.

Я подумал об обходном пути, включающем перераспределение его обратно, но это означает, что мне придется запустить команду xmodmap -e "keycode 135 = Pointer_Button2"(или любой другой код клавиши, кроме того, что у Enter). Но я не могу запустить эту команду в терминале, не нажимая Enter.

Как мне это сделать?

Я использую Ubuntu 12.04.


5
Однажды компьютеры смогут отменить что угодно. Как сейчас со снимками файловой системы, но с содержимым оперативной памяти ... как откат того, что мы делаем. Отмените ввод команды. Откройте файл. Не запускайте программу. Un-Do последние 5 минут. Потом, позже, Интернет наверстает упущенное ... Не читайте сайт: Вас там никогда не было! Может быть, однажды мы сможем отменить автомобильные аварии, восстановить фонарные столбы в вертикальном положении и т. Д.
Йохан

2
@Johan Какие вещества ты принимал, когда писал этот комментарий? </ шучу>
Люк М

Ответы:


125

Вы можете использовать CTRL+ Jили CTRL+ Mв качестве альтернативы Enter. Это управляющие символы для перевода строки (LF) и возврата каретки (CR).


4
Блин… почему люди с 6,705 баллами не могут дать ответы на эти простые вопросы огромным немытым массам? (Шучу - +1 за ответ я собирался опубликовать.)
Ян Стеинмэн

5
@JanSteinman Потому что тогда у них было бы только 6,330 баллов (6705 - 15 - 36 * 10). : P
Эрни

3
@JanSteinman: я пропустил это! Когда я ответил, было уже три других ответа, и один был принят. Кажется, что дети в наши дни не знают своего ASCII :-) (@ernie: ежедневный лимит репутации, так что вы не получите все эти очки).
Camh

Спасибо за то, что приняли добродушную ребристость - никакого легкого намерения. Если ты это знаешь, покажи это!
Ян Стейнман

2
@ user13107 Не столько исторический, сколько само определение кода ASCII. Когда ASCII был почти всем, что было (если только вы не были на территории IBM), ключи Return и Linefeed должны были быть закодированы как что-то, чтобы мы могли печатать их на наших надежных телетайпах ASR-33 или наших перфокартах. Есть даже пакет ascii, который вы можете установить, чтобы отобразить его. Клавиша Ctrl просто взяла код для одного из первых 32 символов и установила один бит обратно в 0. Для M он изменил 4D на 0D, что является возвратом каретки (и на ASR-33 действительно была каретка). )
Джо

40

В окне терминала (я тестировал только aterm, rxvt, vteи xterm) вы можете выбрать конец строки, который вставил обратно имеет эффект нажатия Enter:

#          ____________type the command____________  __select to end of line__
#         /                                        \/                         \
bash-4.2$ xmodmap -e "keycode 135 = Pointer_Button2"

Затем вставьте выделенный текст обратно в окно терминала щелчком средней кнопки мыши (или одновременным щелчком левой и правой кнопки мыши, если настроено так).


1
Здорово! Я думал, что нет способа скопировать и вставить непечатные символы.
user13107

26

Запустите команду из не-X терминала.

CTRL+ ALT+ F2должен привести вас к нормальной консоли. Войдите в систему как обычный пользователь, а затем выполните команду там.

xmodmapвлияет только на сеансы X, поэтому он должен DISPLAYработать вне X-сервера, например так:

DISPLAY=:0 xmodmap

Благодарю. Но это дает ошибку, котораяxmodmap unable to open display ``
user13107

1
Вы можете показать его DISPLAY="0"или отредактировать файл, который должен быть в$HOME/.Xmodmap
Бурхан Халид

6
Небольшая опечатка:DISPLAY=:0
Лекенштейн

14

Вы можете поместить его в скрипт (.sh) и затем дважды щелкнуть по нему. В большинстве современных сред рабочего стола можно запустить скрипт, а не открывать его в текстовом файле.


Благодарю. Попробовал это. Не нашел вариант запустить его как скрипт.
user13107

Хорошо. Работает после изменения свойств файла.
user13107

11

Если у вас есть мышь и графический дисплей, вы можете скопировать конец предыдущей строки в вашем терминале и вставить его в конец вашей команды.


4

CTRL+ Oэто еще один вариант. С bash он выполняет команду и переходит к следующей самой последней в истории истории, поэтому полезно циклически возвращаться назад по цепочке ранее выполненных команд.


1

Если у вас есть мышь, просто скопируйте это -> "

"

и вставьте рядом с вашей командой, а затем вставьте всю команду в терминал.

подобно введите описание изображения здесь


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