Скопировать текущее приглашение терминала в буфер обмена

Есть ли способ скопировать написанное в настоящее время содержимое приглашения bash? Скажем, я написал:

ping www.google.com

, так что строки в терминале выглядят так:

petr@sova:~$ ping www.google.com

и еще не нажали return. Я хочу скопировать этот текст в буфер обмена. Возможно ли это?

Обычный вариант использования: несколько раз нажать и найти команду, которую я хочу скопировать.

27
задан 31 January 2014 в 13:15

5 ответов

Чтобы вырезать, нажмите ctrl + u . Чтобы вставить, используйте ctrl + y . Это копирует всю строку в буфер обмена Bash. Если вы используете X и терминал Ubuntu по умолчанию, вы можете использовать мышь, чтобы пометить содержимое, и нажать ctrl + shift + c , чтобы скопировать, и ctrl + shift + v для вставки.

0
ответ дан 31 January 2014 в 13:15
  • Добавьте # в начало команды (чтобы оно стало комментарием)
  • Запустите его
  • Извлеките его из истории и отправьте в буфер обмена. как xclip: history | tail -n 1 | sed "s/[[:digit:]]* //" | sed "s/^#//" | xclip
0
ответ дан 31 January 2014 в 13:15

Если вы не возражаете против использования мыши, просто трижды щелкните по строке, которую хотите скопировать, затем нажмите Ctrl + Shift + V . Затем вы можете вставить его как обычно с помощью Ctrl + V .

0
ответ дан 31 January 2014 в 13:15

В xfce4-terminal вам нужно выделить с помощью мыши текст, который вы хотите скопировать, затем щелкните правой кнопкой мыши и затем выберите элемент Copy в контекстное меню.

Это работает?

0
ответ дан 31 January 2014 в 13:15

Решение для режима Vi

Решение только для клавиатуры. Все символы копируются точно "как есть". Из коробки - чистое решение оболочки, никаких зависимостей (кроме xsel очевидно).

Настройка

  1. Установите опцию vi в терминале: set -o vi.
  2. Псевдоним, копирующий незакрытый здесь-документ: alias c2c='cat - <<"" | tr -d '"'"'\n'"'"' | xsel -b'

Использование

  1. Напишите все, что хотите, в командную строку, не нажимая .
  2. Нажмите , а затем , . Теперь вся линия должна исчезнуть. Чтобы снова ввести текст, нажмите .
  3. Введите имя псевдонима (c2c в моем примере) и нажмите .
  4. Нажмите ,

    , затем , .

Вуаля. Удаленный текст теперь можно вставить куда угодно, нажав + (GUI) или ++ (разумный интерфейс командной строки). Если ваш CLI не подходит, сделайте его таковым.

fzf решение

Некоторым нравится режим vi, другим - нет. Но я думаю, что нечеткий искатель должен быть. Он не позволяет сделать в точности то, что вы просили, он может сделать что-то лучше! Вместо того, чтобы «нажимать несколько раз», fzf может просматривать историю команд с на порядок большей эффективностью. Кроме того, его можно использовать внутри моего псевдонима c2c для копирования в буфер обмена.То, что набирается в терминал в данный момент, не может быть красиво скопировано (без мыши), но если что-то есть в истории, получить это можно за считанные секунды.

1
ответ дан 3 October 2020 в 20:41

Другие вопросы по тегам:

Похожие вопросы: