Во время запуска команд в CLI я хочу скопировать только что сработавшую команду или что-либо, что я написал в терминале, и вставить ее в другое место без использования мыши.
Как и на следующем рисунке, я хочу скопировать команду обновления (полностью или частично) без использования мыши и вставить ее куда-нибудь.
terminal
gnome-terminal
copy-paste
prayagupd
источник
источник
Ответы:
Вы можете использовать
screen(1)
в эмуляции терминала выбора (xterm
,gnome-terminal
, ...).Необходимая вам функциональность встроена
screen
. Вам нужно ознакомиться с тем, как это работает:Вы можете «скопировать» команду и «вставить» в другой терминал.
screen
это весело, и как только вы начнете использовать его, вы будете удивляться, как это возможно, вы вообще не использовали его.источник
screen
, поэтому я установил ее в gnome-терминал и запустилscreen
в терминале. Но не мог начать после этого. Также я не понял, что вы подразумеваете под встроенным экраном.man screen
. Кроме того, я написал «встроенный в экран», что означает, что функция копирования / вставки присутствует вscreen
дизайне .space
ключ, чтобы выбрать желаемую область. Вы должны использовать,Y
чтобы скопировать всю строку или желаемую область. Экран удобен дляvi
движений.AltGr
ключ? У меня естьAlt
screen
Инструмент не функционирует объяснил здесь. И это, похоже, не дает ответа на вопрос.В дополнение к уже предоставленным ответам, вы можете перейти к более гибкому эмулятору терминала.
Если вы были готовы изменить терминалы на rxvt-unicode , вы могли бы использовать такой инструмент, как urxvt-perls : набор скриптов, которые обеспечивают следующие функциональные возможности клавиатуры в этом эмуляторе терминала:
Вы просто устанавливаете пакет, а затем добавляете несколько строк в свой
~/.Xresources
, и затем вы можете отключить грызуна навсегда.источник
Вы можете сделать это с помощью такой программы
xclip
:После того, как вы установили его, вы можете использовать его для подключения к буферу обмена X. К сожалению, в вашей
mysql
среде это не сработает (у него есть собственный буфер для скопированных строк), но сработает, если вы захотите выполнить «обычную» команду. Например :Введите, CtrlAчтобы перейти к началу строки, заключите команду в кавычки, а затем введите ее:
Теперь у вас есть «Это длинная командная строка» в буфере обмена среднего щелчка.
Если вы хотите вставить без использования мыши, это будет зависеть от того, где вы вставляете. Вы можете вставить в другой терминал, запустив:
Вы можете вставить в тот же терминал, просто убивая (обрезая) команду с помощью, CtrlKа затем вставляя с помощью CtrlY.
Вы также можете сохранять команды через терминалы, используя историю bash. Добавьте эту строку в ваш
~/.bashrc
:PROMPT_COMMAND
это специальная переменная bash. Если оно установлено, значение выполняется как команда перед выдачей нового приглашения.history -a
запишет историю текущего сеанса в файл истории иhistory -r
перезагрузит этот файл. Это означает, что каждая команда, которую вы выполняете, будет немедленно записана в файл истории.Теперь, когда вы запускаете длинную командную строку, вы можете переключиться на другой терминал и нажать клавишу возврата (просто запустить
$PROMT_COMMAND
, или открыть новое окно терминала), и он будет доступен для истории этого терминала. Если вы сейчас нажмете, Upвы можете запустить его на новом терминале.источник
$ xclip -o
это не то, что я хочу, потому что это просто печатает то, что яxclipe
сделал. Но +1 за,Ctrl+A
а затемCtrl+K
иCtrl+Y
для резки и вставки по крайней мере в том же терминале.@evilsoup предложил хорошее решение, но оно часто ломается.
Быстрое решение
Вот решение, которое никогда не ломается .
Просто запустите эту команду, и она скопирует команду, которую вы только что выполнили, в буфер обмена.
По сути, он печатает историю ваших команд, берет вторую последнюю команду и передает ее в буфер обмена (последняя команда это сама, поэтому она выбирает вторую последнюю команду).
Пользовательская функция
Разрабатывая быстрое решение, я написал небольшую функцию, которая довольно умна и скопирует последнюю использованную команду. Вы также можете предоставить числовые аргументы для копирования последней n-й команды. Например, для копирования второй последней команды укажите в
2
качестве аргументаСкопируйте и вставьте вышеуказанную функцию в ваш
~/.bashrc
файл. Обратите внимание, что если вы поместите это в отдельный файл скрипта bash и запустите скрипт, он не будет работать, так как команда history не сможет получить доступ к вашей истории в этом случае.Наконец, запустите его как:
Более того, одна из замечательных функций, добавленных к этой функции, заключается в том, что она удаляет себя из истории после запуска. Это полезно, потому что тогда «обратный» индекс команд не изменяется.
источник
screen
. Второй по рейтингу ответ также предполагалbash
иlinux
. Более того, допущениеbash
не имеет большого значения, потому что скрипт все равно будет работать в zsh или большинстве других оболочек.Эта команда использует расширение истории bash (поэтому
!!
расширяется до последней строки, которую вы ввели в терминал). Вы, вероятно , придется установить либоxclip
илиxsel
.Это поместит вашу последнюю команду в буфер обмена Ctrl+ v, так что вы сможете вставить ее в любую программу с графическим интерфейсом (или с Ctrl+ Shift+ vв большинстве эмуляторов терминала, или с помощью
"+p
vim).Это сломается для некоторых строк, содержащих двойные кавычки, например:
Это будет работать для команды, которую вы дали в качестве примера; у вас должны быть проблемы только в случае выхода двойных кавычек
;
&
&&
|
||
и т. д.источник
echo !!
и это будет работать безупречно (за исключением невероятного случая, с которого начиналась ваша предыдущая команда,-n
или-e
нескольких других опций, которые онаecho
сама принимает).Возможно, это не самое удобное решение, но я использую его, и поэтому оно может быть полезным для других, поскольку не требует дополнительной установки программного обеспечения.
Вам нужно создать временный файл в любом удобном каталоге
Перенесите нужное направление или текст в этот файл. Для передачи направления вы можете использовать
Чтобы получить направление из файла, используйте команду
Для копирования и вставки команд эта система, конечно, будет работать. Надеюсь, это было полезно
источник