Мой ответ предлагает простую команду в трех разных синтаксисах, которые работают одинаково, но один немного короче и его легче набирать, чем второй. Третий вариант - это так называемый псевдоним, который означает, что вы можете назначить команде собственное имя и вызвать его, выполнив это без необходимости запоминать сложные вещи.
Приготовление:
Во-первых, установите пакет, xsel
который позволяет вам получить доступ к буферу обмена X из терминала:
sudo apt-get install xsel
Вариант команды 1 (короткий):
После этого вы можете набрать следующую строку, чтобы скопировать предыдущую команду в буфер обмена:
xsel -ib <<<!!:q
Если вы хотите скопировать вторую последнюю команду, замените !!
на !-2
, для третьего последнего использования !-3
и так далее.
Чтобы объяснить, что вы запускаете, вот краткий перечень команд:
xsel
инструмент командной строки для доступа к буферам обмена X
Для получения дополнительной информации, прочитайте справочную страницу онлайн или запустив man xsel
.
-i
Параметр указывает xsel
на чтение из стандартного ввода (обычно этот вход средства клавиатуры, но мы будем перенаправлять что - то здесь)
- В
-b
определяет параметр , чтобы использовать буфер обмена вместо «первичных» или «вторичные» выбор Икса.
<<<
это специальный синтаксис Bash под названием Here Here.
Он в основном расширяет (не оценивает!) Аргумент (только один!) После него и перенаправляет его в виде строки в стандартный ввод команды (до / после которого он стоит).
!!:q
называется «команда взрыва» для расширения истории в bash. Он заменяет собой любую ранее введенную командную строку.
Для получения дополнительной информации прочитайте ее местную справочную страницу, запустив ее man history
(онлайн-справка не помогает).
!!
Означает предыдущую командную строку и является синонимом !-1
.
Очевидно, !-2
означает, что вторая последняя командная строка. Не забывайте знак минус -
, иначе он вернет вторую (3-ю / ...) команду, которую вы когда-либо вводили.
- В
:q
модифицирует передает команду взрыва и говорит Баш заключить о замене в одинарные кавычки ( '
) , чтобы предотвратить дальнейшее расширение с помощью оболочки.
Вариант команды 2 (немного длиннее):
echo !!:q | xsel -ib
echo
имеет простую работу по выводу всех своих аргументов на стандартный вывод терминала.
!!:q
называется «команда взрыва» для расширения истории в bash. Он заменяет собой любую ранее введенную командную строку.
!!
Означает предыдущую командную строку и является синонимом !-1
. Очевидно, !-2
означает, что вторая последняя командная строка. Не забывайте знак минус -
, иначе он вернет вторую (3-ю / ...) команду, которую вы когда-либо вводили.
- В
:q
модифицирует передает команду взрыва и говорит Баш заключить о замене в одинарные кавычки ( '
) , чтобы предотвратить дальнейшее расширение с помощью оболочки.
|
это труба. Он перенаправляет вывод терминала ("stdout") команды перед ним на вход терминала ("stdin") команды после него.
xsel
инструмент командной строки для доступа к буферам обмена X
Для получения дополнительной информации, прочитайте справочную страницу онлайн или запустив man xsel
.
-i
Параметр указывает xsel
на чтение из стандартного ввода (обычно этот вход средства клавиатуры, но мы будем перенаправлять что - то здесь)
- В
-b
определяет параметр , чтобы использовать буфер обмена вместо «первичных» или «вторичные» выбор Икса.
Вариант команды 3 (псевдоним):
Псевдоним bash - это классная вещь, если вы не хотите запоминать длинные или сложные команды, которые вы часто используете. Вы можете назначить эту команду простому псевдониму, который вы можете запустить вместо длинной команды, чтобы добиться того же самого.
К сожалению, поскольку команды bang являются специальной функцией Bash и расширяются до разрешения псевдонимов, вы не можете просто использовать псевдоним одного из указанных выше вариантов, поскольку эта !!
часть не будет работать. Хотя есть обходной путь.
Чтобы установить псевдоним, запустите следующую строку в вашем терминале. Обратите внимание, что вы можете выбрать любое допустимое имя переменной Bash вместо copylastcommand
:
alias copylastcommand='history -p \!\! | xsel -ib'
Это, однако, только для вашего текущего сеанса Bash, что означает, что псевдоним исчезнет после закрытия окна терминала. Вы можете сделать это постоянным в каждой из ваших сессий Bash, добавив эту строку выше в конец вашего ~/.bashrc
файла или в свой ~/.bash_aliases
файл, если он у вас есть.
Опять же, короткий разрыв строки:
alias name='command'
это синтаксис для установки псевдонима в Bash. command
Будет выполняться всякий раз , когда вы выполняете name
с этого момента.
history -p \!\!
выводит ранее выполненную командную строку в стандартный вывод (стандартный вывод). Без -p
переключателя он не только печатает, но и запускает команду снова.
Обратите внимание, что нам нужно избегать bangs ( !
) с помощью обратной косой черты ( \
), потому что в противном случае bash расширит их, когда мы попытаемся установить псевдоним, что не имеет смысла, поскольку они должны быть в псевдониме, как есть.
Опять же, вы также можете указать [n] -ую недавнюю команду, заменив второй удар на -n
, например \!-2
.
|
это труба. Он перенаправляет стандартный вывод ("stdout") команды перед ним на стандарт терминала ("stdin") команды после него.
xsel
инструмент командной строки для доступа к буферам обмена X
Для получения дополнительной информации, прочитайте справочную страницу онлайн или запустив man xsel
.
-i
Параметр указывает xsel
на чтение из стандартного ввода (обычно этот вход средства клавиатуры, но мы будем перенаправлять что - то здесь)
- В
-b
определяет параметр , чтобы использовать буфер обмена вместо «первичных» или «вторичные» выбор Икса.
<<<"!!" xsel -ib