Есть ли способ скопировать написанное в настоящее время содержимое приглашения bash? Скажем, я написал:
ping www.google.com
, так что строки в терминале выглядят так:
petr@sova:~$ ping www.google.com
и еще не нажали return. Я хочу скопировать этот текст в буфер обмена. Возможно ли это?
Обычный вариант использования: несколько раз нажать и найти команду, которую я хочу скопировать.
Чтобы вырезать, нажмите ctrl kbd> + u kbd>. Чтобы вставить, используйте ctrl kbd> + y kbd>. Это копирует всю строку в буфер обмена Bash. Если вы используете X и терминал Ubuntu по умолчанию, вы можете использовать мышь, чтобы пометить содержимое, и нажать ctrl kbd> + shift kbd> + c kbd>, чтобы скопировать, и ctrl kbd> + shift kbd> + v kbd> для вставки.
#
в начало команды (чтобы оно стало комментарием) history | tail -n 1 | sed "s/[[:digit:]]* //" | sed "s/^#//" | xclip
Если вы не возражаете против использования мыши, просто трижды щелкните по строке, которую хотите скопировать, затем нажмите Ctrl kbd> + Shift kbd> + V kbd >. Затем вы можете вставить его как обычно с помощью Ctrl kbd> + V kbd>.
В xfce4-terminal
вам нужно выделить с помощью мыши текст, который вы хотите скопировать, затем щелкните правой кнопкой мыши kbd> и затем выберите элемент Copy kbd> в контекстное меню.
Это работает?
Решение для режима Vi
Решение только для клавиатуры. Все символы копируются точно "как есть". Из коробки - чистое решение оболочки, никаких зависимостей (кроме xsel
очевидно).
Настройка
set -o vi
. alias c2c='cat - <<"" | tr -d '"'"'\n'"'"' | xsel -b'
Использование
.
, а затем
,
. Теперь вся линия должна исчезнуть. Чтобы снова ввести текст, нажмите
. c2c
в моем примере) и нажмите
.
,
, затем
,
. Вуаля. Удаленный текст теперь можно вставить куда угодно, нажав
(GUI) или
(разумный интерфейс командной строки). Если ваш CLI не подходит, сделайте его таковым.
fzf решение
Некоторым нравится режим vi, другим - нет. Но я думаю, что нечеткий искатель должен быть. Он не позволяет сделать в точности то, что вы просили, он может сделать что-то лучше! Вместо того, чтобы «нажимать несколько раз», fzf может просматривать историю команд с на порядок большей эффективностью. Кроме того, его можно использовать внутри моего псевдонима c2c
для копирования в буфер обмена.То, что набирается в терминал в данный момент, не может быть красиво скопировано (без мыши), но если что-то есть в истории, получить это можно за считанные секунды.