Script ou lanceur pour configurer plusieurs onglets de terminal à différents emplacements

14

J'ai déjà étudié cela il y a quelque temps, mais je n'ai trouvé aucune solution qui ouvrirait des onglets de terminal, exécuterait des commandes et me permettrait ensuite de continuer à utiliser ces onglets de terminal. Toutes les façons dont j'ai trouvé le lancement d'onglets de terminal à partir de la ligne de commande ne feraient que lancer les onglets et ne me permettraient pas de continuer à les utiliser après cela.

Le problème que j'essaie de résoudre est que chaque fois que j'ai besoin de démarrer ma machine (ou ma machine virtuelle dans ce cas), je dois configurer environ six onglets de terminal différents pour pointer vers différents dossiers et exporter certaines variables d'environnement sur certains d'entre eux.

J'ai expérimenté avec le terminal xfce et j'ai obtenu un moyen avec une commande comme celle-ci:

terminal --disable-server -H --tab --title=1st_tab --tab --title=2nd_tab

Mais si j'ajoute un argument de commande, l'onglet n'est plus utilisable lorsqu'il s'ouvre:

terminal --disable-server -H --tab --title=1st_tab --tab --title=2nd_tab --command="cd ~/folder1"

http://docs.xfce.org/apps/terminal/command-line

J'utilise actuellement Red Hat Linux avec gnome 2.28.2.

user232548
la source

Réponses:

18

Vous pouvez le faire en utilisant GNOME terminatorun excellent terminal avec, entre autres, la possibilité de diviser les volets horizontalement ou verticalement.

Une fois que vous avez installé, terminatorvous pouvez configurer un profil avec les paramètres souhaités (instructions adaptées à partir d' ici ):

  1. Exécutez terminatoret configurez la mise en page souhaitée. Vous pouvez utiliser Ctrl+ Shift+ Epour diviser les fenêtres verticalement et Ctrl+ Shift+ O(c'est O comme dans les oodles, pas zéro) pour diviser horizontalement. Pour cet exemple, j'ai créé une mise en page à 6 volets:

    entrez la description de l'image ici

  2. Faites un clic droit sur la terminatorfenêtre et choisissez "Préférences". Une fois la fenêtre Préférences ouverte, allez dans "Mises en page" et cliquez sur "Ajouter":

    entrez la description de l'image ici

  3. Cela remplira la liste de disposition avec votre nouvelle disposition:

    entrez la description de l'image ici

  4. Trouvez chacun des terminaux que vous avez créés dans la mise en page et cliquez dessus, puis à droite entrez la commande que vous souhaitez exécuter en eux au démarrage:

    entrez la description de l'image ici

    IMPORTANT: notez que la commande est suivie de ; bash. Si vous ne le faites pas, les terminaux ne seront pas accessibles car ils exécuteront la commande que vous donnez et quitteront. Vous devez lancer un shell après chaque commande pour pouvoir utiliser les terminaux.

    Une fois que vous avez défini toutes les commandes, cliquez sur "Fermer" puis quittez terminator.

  5. Ouvrez le terminatorfichier de configuration ~/.config/terminator/configet supprimez la section sous les dispositions pour la configuration par défaut. Modifiez ensuite le nom de la mise en page que vous avez créée par défaut. Ça devrait ressembler a quelque chose comme ca:

    [global_config]
    [keybindings]
    [profiles]
      [[default]]
    [layouts]
      [[default]]
        [[[child0]]]
          position = 446:100
          type = Window
          order = 0
          parent = ""
          size = 885, 550
        [[[child1]]]
          position = 444
          type = HPaned
          order = 0
          parent = child0
        [[[child2]]]
          position = 275
          type = VPaned
          order = 0
          parent = child1
        [[[child5]]]
          position = 219
          type = HPaned
          order = 1
          parent = child1
        [[[child6]]]
          position = 275
          type = VPaned
          order = 0
          parent = child5
        [[[child9]]]
          position = 275
          type = VPaned
          order = 1
          parent = child5
        [[[terminal11]]]
          profile = default
          command = 'df -h; bash'
          type = Terminal
          order = 1
          parent = child9
        [[[terminal10]]]
          profile = default
          command = 'export foo="bar" && cd /var/www/; bash'
          type = Terminal
          order = 0
          parent = child9
        [[[terminal3]]]
          profile = default
          command = 'ssh -Yp 24222 [email protected]'
          type = Terminal
          order = 0
          parent = child2
        [[[terminal4]]]
          profile = default
          command = 'top; bash'
          type = Terminal
          order = 1
          parent = child2
        [[[terminal7]]]
          profile = default
          command = 'cd /etc; bash'
          type = Terminal
          order = 0
          parent = child6
        [[[terminal8]]]
          profile = default
          command = 'cd ~/dev; bash'
          type = Terminal
          order = 1
          parent = child6
    [plugins]
    

Le résultat final est que lorsque vous l'exécutez, terminatoril s'ouvrira avec 6 volets, dont chacun a exécuté ou exécute les commandes que vous avez spécifiées:

entrez la description de l'image ici

terdon
la source
Après avoir entré mes commandes dans la zone Custom commandet appuyé sur Fermer, il n'est pas enregistré lors de la réouverture. Puis-je savoir pourquoi? J'utilise Ubuntu 16 Desktop
Nam G VU
@NamGVU hmm, je viens de tester et j'ai le même problème. On dirait un bug dans la version actuelle de terminator (cela a fonctionné il y a 3 ans lorsque cette réponse a été publiée). Cela fonctionne toujours si vous modifiez le ~/.config/terminator/configfichier comme indiqué à l'étape 5.
terdon
2

Afin d'avoir Terminator cddans un répertoire au lancement, la commande à configurer est:

cd ~/someFolder; bash

Cela ouvre un terminal à l'emplacement cded à.

En fait, terdon le mentionne dans son article, mais il est enterré dans son merveilleux mini-tutoriel. Ce n'est pas après avoir compris cela que j'ai remarqué qu'il était enterré dans son message, donc je laisse cette réponse afin de le souligner.

dotancohen
la source
0

La commande doit être suivie de "; bash". Le reste doit être conforme aux réponses de terdon /superuser//a/610048

Dhruba Adhikari
la source