Мне часто нужно открывать новую вкладку в том же каталоге, что и моя текущая вкладка, чтобы сделать что-то еще, пока моя текущая вкладка занята длительным процессом. Однако по умолчанию при создании новой вкладки Terminal.app начинается с ~ /. Есть идеи, как сделать автоматический переход?
24
Ответы:
В OS X 10.7 (Lion) Terminal.app изначально поддерживает это:
New Windows/Tabs open in: Same working directory
источник
Нужно быть очень осторожным при прохождении строк в разных средах.
Я использую 10.4, поэтому мой скрипт tfork всегда открывает новое окно. Должно быть легко адаптировать его для использования вкладки:
Пример:
tfork git log -p ..FETCH_HEAD
Поправка: cwd уже запущенного процесса, «занимающего» вкладку « Терминал »
Идея «текущего каталога программы, занимающего текущую вкладку» не так очевидна, как можно было бы ожидать.
Каждая вкладка « Терминал » имеет одно tty-устройство, которое используется процессами, которые оно запускает (изначально оболочка; затем независимо от запуска оболочки).
Каждый (обычный) терминал tty имеет одну группу процессов переднего плана, которую можно считать «занимающей» tty.
В каждой группе процессов может быть несколько процессов.
Каждый процесс может иметь свой текущий рабочий каталог (cwd) (в некоторых средах каждому потоку присваивается собственный cwd или cwd-эквивалент, но мы будем игнорировать это).
Предыдущие факты указывают на то, что от tty к cwd: tty -> группа процессов переднего плана -> процессы группы процессов переднего плана -> cwds.
Первая часть (от tty до процессов переднего плана) проблемы может быть решена с помощью вывода ps :
(где «ttyp6» - это название интересующего вас tty)
Отображение из процесса (PID) в cwd может быть выполнено с помощью lsof :
(где «2515,2516» - список интересующих процессов, разделенных запятыми)
Но под Tiger я не вижу прямого способа получить имя устройства tty конкретного окна терминала . Есть ужасно безобразный способ получить имя tty в Tiger. Может быть, Леопард или Снежный Барс могут сделать лучше.
Я собрал все это вместе в AppleScript следующим образом:
Сохраните его с помощью редактора сценариев ( AppleScript Editor в Snow Leopard) и используйте средство запуска (например, FastScripts ), чтобы назначить его клавише (или просто запустите его из меню AppleScript (включено через / Applications / AppleScript / AppleScript Utility.app )).
источник
Я разместил скрипт, который использует приведенный выше код Криса Джонсона, и другой скрипт, чтобы открыть новую вкладку в текущем каталоге с текущими настройками, в основном потому, что я координирую цвета своих терминалов. Спасибо Крис, за этот сценарий, я использую его уже несколько месяцев, и это экономит время.
(* Этот сценарий открывает новую вкладку Terminal.app в каталоге текущей вкладки с теми же настройками. Вам необходимо, если вы этого еще не сделали, включить доступ для вспомогательных устройств, как описано здесь: http: // www .macosxautomation.com / AppleScript / uiscripting / index.html
Это почти вся работа двух скриптов вместе взятых, спасибо им:
Сценарий Криса Джонсена открывает новую вкладку в текущем каталоге: OS X Terminal.app: как запустить новую вкладку в том же каталоге, что и текущая вкладка?
«Menu_click» Джейкоба Руса позволяет мне создавать вкладку с теми же настройками, что и API терминала: http://hints.macworld.com/article.php?story=20060921045743404
Если вы измените имя профиля терминала, API-интерфейс AppleScript будет возвращать старое имя до тех пор, пока вы не перезапустите приложение, поэтому сценарий не будет работать с переименованными настройками до тех пор. Тьфу. Кроме того, необходимость активировать Терминал для выполнения команды меню переносит все окна терминала на передний план.
источник
Как упоминалось в другом месте , если вы используете Oh My Zsh , то вам просто нужно добавить
terminalapp
плагин. В вашем файле .zshrc (если вы уже используете плагин git:источник
Я использую этот псевдоним / сценарий оболочки, чтобы сделать это.
источник
источник