Остановить автоматическое выполнение терминала при вставке команды


27

Да, это немного раздражающая особенность, потому что что-то такое происходит, а иногда нет, очень странно.

Я вставляю команду в терминал, чтобы настроить ее аргументы, и иногда она выполняется, когда я ее вставляю. Иногда это не так.

Это варьируется от смущения (публикация бессмысленных комментариев на IRC) до опасного.

Как я могу отключить эту функцию навсегда? Я никогда, никогда, никогда не хочу, чтобы терминал автоматически выполнялся при вставке в него.


может представлять интерес - bbs.archlinux.org/viewtopic.php?id=95548 , также люди делали эксплойты, скрывая контент в копии / вставке reddit.com/r/linux/comments/1bv54e/…
Mateo

1
Ничего себе, функция должна быть встроена в Ubuntu, чтобы остановить это. Когда бы вы хотели вставить возврат каретки в терминал?
Старкерс

одним из исправлений будет использование чего-то подобного oh-my-zshили любых других замен терминалов.
Прамеш Баджрачарья

Ответы:


28

Там нет автоматического исполнения. Вы, вероятно, также копируете разрыв строки (или более) после команды.

Если вы вставляете команду с разрывом, оболочка (командная строка) считает, что вы нажали кнопку прерывания (Enter, Return) самостоятельно.


Этот ответ только объясняет, почему ОП получает нежелательное поведение. Однако в другом ответе есть реальное решение проблемы ОП.


5
Правда, но вопрос в том, как это остановить, если это возможно :)
Pawel Cioch

1
Исправление для Putty, по крайней мере serverfault.com/questions/731022/…
Pawel Cioch

13

Одно из реальных решений - открыть режим редактирования с помощью ctrl-x ctrl-eи затем безопасно вставить буфер обмена в выбранный вами редактор (обычно это emacs или vim). После того, как вы закончите редактирование команды, сохраните и выйдите, и она запустится в командной строке Это хорошая привычка для длинных или сложных команд, особенно при вставке хешей коммитов в команды git, и может помочь вам избежать некоторых страшных результатов в долгосрочной перспективе.

Редактор можно изменить, установив переменные VISUAL и EDITOR (они имеют разные значения, см. Здесь ).


вау, всегда есть чему поучиться после десятилетий использования linux :) спасибо, это единственный ответ, который действительно решает проблему
törzsmókus

Похоже, это может работать для реального терминала Linux, но, к сожалению, это не полезно для пользователей PuTTY. Есть ли другие альтернативы?
Кодесмит

1
@Codesmith Я полагаю, что комментарий Павла Чиоха о принятом ответе может оказаться полезным для вас: serverfault.com/questions/731022/…
borrascador

1
Хороший вопрос @borrascador! Не уверен, как я это пропустил. Благодарность! :)
Кодесмит

5

Перед вставкой введите #, а затем вставьте свою строку. Он не будет выполнен, и вы можете удалить # и нажать Enter, когда изменения будут завершены.


Вы также можете использовать trueAKA :, которая в основном является командой no-op.
wjandrea

1
@WJAndrea Я бы сказал, что это менее целесообразно, так как это закроет состояние выхода ( $?) ... на trueсамом деле не nop, оно возвращает состояние выхода 0. С другой стороны, комментарий полностью игнорируется и поэтому не будет альтер $?.
brhfl

4
это только остановит выполнение первой строки . если OP вставляет текст по крайней мере с двумя переносами строк, они снова вкручиваются.
törzsmókus
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.