Я вставляю имена файлов / etc в Terminal все время, и иногда содержимое буфера обмена не соответствует ожиданиям.
Часто в результате получается несколько сотен строк текста (например, исходного кода), вставленных в командную строку, при этом бог знает только, что за злоба.
Есть ли способ предотвратить слепое выполнение bash того, что я вставил? Я хотел бы, чтобы он просто вставил текст, и позвольте мне после этого решить, хочу ли я выполнить его.
Ответы:
Предполагая, что вы используете bash: Если вы активируете сочетания клавиш emacs,
set -o emacs
вы также можете использовать Emacs для редактирования командной строки:источник
Ctrl
вместоCmd
. Кроме того, без этого,set -o emacs
кажется, использовать$EDITOR
. Благодарность! это потрясающе.Возможно, самое простое решение - использовать текстовый редактор в качестве буфера, где вы можете дважды проверить содержимое, а затем скопировать из текстового редактора в терминал. Если вы используете TextEdit для этого, вы, вероятно, захотите убедиться, что он находится в режиме обычного текста ( меню « Формат» → « Создать обычный текст» ; ⇧⌘T), чтобы избежать проблем, таких как вставка ссылок в виде ссылок, а не URL-адресов.
Следует также отметить, что Bash будет пытаться выполнить все, что предшествует символу новой строки, поэтому, если вы копируете блок текста, вы можете убедиться, что ваш выбор останавливается после последнего символа, а не в конце конца линия.
Вы хотите это:
Не это:
Конечно, если вы копируете материал с новыми строками в тексте ( то есть с несколькими параграфами), вам придется вручную редактировать выделение.
источник
Я тоже это понимаю!
Мое решение - вставить, используя менеджер буфера обмена Launchbar , с помощью горячей клавиши
Cmd+\
. Это вызывает список недавних вырезок, что позволяет мне предварительно просмотреть результат перед вставкой: если я не вижу ожидаемый контент, я нажимаю escape перед выпуском Cmd. Я также могу использовать клавишу со стрелкой, чтобы «ввести» обрезку текста, что позволяет мне просматривать содержимое построчно.Я полагаю, что большинство пусковых установок делают это - Альфред (дополнение аддона) и Ртуть (бесплатно), например.
источник
Возможно, вы захотите заглянуть в менеджер буфера обмена. Я использую бесплатный, легкий, который называется Jumpcut . Это позволяет мне сохранить несколько буферов обмена и посмотреть, что в них хранится, прежде чем фактически вставлять содержимое, все с клавиатуры.
Есть много менеджеров буфера обмена, поэтому, если Jumpcut не плавает на вашей лодке, возможно, другой подойдет для ваших нужд.
источник
Используйте пасту в скобках .
Вставка в скобках - это функция, при которой терминал сообщает оболочке, что вы вставили что-то, а не просто печатаете ее, поэтому оболочка не может выполнить команду, пока вы не нажмете Enter.
Terminal.app поддерживает это, но не все терминалы поддерживают.
Точно так же не все оболочки поддерживают это. Версия bash, которая поставляется с OS X, не поддерживает вставку в скобках (на момент написания статьи это v3.2.57).
Однако zsh поддерживает вставку в скобках:
Zsh в основном совместим с bash (даже сценарии, вероятно, будут работать, если вы не используете какую-то неясную функцию), и лучше во многих отношениях - например, он даже имеет многострочное редактирование команд!
источник
Вы можете поместить этот маленький скрипт Bash где-нибудь в вашем
PATH
:Если бы я поместил это содержимое,
/usr/local/pbexecute
например, и сделал его исполняемым, я мог бы безопасно выполнить егоpbexecute
из командной строки, которая запрашивала бы мое подтверждение перед выполнением содержимого буфера обмена.Альтернативный подход состоит в том, чтобы запустить текстовый редактор с содержимым буфера обмена изнутри оболочки и автоматически выполнить отредактированное содержимое при выходе. Например:
источник
В разделе
Preferences -> Profiles -> Basic -> Advanced
«Вставить переводы строк при возврате каретки». (Basic - это имя одного профиля. Если вы используете другой профиль, вы должны выбрать этот.)В некоторых оболочках (zsh и bash у меня работают, tcsh нет) это позволит вам редактировать или прерывать (через Ctrl-C) то, что вставляется, прежде чем какая-либо его часть будет передана в оболочку.
Возможно, вам придется создать новое окно терминала, чтобы настройки начали работать.
Я использую эту функцию постоянно, не только для вставки и редактирования сложных команд, но также для просмотра столбцов текста, а иногда для выбора и копирования под прямоугольников путем перетаскивания с помощью клавиши выбора.
источник