Я могу увидеть последнюю команду в терминале, нажав, up arrow
как в следующем примере:
Я набрал cd /
:
Makss-Mac:~ maks$ cd /
... нажата enter
, команда cd /
выполнена, и теперь я могу снова нажать up arrow
и увидеть команду cd /
:
Makss-Mac:/ maks$ cd /
Я хочу не только увидеть последнюю команду, но и скопировать ее в буфер обмена.
Может быть, существует ярлык, который не только показывает последнюю команду в терминале (как up arrow
это делают), но в то же время копирует ее в буфер обмена.
Или, может быть, есть ярлык для выбора всех из текущей строки терминала. И поэтому я смогу скопировать последнюю команду (после нажатия up arrow
), нажав super+c
. Конечно, я могу выбрать его с помощью мыши. Но когда команды в 10 раз длиннее, чем cd /
это может быть слишком много времени, особенно если вы делаете это каждые 30 секунд.
Или, может быть, есть способ написать плагин для терминала
источник
Ответы:
Поместите это в свой
~/.bashrc
~/.bash_profile
или где-нибудь, когда вам это нравится:После открытия нового окна (или запуска
source ~/.bash_profile
) вы сможете запуститьcopyLastCmd
и сохранить команду в буфере обмена.Чтобы объяснить, что происходит: вы в основном используете команду «fix command» (
fc
), чтобы получить последнюю команду, удалите как начальные, так и завершающие пробелы для более удобного форматирования с помощью,awk
а затем скопируйте ее в монтажную панель вашего Mac с помощьюpbcopy
.РЕДАКТИРОВАТЬ:
Теперь, когда мы знаем, что вы хотите скопировать, чтобы вставить в другую вкладку терминала, есть еще один вариант: добавьте эти строки в свою
~/.bashrc
~/.bash_profile
или где угодно:Затем, когда у вас откроются новые вкладки (назовем их «вкладка A» и «вкладка B»):
РЕДАКТИРОВАТЬ 2: Я заменил использование
sed
сawk
в первоначальном ответе выше, чтобы позаботиться как о начальных и конечных пробелах.источник
awk
:alias copyLastCmd='fc -ln -1 | sed '1s/^[[:space:]]*//' | awk 1 ORS="" | pbcopy '
fc -ln -1 | awk '{$1=$1}1'
удалит как пробел, так и пробел.alias copyLastCmd="fc -ln -1 | awk '{\$1=\$1}1' | pbcopy"
. до сих пор получает мой голосВот еще один вариант, основанный на ответе @Asmus. Чтобы его псевдоним работал в моем скрипте bash, мне пришлось использовать небольшую кавычку, поскольку одинарные кавычки не работают в псевдониме, заключенном в одинарные кавычки, без каких-либо дополнительных кавычек:
В
'\''
основном закроет текущую цитату, затем добавит экранированную цитату, а затем снова откроет актуальную цитату.Вышеприведенная версия скопирует последнюю команду в буфер обмена, и после ее вставки она сразу же будет выполнена, поскольку в конце будет новая строка .
Чтобы избавиться от новой строки в конце, чтобы вы могли отредактировать команду перед ее запуском, вы можете сделать следующее:
ORS=''
(Это без кавычки) будут сдирать трейлинг символ новой строки, так что вы можете редактировать вставки текста перед его запуском.источник
Это будет использовать расширение истории, чтобы захватить последнюю команду и повторить ее. Вы можете передать, чтобы
pbcopy
сохранить последнюю команду в буфер обмена.Если вам нужна команда из вашей истории, которая была не последней , вы можете выполнить:
И ссылаться на нужный номер команды, например:
источник
Я пришел сюда, поскольку придумал точно такой же ответ Сэма Берри, но он не работает для меня (OSX 10.14.6).
Удалось сделать это с помощью кавычек вокруг
!!
:echo "!!" | pbcopy
источник
Вы можете настроить свою историю на игнорирование команд, начинающихся с пробела:
А затем выполните следующую команду, чтобы добавить последнюю команду в буфер обмена (убедитесь, что у вас есть пробел в начале):
Возможно, вы захотите сохранить команду как псевдоним, чтобы ее было легче запомнить.
источник