Вы могли попытаться отфильтровать edit-and-execute-command()
(руководство) через подходящее $EDITOR
или $VISUAL
:
$ touch foo.sh
$ open foo.sh
Набор foo.sh
содержание к следующему, и сохраняет:
#!/usr/bin/env bash
# copy current command input to clipboard -- requires local session
cat $1 | pbcopy
# clear the prompt, so no command gets executed when closing this script
# comment out the following line to execute the command you entered instead
echo -n "" > $1
exit 0
Затем сделайте исполняемый файл и установите на визуальный:
$ chmod +x foo.sh
$ export VISUAL=/Users/danielbeck/foo.sh
На a bash
подсказка (или любой readline
приводимая в действие подсказка я думаю) можно скопировать текущий ввод команд путем нажатия Ctrl-X Ctrl-E
вызвать edit-and-execute-command()
.
Отредактируйте Ваш ~/.inputrc
файл для изменения горячей клавиши для этого. Отредактируйте Ваш .bash_profile
сохранять это как Ваш $EDITOR
/$VISUAL
- недостаток очевиден, у Вас никогда не будет надлежащего $EDITOR
снова, к сожалению
С другой стороны, Вы могли попытаться копировать то, что делает этот пользователь, но он использует zsh
, нет bash
.
Сам Терминал не знает, какая часть текущей строки является Вашей подсказкой, и какая часть является Вашим входом. Так доступ это - строки, например, через AppleScript, не работал бы в целом.
Можно, однако, считать полный вывод текущей вкладки и получить ее последнюю строку, и, посредством фильтрации, попытаться удалить быструю часть его.
Моя подсказка заканчивается $
, так следующие работы команды:
tell application "Terminal" tell selected tab of window 1 to do shell script "echo '" & history & "' | sed '/^$/d' | tail -n1 | cut -d$ -f2-"
Это получит текущую вкладку текущего окна history
свойство и фильтр это через sed
для удаления всех пустых строк затем получите последнее использование строки tail
, и затем удалите все до и включая первое $
из строки (т.е. моя подсказка) использование cut
.
Вывод этой программы является Вашей текущей командной строкой. Действительно бессмысленное осуществление:
~ $ osascript Library/Scripts/get_line.scpt
osascript Library/Scripts/get_line.scpt
Для копирования его в буфер обмена в конце изменитесь на следующее:
tell application "Terminal" to tell selected tab of window 1 to do shell script "echo '" & history & "' | sed '/^$/d' | tail -n1 | cut -d$ -f2- | pbcopy"
Можно использовать Automator для создания сервиса, который не получает входа в приложении Терминал и выполняет единственное Выполнение действие Сценария AppleScript, состоящее из вышеупомянутого кода. Сохраните и дополнительно присвойте сочетание клавиш в Установках системы» Клавиатура» Горячие клавиши» Сервисы.