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