Frequentemente, preciso abrir uma nova guia no mesmo diretório da minha guia atual para fazer outra coisa enquanto minha guia atual estiver ocupada por um longo processo. No entanto, por padrão, quando você cria uma nova guia, o Terminal.app é iniciado em ~ /. Alguma idéia de como fazê-lo saltar automaticamente?
24
Respostas:
No OS X 10.7 (Lion), o Terminal.app suporta isso nativamente:
New Windows/Tabs open in: Same working directory
fonte
É preciso ter muito cuidado ao passar strings por diferentes ambientes.
Como executo 10.4, o meu script 'tfork' sempre abre uma nova janela. Deve ser fácil adaptá-lo para usar uma guia:
Exemplo:
tfork git log -p ..FETCH_HEAD
Alteração: código de um processo já em execução que "ocupa" uma guia Terminal
A idéia de "o diretório atual do programa que ocupa a guia atual" não é tão óbvia quanto se poderia esperar.
Cada guia Terminal possui um único dispositivo tty que é usado pelos processos executados (inicialmente, um shell; depois, o que o shell iniciar).
Cada Terminal (normal) tty possui um único grupo de processos em primeiro plano que se pode considerar como "ocupando" o tty.
Cada grupo de processos pode ter vários processos.
Cada processo pode ter seu próprio diretório de trabalho atual (cwd) (alguns ambientes dão a cada thread seu próprio cwd ou equivalente a cwd, mas vamos ignorá-lo).
Os fatos anteriores estabelecem um tipo de trilha que de tty a cwd: tty -> grupo de processos em primeiro plano -> processos do grupo de processos em primeiro plano -> cwds.
A primeira parte (dos processos tty ao primeiro plano) do problema pode ser resolvida com a saída do ps :
(onde "ttyp6" é o nome do tty de interesse)
O mapeamento do processo (PID) para o cwd pode ser feito com lsof :
(onde "2515,2516" é uma lista separada por vírgula dos processos de interesse)
Porém, no Tiger, não vejo uma maneira direta de obter o nome do dispositivo tty de uma janela específica do Terminal . Existe uma maneira horrivelmente feia de obter o nome tty em Tiger. Talvez o Leopard ou o Snow Leopard possam fazer melhor.
Eu juntei tudo isso em um AppleScript assim:
Salve-o com o Editor de scripts ( Editor AppleScript no Snow Leopard) e use um iniciador (por exemplo, FastScripts ) para atribuí-lo a uma chave (ou apenas execute-o no menu AppleScript (ativado por / Aplicativos / AppleScript / AppleScript Utility.app )).
fonte
Eu publicou um script que usa Chris Johnsen código 's acima e outro script para abrir a nova guia no diretório atual com as configurações atuais, principalmente porque eu cor-coordenam meus terminais. Obrigado Chris, por esse script, estou usando isso há alguns meses e é uma ótima economia de tempo.
(* Este script abre uma nova guia Terminal.app no diretório da guia atual com as mesmas configurações. Você precisará, se ainda não o fez, ativar o acesso a dispositivos auxiliares, conforme descrito aqui: http: // www .macosxautomation.com / applescript / uiscripting / index.html
É quase todo o trabalho de dois scripts juntos, obrigado a eles:
O script de Chris Johnsen abre uma nova guia no diretório atual: OS X Terminal.app: como iniciar uma nova guia no mesmo diretório da guia atual?
O “menu_click” de Jacob Rus permite criar a guia com as mesmas configurações, como a API do Terminal não: http://hints.macworld.com/article.php?story=20060921045743404
Se você alterar o nome de um perfil de terminal, a API AppleScript retornará o nome antigo até você reiniciar o aplicativo, para que o script não funcione nas configurações renomeadas até então. Ugh. Além disso, a necessidade de ativar o Terminal para executar o comando do menu traz todas as janelas do terminal para a frente.
fonte
Como mencionado em outro lugar , se você estiver usando o Oh My Zsh , basta adicionar o
terminalapp
plugin. No seu arquivo .zshrc (supondo que você já esteja usando o plugin git:fonte
Eu uso esse script alias / shell para fazer isso.
fonte
fonte