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

10

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

Durante a pesquisa, encontrei esta entrada, mas uma troca como a exibida abaixo abriu um Terminal com três guias na minha pasta pessoal. A mensagem de erro mostrou:

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

O script fica 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 = "/ some / thing /" também não ajudou. Você consegue ver um erro?

Kerkdyk
fonte

Respostas:

8

O seguinte funciona para mim em 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
Richard Holloway
fonte
3

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

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

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

OUTRA NOTA IMPORTANTE:
Mesmo que não fosse esse o caso, você ainda teria problemas. O problema está em tentar usar a --executeopção quando você realmente pretende o significado da --commandopção. Na documentação da página de manual, ele afirma especificamente

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

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

(ênfase minha)

Em outras palavras, provavelmente não será analisado da maneira que você pensa que deveria. O uso --executeevita que você passe outras opções para gnome-terminal.

Um trecho de um dos meus próprios scripts, onde 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"

(Aliás, tentar usar o --commandsinalizador com cdou hometambém resultará no erro familiar "Não existe esse arquivo ou diretório".)

Espero que não demore muito. Eu só estou tentando ser completo.

Dain42
fonte