Я часто хочу скопировать набор команд из терминала, которые не имеют выходных данных; скажем блок, как это:

prompt$ less file1.txt
prompt$ less file2.txt
prompt$ dhex file2.txt
prompt$ less file3.txt

Теперь, если я выделю этот блок текста с помощью мыши, и скопирую его с помощью Ctrl-Shift-C; затем, когда я вставляю текстовый файл, подсказка появляется (как и ожидалось) - и тогда мне приходится тратить время на удаление подсказки :)

Так что я бродил - есть ли настройка для gnome-терминала, чтобы при выполнении такого же копирования я получал только команды - без приглашения? Это то, что я хочу, когда я наконец вставляю:

less file1.txt
less file2.txt
dhex file2.txt
less file3.txt

Я заинтересован в решении, которое позволит мне получить это в буфер обмена, просто выделив мышью и Ctrl-Shift-C; Я знаю, что мог бы сделать history X , но тогда мне пришлось бы использовать grep - и подумать о подходящем выражении grep (и та же проблема возникает, если я записываю машинописный текст терминальной сессии с помощью script).

Есть ли для этого какие-либо средства? Если не для gnome-terminal , любой другой терминал, который может использоваться под Gnome, который предлагает такую возможность?

4 ответа4

1

В Gnome Terminal вы можете выделить блок текста, используя мышь + клавишу CTRL. Таким образом, вы можете скопировать весь вывод консоли без приглашения. например:

1

Предполагая, что вы используете bash в качестве оболочки, вы можете просто сделать что-то вроде:

history -a ; tail -5 $HISTFILE

заменив 5 тем количеством команд, которое вы хотите вернуть. Это должно дать вам чистый список, который будет легко копировать / вставлять. Не совсем тот подход, на который вы, похоже, ловите рыбу, но он может подойти.

0

Если вы используете, мультиплексор терминала tmux, вы можете сделать это легко и многое другое!

Ноам Манос уже указал в другом ответе: Gnome Terminal разрешает копирование блоков с помощью Ctrl + щелчок мыши и перетаскивание. Я просто хотел указать на другую альтернативу, которая является более мощной. Tmux поддерживает перевод вашего терминала в "режим копирования" и позволяет вам выполнять копирование блоков и многое другое - он даже поддерживает несколько буферов вставки, которые вы можете копировать и использовать позже.

Я использую следующие строки в моем файле .tmux.conf, чтобы использовать сочетания клавиш vi для блочного копирования:

bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi y send-keys -X copy-selection
bind-key -T copy-mode-vi r send-keys -X rectangle-toggle 

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

0

Что ж, меня эта проблема не давала покоя, и, наконец, я написал очень близкое решение: плагин фильтрации для менеджера буфера обмена Glipper, который позволяет обрабатывать регулярные выражения в функциях фильтра, которые можно применять к содержимому буфера обмена после копирования действие; выпущен здесь:

... и вот скриншот:

glipper-filter.png

Однако, так как я хочу использовать это только изредка, переключение фильтрации может быть не самой лучшей идеей (так как вы должны включить, скопировать / вставить, а затем отключить) - поэтому плагин обходит нормальную работу, когда щелкает запись подменю фильтра. , если удерживаются Ctrl, Alt или c ; поэтому мое "минимальное" действие по выполнению одноразовой фильтрации подсказок выглядит так:

  • Выберите область текста (включая подсказки) в терминале
  • Нажмите Ctrl+Alt+c (ярлык по умолчанию), чтобы открыть окно меню Glipper
  • Удерживая нажатой любую (или все) клавиши Ctrl, Alt или c,
    • Наведите курсор на пункт меню Фильтрация
    • наведите курсор мыши и щелкните нужный элемент меню (под) фильтра (например, TermCmdLog)
  • Исчезает меню Glipper - теперь можно отпустить удерживаемые клавиши
  • Переместите указатель и нажмите, чтобы сфокусировать текстовый редактор
  • Вставить - вставленное содержимое изменяется с помощью фильтра, по которому щелкают (например, для TermCmdLog ввод удаляет подсказки, а строки без подсказок комментируются)

В конце концов, я бы все же предпочел, чтобы у самого терминала был аккорд клавиатуры для отфильтрованного вывода (скажем, нажмите Ctrl+Shift+a, затем отпустите a, затем, удерживая остальные, нажмите c) - но тогда это будет нормально для один фильтр; и если вы хотите выбрать один из нескольких фильтров во время выполнения, снова возникает проблема наличия другого действия для выбора; и если это решается через окно графического интерфейса пунктов меню - тогда этот плагин так же хорош, я думаю. Более того, он работает для любого GUI-источника (копируемого) текста на рабочем столе Gnome, а не только для терминала.

К сожалению, он разработан для Gnome/Gtk 2 / Python 2.7, поэтому он уже устарел; Тем не менее, надеюсь, что это может надеяться на других (пока я не услышу о лучшем решении - надеюсь, в этой теме :)),
Ура!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .