Как автоматизировать захват вывода последней команды в iTerm2?

Вопросы и ответы

iTerm2 имеет функцию, которая позволяет вам щелкнуть правой кнопкой мыши на выводе команды и затем выбрать “Копировать”, чтобы скопировать весь вывод последней команды, включая саму команду, в буфер обмена. Это отличная функция.

Однако было бы еще лучше, если бы это не требовало так много действий с мышью. Мне бы хотелось просто нажать горячую клавишу, и содержимое последней команды сразу попало бы в буфер обмена.

Я посмотрел на API Python, но ничего конкретного не нашел, что могло бы помочь решить эту проблему.

Вы пробовали команды pbcopy и pbpaste?

history : отображает все предыдущие команды

!history_number: предыдущая реализация истории

!history_number|pbcopy

pbpaste

Ответ

Для автоматизации захвата вывода последней команды в iTerm2 и последующего копирования его в буфер обмена, вы можете воспользоваться утилитами командной строки pbcopy и pbpaste. Вот пошаговая инструкция, как это можно сделать:

  1. Использование pbcopy:
    Утилита pbcopy позволяет копировать текст, переданный ей через стандартный ввод, непосредственно в буфер обмена. Вы можете использовать её в связке с другими командами для копирования вывода последней выполненной команды.

  2. Просмотр истории команд:
    Вам нужно знать номер предыдущей команды. Для этого используйте команду history, которая выведет список всех ранее выполненных команд (при этом каждая команда будет иметь свой номер).

  3. Копирование вывода последней команды в буфер обмена:
    Чтобы скопировать вывод последней выполненной команды, вы можете воспользоваться следующим командным примером:

    !n | pbcopy

    Здесь n – это номер команды в истории, которую вы хотите повторно выполнить и скопировать её вывод. Например, если вывод вашей последней команды отображался под номером 10 в истории, выполните:

    !10 | pbcopy
  4. Создание сочетания клавиш:
    Чтобы упростить процесс, вы можете создать функцию в вашем .bash_profile или .zshrc (в зависимости от используемого шелла), следуя следующему примеру. Это позволит вам просто вызывать функцию и автоматически копировать вывод последней команды:

    copy_last_command() {
       history -n   # Обновить историю команд
       last_command=$(fc -ln -1)  # Получить последнюю команду
       eval "$last_command" | pbcopy  # Выполнить команду и скопировать вывод
    }
    alias clc=copy_last_command

    После добавления этой функции и перезапуска терминала, вы сможете просто ввести clc и нажать Enter. Это выполнит последнюю команду и скопирует её вывод в буфер обмена.

  5. Использование горячей клавиши в iTerm2:
    Чтобы сделать процесс ещё более автоматизированным, вы можете связать выполнение функции с горячей клавишей в iTerm2:
    • Откройте iTerm2 и перейдите в Preferences (Настройки).
    • Перейдите на вкладку Keys.
    • Нажмите на кнопку Create a Dedicated Hotkey.
    • Настройте желаемую комбинацию клавиш.
    • Установите действие на выполнение команды clc.

Теперь, когда вы нажимаете назначенную горячую клавишу, последняя команда будет выполнена, а её вывод автоматически скопируется в буфер обмена.

Таким образом, вы избавитесь от необходимости щёлкать мышью, и процесс станет значительно более удобным.

Оцените материал
Добавить комментарий

Капча загружается...