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?

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

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.