Comment ouvrir plusieurs onglets de terminal dans différents dossiers (répertoires de travail)?

10

Je veux qu'un script ouvre plusieurs onglets dans différents dossiers.

Lors de la recherche, j'ai trouvé cette entrée, mais un échange comme vu ci-dessous a ouvert un terminal avec trois onglets dans mon dossier personnel. Le message d'erreur a montré:

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

Le script ressemble à ceci:

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

Une variation avec --working-directory = "/ some / thing /" n'a pas aidé non plus. Voyez-vous une erreur?

Kerkdyk
la source

Réponses:

8

Ce qui suit fonctionne pour moi sur oneiric. Vous pouvez l'utiliser à la place de votre version:

#!/bin/bash
gnome-terminal --tab  --working-directory="/var/www/" --tab --working-directory='/home/' --tab --working-directory='/home/'
exit 0
Richard Holloway
la source
3

Votre erreur spécifique est due à une mauvaise utilisation de l' --executeoption. Si vous regardez l'extrait de la page de manuel ci-dessous, vous remarquerez que le signe égal --execute n'est pas répertorié dans la syntaxe, car il exécute simplement le reste de la ligne de commande. Un exemple d'utilisation correcte serait:

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

NOTE IMPORTANTE: L'
utilisation cdest un peu un cas spécial, de toute façon. cdn'est pas comme la plupart des commandes - il ne lance pas son propre binaire / exécutable. Il est interprété directement par bash(ou par le shell que vous utilisez). Par conséquent, tenter d'appeler cdn'est pas d'accord avec les indicateurs --executeet -x(qui semblent vouloir générer directement un processus enfant). Le même problème se produira (j'ai vérifié) avec d'autres commandes qui sont directement traitées par bashlike home. Même s'il est utilisé correctement, sans le signe égal, il en résultera toujours une erreur: "Fichier ou répertoire introuvable." Par conséquent, l'utilisation de l' --working-directory=[DIRECTORY]option est votre meilleur pari pour faire ce que vous voulez faire.

UNE AUTRE NOTE IMPORTANTE:
Même si ce n'était pas le cas, vous auriez toujours des ennuis. Le problème consiste à essayer d'utiliser l' --executeoption lorsque vous avez réellement l'intention de la signification de l' --commandoption. Dans la documentation de la page de manuel, il indique spécifiquement

-e, --command = STRING
Exécute l'argument de cette option à l'intérieur du terminal.

-x, --execute
Exécute le reste de la ligne de commande à l'intérieur du terminal.

(c'est moi qui souligne)

En d'autres termes, cela ne va probablement pas l'analyser comme vous le pensez. L'utilisation --executevous empêche de transmettre d'autres options à gnome-terminal.

Un extrait d'un de mes propres scripts où j'exécute plusieurs commandes dans des onglets séparés (les noms ont changé pour ma vie privée / sécurité):

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

(Par ailleurs, essayer d'utiliser l' --commandindicateur avec cdou homeentraînera également l'erreur familière "Aucun fichier ou répertoire".)

J'espère que ce n'est pas trop long. J'essaie juste d'être minutieux.

Dain42
la source