iTerm2 имеет функцию, которая позволяет вам щелкнуть правой кнопкой мыши на выводе команды и затем выбрать “Копировать”, чтобы скопировать весь вывод последней команды, включая саму команду, в буфер обмена. Это отличная функция.
Однако было бы еще лучше, если бы это не требовало так много действий с мышью. Мне бы хотелось просто нажать горячую клавишу, и содержимое последней команды сразу попало бы в буфер обмена.
Я посмотрел на API Python, но ничего конкретного не нашел, что могло бы помочь решить эту проблему.
Вы пробовали команды pbcopy и pbpaste?
history : отображает все предыдущие команды
!history_number: предыдущая реализация истории
!history_number|pbcopy
pbpaste
Ответ
Для автоматизации захвата вывода последней команды в iTerm2 и последующего копирования его в буфер обмена, вы можете воспользоваться утилитами командной строки pbcopy
и pbpaste
. Вот пошаговая инструкция, как это можно сделать:
-
Использование
pbcopy
:
Утилитаpbcopy
позволяет копировать текст, переданный ей через стандартный ввод, непосредственно в буфер обмена. Вы можете использовать её в связке с другими командами для копирования вывода последней выполненной команды. -
Просмотр истории команд:
Вам нужно знать номер предыдущей команды. Для этого используйте командуhistory
, которая выведет список всех ранее выполненных команд (при этом каждая команда будет иметь свой номер). -
Копирование вывода последней команды в буфер обмена:
Чтобы скопировать вывод последней выполненной команды, вы можете воспользоваться следующим командным примером:!n | pbcopy
Здесь
n
– это номер команды в истории, которую вы хотите повторно выполнить и скопировать её вывод. Например, если вывод вашей последней команды отображался под номером 10 в истории, выполните:!10 | pbcopy
-
Создание сочетания клавиш:
Чтобы упростить процесс, вы можете создать функцию в вашем.bash_profile
или.zshrc
(в зависимости от используемого шелла), следуя следующему примеру. Это позволит вам просто вызывать функцию и автоматически копировать вывод последней команды:copy_last_command() { history -n # Обновить историю команд last_command=$(fc -ln -1) # Получить последнюю команду eval "$last_command" | pbcopy # Выполнить команду и скопировать вывод } alias clc=copy_last_command
После добавления этой функции и перезапуска терминала, вы сможете просто ввести
clc
и нажать Enter. Это выполнит последнюю команду и скопирует её вывод в буфер обмена. - Использование горячей клавиши в iTerm2:
Чтобы сделать процесс ещё более автоматизированным, вы можете связать выполнение функции с горячей клавишей в iTerm2:- Откройте iTerm2 и перейдите в
Preferences
(Настройки). - Перейдите на вкладку
Keys
. - Нажмите на кнопку
Create a Dedicated Hotkey
. - Настройте желаемую комбинацию клавиш.
- Установите действие на выполнение команды
clc
.
- Откройте iTerm2 и перейдите в
Теперь, когда вы нажимаете назначенную горячую клавишу, последняя команда будет выполнена, а её вывод автоматически скопируется в буфер обмена.
Таким образом, вы избавитесь от необходимости щёлкать мышью, и процесс станет значительно более удобным.