Можно ли открыть новую вкладку в терминале Mac OS X из командной строки на текущей открытой вкладке?
Я знаю, что сочетание клавиш для открытия новой вкладки в Терминале - «CMD + t», но я ищу решение на основе сценария, выполняемое в командной строке.
echo hello
в эту новую вкладку.-e 'tell application "Terminal" to do script "echo hello" in selected tab of the front window'
в конец команды osascript.open -a iTerm ~/Applications/
-e 'tell application "Terminal" to do script "cd /path/to/target/directory" in selected tab of the front window'
. Обратите внимание, что если путь исходит от переменной, вам нужно будет использовать строку в двойных кавычках вместо одинарных кавычек и экранировать внутреннюю строку в кавычках и, возможно, сам путь.Обновление : этот ответ приобрел популярность благодаря функции оболочки, опубликованной ниже, которая все еще работает с OSX 10.10 (за исключением
-g
опции).Однако более полнофункциональная, более надежная и протестированная версия скрипта теперь доступна в реестре npm в виде интерфейса командной строки
ttab
, который также поддерживает iTerm2 :Если у вас установлен Node.js , просто запустите:
(в зависимости от того, как вы установили Node.js, возможно, вам придется добавить
sudo
).В противном случае следуйте этим инструкциям .
После установки запустите,
ttab -h
чтобы получить краткую информацию об использовании илиman ttab
просмотреть руководство.Основываясь на принятом ответе, ниже представлена удобная функция bash для открытия новой вкладки в текущем окне терминала и, при необходимости, выполнения команды (в качестве бонуса вместо этого есть вариантная функция для создания нового окна ).
Если указана команда, ее первый токен будет использоваться в качестве заголовка новой вкладки.
Примеры вызовов:
ПРЕДОСТЕРЕЖЕНИЕ : при запуске
newtab
(илиnewwin
) из сценария исходная рабочая папка сценария будет рабочей папкой в новой вкладке / окне, даже если вы измените рабочую папку внутри сценария перед вызовомnewtab
/newwin
- передатьeval
сcd
командой в качестве обходного пути (см. пример выше).Исходный код (вставьте, например, в свой профиль bash):
источник
-g
(не активируйте Терминал при создании новой вкладки / окна) и-G
(не активируйте Терминал и не меняйте активную вкладку внутри Терминала ) - полезно, например, при запуске сервера в фоновом режиме. Обратите внимание, что при создании новой вкладки таким образом, Терминал все равно должен быть активирован на короткое время, прежде чем будет повторно активировано ранее активное приложение.newtab
, к сожалению, НЕ работает. Обходной путь - передатьeval
оператор сcd
командойnewtab
; например:newtab eval "cd ~/Library/Application\ Support; ls"
. Заключите в двойные кавычки всю переданную командуeval
и используйте обратную косую черту внутри.function newtab
иfunction newwin
(однако, БЕЗ скобок), чтобы избежать столкновения с псевдонимами при определении функций, но обратите внимание, что при вызове псевдоним с тем же именем имеет приоритет (чтобы обойти псевдоним, ad-hoc, заключить в кавычки любую часть имени функции, например:)\newtab
.<name>() { ... }
синтаксиса функции POSIX приводит<name>
к расширению псевдонима , что нарушает определение функции (ошибка синтаксического анализа!), Если псевдоним<name>
был определен. Обычно это не вызывает беспокойства, поскольку в обычно вызываемых скриптах раскрытие псевдонимов по умолчанию выключено. Однако в сценариях, ПОЛУЧЕННЫХ из ИНТЕРАКТИВНОЙ оболочки - например, в файлах профиля / инициализации - расширение псевдонима включено. Исправление: Используйтеfunction <name> { ... }
синтаксис, отличный от POSIX, для определения функции -<name>
тогда НЕ подлежит расширению псевдонима.if [ "${BASH_SOURCE}" == "${0}" ]
с case, чтобы его можно было вызвать как сценарий (напримерnewtab.sh
,newwin.sh
): gist.github.com/westurner/01b6be85e5a51fda22a6Вот как это делает bash_it :
После добавления этого файла в ваш .bash_profile вы должны использовать эту
tab
команду, чтобы открыть текущий рабочий каталог в новой вкладке.См. Https://github.com/revans/bash-it/blob/master/plugins/available/osx.plugin.bash#L3
источник
Это открывает новый терминал и выполняет внутри него команду «echo hello».
источник
do script ""
с пустой строкой для создания нового терминала без ввода команды.Если вы используете oh-my-zsh (который должен использовать каждый модный компьютерщик), после активации плагина «osx»
.zshrc
просто введитеtab
команду; он откроет новую вкладку иcd
в каталоге, в котором вы были.источник
tab
кажется, ничего не делаетСочетание клавиш
cmd-t
открывает новую вкладку, поэтому вы можете передать это нажатие клавиши команде OSA следующим образом:osascript -e 'tell application "System Events"' -e 'keystroke "t" using command down' -e 'end tell'
источник
Я добавил их в свой .bash_profile, чтобы иметь доступ к tabname и newtab
Поэтому, когда вы находитесь на определенной вкладке, вы можете просто ввести
чтобы организовать все открытые вкладки, которые у вас есть. Это намного лучше, чем получить информацию на вкладке и изменить ее там.
источник
Я знаю, что это старый пост, но у меня это сработало:
Чтобы запустить команду, как указано ниже, потребуется немного уловки:
источник
когда вы находитесь в окне терминала, команда + n => открывает новый терминал, а команда + t => открывает новую вкладку в текущем окне терминала.
источник
Если вы используете iTerm, эта команда откроет новую вкладку:
источник
и вы можете передать целевой каталог в качестве параметра
источник
А как насчет этого простого фрагмента, основанного на стандартной команде сценария (echo):
источник
С установленным X (например, из homebrew или Quartz) простой «xterm &» делает (почти) трюк, он открывает новое окно терминала (хотя и не вкладку).
источник