Como abrir várias abas do terminal em diferentes pastas (diretórios de trabalho)?

9

Eu quero que um script abra várias guias em pastas diferentes.

Enquanto procurava, encontrei esta entrada, mas uma troca como visto abaixo abriu um Terminal com três abas na minha pasta pessoal. A mensagem de erro mostrou:

Failed to parse arguments: Unknown option --execute=cd /some/thing/

O script é assim:

#!/bin/sh
gnome-terminal --tab --execute="cd /some/thing/" \
          --tab --execute="cd /home/" \
          --tab --execute="cd /home/" \
exit 0

Uma variação com --working-directory="/ alguma / coisa /" também não ajudou. Você pode ver um erro?

    
por Kerkdyk 08.02.2012 / 14:47

2 respostas

7

O seguinte funciona para mim onírico. Você pode usar isso no lugar da sua versão:

#!/bin/bash
gnome-terminal --tab  --working-directory="/var/www/" --tab --working-directory='/home/' --tab --working-directory='/home/'
exit 0
    
por Richard Holloway 08.02.2012 / 16:08
3

Seu erro específico é causado por não usar a opção --execute corretamente. Se você olhar o trecho da página man abaixo, você notará que --execute não possui um sinal de igual listado como parte da sintaxe, já que simplesmente executa todo o restante do comando linha. Um exemplo de uso correto seria:

gnome-terminal --execute play '/home/cjohnson/Still Alive.mp3'

NOTA IMPORTANTE:
Usar cd é um caso especial, de qualquer forma. cd não é como a maioria dos comandos - ele não inicia um binário / executável próprio. Ele é interpretado diretamente por bash (ou qualquer shell que você esteja usando). Portanto, a tentativa de invocar cd não concorda com os sinalizadores --execute e -x (que parecem querer gerar diretamente um processo filho). O mesmo problema ocorrerá (eu verifiquei) com outros comandos que são processados diretamente por bash like home . Mesmo se usado corretamente, sem o sinal de igual, ainda resultará em um erro: "Arquivo ou diretório não encontrado". Portanto, usar a opção --working-directory=[DIRECTORY] é sua melhor aposta para fazer o que você deseja fazer.

UMA NOTA IMPORTANTE:
Mesmo que isso não acontecesse, você ainda teria problemas. O problema está em tentar usar a opção --execute quando você realmente pretende o significado da opção --command . Na documentação da página de manual, ele especifica especificamente

  

-e, --command = STRING
     Execute o argumento para esta opção dentro do terminal.

     

-x, --execute
     Execute o restante da linha de comando dentro do terminal.

(ênfase minha)

Em outras palavras, provavelmente não vai analisá-lo da maneira que você acha que deveria. Usar --execute impede que você passe mais opções para gnome-terminal .

Um trecho de um dos meus próprios scripts em que executo vários comandos em guias separadas (nomes alterados para minha privacidade / segurança):

gnome-terminal --tab --command="ssh cjohnson@GLaDOS" --tab --command="ssh drattman@GLaDOS"

(Incidentalmente, tentar usar o sinal --command com cd ou home também resultará no erro familiar "Nenhum arquivo ou diretório").

Espero que isso não seja muito longo. Eu só estou tentando ser minucioso.

    
por Dain42 25.06.2012 / 07:07