Janela de terminal no Mac OS X

4

É possível criar um atalho para abrir uma janela de terminal para um diretório específico? Estou usando muito o gcc para construir pequenos programas em C, mas é chato ter que navegar para o diretório onde meu código-fonte está. Existe alguma maneira de configurar um atalho (ou qualquer coisa) para o terminal para abrir a janela em um determinado diretório?

Atualização : esse problema ainda está me iludindo. A resposta mais votada é aquela que acabei de tentar implementar. Mas, aparentemente, estou tendo problemas para montar o que seria o caminho $ PROJECTDIR.

Vamos supor que os arquivos estão em algo como o seguinte local:

 /Documents/SVN Working Copies/School/Term-1/CSC-373/

Eu posso chegar lá quando eu cd para cada coisa sozinha, mas eu tenho usado o curinga:

cd doc*
cd svn*
cd *
cd *

O que eu tentei foi (coisas como):

cd /Documents/SVN Working Copies/School/Term-1/CSC-373/  

(novamente, no lugar de $ PROJECTDIR.) Quando eu abro a janela do terminal, eu tenho acesso a documentos, então imaginei que iria criar um novo perfil ...

    
por Frank V 23.06.2009 / 05:53

9 respostas

4

Você pode fazer isso com perfis de shell no Terminal.app.

  1. Selecione o menu Terminal , vá para Preferências .
  2. Selecione Configurações nos botões acima.
  3. Selecione um perfil existente ou crie um novo
  4. Na guia Shell , marque a caixa Executar comando e insira cd $ PROJECTDIR onde $ PROJECTDIR é o caminho para o seu projeto.
  5. Marque Executar dentro do shell

Agora, no menu Nova janela ou Nova guia ao criar uma janela ou guia com o perfil modificado, ele executará o comando cd dentro de seu bash shell e mude seu diretório para o que você quer.

Isso é útil porque você pode criar muitos perfis diferentes para tarefas diferentes. Se você quiser executar um grande número de comandos ao inicializar um perfil, coloque-o no arquivo em ~/bin/ ou em algum outro lugar no diretório inicial e execute-os. Você também pode usar o ponto e vírgula; para executar vários comandos se você tiver marcado a caixa de seleção Executar dentro do shell .

    
por 23.06.2009 / 06:18
2

Você pode criar um link simbólico (que é como um alias no OS X ou um atalho no Windows) em seu diretório inicial, que é, por padrão, o local em que o Terminal é aberto.

Digamos que os arquivos de origem do seu programa estejam localizados em / usr / bin / myapps /. E o seu diretório pessoal é / users / Frank (você pode referenciar seu diretório home usando o caminho / ~ também).

Quando você está no seu diretório home (/ ~), execute o comando

ln -s /usr/bin/myapps project

O que isto faz é criar um link simbólico chamado "projeto" para o local / usr / bin / myapps. Você pode então cd para projetar (cd / ~ / project) e terminar em / usr / bin / myapps.

Esta é a correção mais fácil, pois é temporária e pode ser removida facilmente. Eu acredito que você pode apenas

rm /~/project

Para excluir o link simbólico.

    
por 23.06.2009 / 06:05
2

Você pode usar um alias no seu ~ / .profile:

alias mycode="cd /your/path/goes/here"

Um alias pode ser usado como qualquer comando. Tipo:

user@host ~: $ mycode

e você está aí!

Desta forma, você não tem um softlink poluindo seu $ HOME, e você pode pular para lá sempre que quiser.

    
por 23.06.2009 / 06:36
2

Há uma pergunta semelhante no Stack Overflow.

Abra o terminal aqui no localizador do Mac OS

    
por 23.06.2009 / 08:42
2

Pessoalmente, não gosto das soluções baseadas em GUI ou AppleScript que vejo aqui. O que eu faria é usar o melhor comando unix no OS X: open . E.G.

open /usr/bin/screen

Você pode adaptar isso alterando /usr/bin/screen para um comando criado por você. Então crie um arquivo chamado ~/srcTerm.sh e coloque esses comandos nele:

#!/bin/sh

cd $HOME #/or/crazy/path/to/src
bash -l #or whatever interactive program you like.

Em seguida, emitir: open -a /Applications/Utilities/Terminal.app ~/srcTerm.sh

Sei que parece complicado, agora edite ~/.bash_profle e, ao lado de qualquer outro comando alias , configure um novo alias como:

alias popupsrc='open -a /Applications/Utilities/Terminal.app ~/srcTerm.sh'

Na próxima vez que você fizer login ou usar esse arquivo, use o comando popupsrc como um atalho.

Agora você pode estar dizendo para si mesmo: "Mas dlamblin , isso pressupõe que eu já tenho uma janela de terminal aberta e atualmente estou trabalhando na linha de comando. Esse não é o caso que eu estava pedindo. Eu estava procurando por algo como um ícone como o Terminal que eu posso mudar o comportamento de. E para isso eu poderia dizer algo como: "Bem, pegue todo o GUI-mousey aqui e encontre o arquivo ~/srcTerm.sh em seu finder, 'Get Info' sobre isso, e mude a opção 'Open with:' para 'Other. .. 'then' Habilitar todos os aplicativos 'e escolha o aplicativo Terminal . Não selecione' Change All ... 'Agora você pode clicar duas vezes no arquivo para abrir o seu terminal. Você pode colocar isso no seu dock, em uma pasta rápida (também conhecida como stack), ou até mesmo digite seu nome no spotlight (acessível em qualquer lugar com Command-Space) e pressione enter. "

    
por 12.07.2009 / 20:46
1

Engraçado, eu usei todas as 3 respostas até agora;)

Aqui está outra opção: use o applescript. Você pode criar scripts de macacos que abrem uma janela no diretório do localizador atual, por exemplo.

Eu tenho um monte de applescripts assim e eu os amarrei a hotkeys com Quicksilver (ou mordomo)

por padrão, eu uso um atalho que abre um terminal no diretório do localizador atual, mas apenas se o finder for o aplicativo mais avançado. Caso contrário, eu simplesmente recebo uma janela nova. Então eu também tenho scripts que abrem sessões ssh para certos servidores e reconectar a uma sessão de tela. Com a opção -x para a tela, você pode ter várias janelas erminal procurando no mesmo terminal de servidor, ótimo:)

EDITAR:

Este é o script que eu escrevi que abre uma nova janela, indo para o diretório atual do Finder se o Finder for o aplicativo atualmente ativo:

on run
    -- Figure out if we want to do the cd (doIt)
    -- Figure out what the path is and quote it (myPath)
    try
        tell application "Finder" to set doIt to frontmost
        set myPath to finder_path()
        if myPath is equal to "" then
            set doIt to false
        else
            set myPath to quote_for_bash(myPath)
        end if
    on error
        set doIt to false
    end try

    -- Figure out if we need to open a window
    -- If Terminal was not running, one will be opened automatically
    tell application "System Events" to set isRunning to (exists process "Terminal")

    tell application "Terminal"
        -- Open a new window
        if isRunning then do script ""
        activate
        -- cd to the path
        if doIt then
            -- We need to delay, terminal ignores the second do script otherwise
            delay 0.3
            do script "cd " & myPath in front window
        end if
    end tell
end run

on finder_path()
    try
        tell application "Finder" to set the source_folder to (folder of the front window) as alias
        set thePath to (POSIX path of the source_folder as string)
    on error -- no open folder windows
        set thePath to ""
    end try

    return thePath
end finder_path

-- This simply quotes all occurrences of ' and puts the whole thing between 's
on quote_for_bash(theString)
    set oldDelims to AppleScript's text item delimiters
    set AppleScript's text item delimiters to "'"
    set the parsedList to every text item of theString
    set AppleScript's text item delimiters to "'\''"
    set theString to the parsedList as string
    set AppleScript's text item delimiters to oldDelims
    return "'" & theString & "'"
end quote_for_bash

Para usá-lo, abra o Script Editor e cole-o. Em seguida, salve-o em algum lugar conveniente (eu uso ~ / Library / Scripts) e diga QuickSilver, Butler ou Google Quick Search Bar para executá-lo. Com o QS e o Butler, você também pode definir teclas de atalho globais.

Espero que isso ajude,

Wout.

    
por 23.06.2009 / 08:45
1

Não é uma solução realmente, mas você sabia que pode arrastar e soltar uma pasta ou arquivo no terminal e ele irá inserir o caminho para o item

por exemplo, digite "cd" e solte a pasta e, em seguida, pressione Enter

    
por 12.07.2009 / 18:24
0

Se o problema é simplesmente que você tem que iniciar todas as sessões no terminal com isto: cd /a/very/very/annoyingly/long/path/name , então eu posso pensar em duas soluções.

  1. Coloque isso na parte inferior do arquivo .profile (ele está no diretório inicial do usuário):

    cd / a / muito / muito / irritantemente / long / caminho / nome

  2. Edite seu CDPATH . Este método permite que você mude rapidamente as mudanças de diretório que podem ser preenchidas por tabulações. O meu parece com isso, por exemplo, já que a maioria do meu trabalho de shell está nos dois diretórios 'iliumSvn' ou 'unix.varia'.:

    export CDPATH = '.: ~: ~ / iliumSvn /: ~ / unix.varia'

Acho que 2 é mais limpo e melhor a longo prazo, mas também deve funcionar bem. O problema com 1 é que, se os seus hábitos de trabalho mudarem, você precisará se lembrar de remover essa linha, ou você ficará louco toda vez que abrir uma concha.

    
por 25.06.2009 / 13:43
0

A maneira que eu faço coisas como essa é com o href="http://www.decimus.net/dterm.php"> link do DTerm, dessa forma você pode simplesmente clicar em um KeyCombo do Editor que você estão trabalhando em (Textmate no meu caso) e você recebe uma linha de comando para este local. Você pode, então, emitir um comando (isto é, fazer) e pronto! Se você quiser abrir um terminal real lá, você pode simplesmente pressionar Command + Return em vez de Return e seu comando será executado neste diretório em uma nova janela de terminal. Parece-me muito mais fácil do que brincar com um monte de caminhos, etc.

    
por 12.07.2009 / 18:58