Comment automatiser le démarrage d'instances de terminal pour des tâches spécifiques

10

Je passe par quelques tutoriels de programmation et pour chaque session, je dois démarrer au moins 3 fenêtres de terminal (une pour une queue de fichier journal, une pour tester la sortie, une pour exécuter diverses commandes shell dans, etc.)

En ce moment, je les démarre tous manuellement: cliquez sur l'icône Terminal, accédez au dossier de droite, tapez les commandes et changez le titre de la fenêtre en quelque chose de significatif.

Existe-t-il un moyen d'écrire un script ou quelque chose qui automatiserait cela pour moi? Et si oui, comment?

(Je suis cool de ne pas obtenir un script complet comme réponse. Un pointeur par où commencer à lire fonctionnerait aussi.)

Adam Lear
la source

Réponses:

9

Puisque vous cliquez sur l'icône Terminal, je suppose que vous utilisez gnome-terminal.

J'ai obtenu une liste d'options en utilisant gnome-terminal --helpla ligne de commande et en lisant à partir de là.

Sur la base de la réponse de maco, je pourrais suggérer quelque chose comme ceci:

gnome-terminal --window --title=Log -e "tail -f /var/log/syslog" --window --title=Output --working-directory=output --window --active --title=Dev --working-directory=dev/project

Cet exemple démarre trois fenêtres (bien que vous puissiez passer --tabpour les onglets) et définit les répertoires de travail (par rapport à la maison) et les titres pour chacun, démarre la tailcommande en une et active la troisième fenêtre.

Bien sûr, vous préférerez peut-être utiliser des lignes distinctes pour lancer chaque fenêtre, en particulier si vous avez de nombreux arguments.

Une autre chose utile à faire, une fois vos fenêtres arrangées à votre guise, est d’utiliser

gnome-terminal --save-config=FILE

Cela crée un fichier de configuration avec des informations sur toutes les fenêtres et tous les onglets de terminaux ouverts (y compris les titres, les répertoires de travail, etc.). Le lancement de gnome-terminal avec l' --load-configoption recréera alors votre mise en page.

De nombreux développeurs qui travaillent avec plusieurs terminaux aiment utiliser Terminator car il ajoute des fonctionnalités telles qu'une disposition de grille et des raccourcis clavier.

jbowtie
la source
Le faire de cette façon avec l'indicateur -e entraînera-t-il la fermeture de la fenêtre dès que la commande sera exécutée? Et si oui, est-il possible de faire en sorte que la fenêtre reste ouverte?
emf
8

Quel que soit l'émulateur de terminal que vous utilisez, vous devriez pouvoir accepter une commande comme argument. Par exemple:

gnome-terminal -e "tail -f /var/log/syslog"

Ajoutez simplement ces commandes à votre démarrage automatique dans Système -> Préférences -> Sessions (Ubuntu) ou Paramètres système -> Démarrage automatique (Kubuntu)

maco
la source
4

Vous pouvez également automatiser cela à l'aide d'un script. Je recommande de lire le Guide de script avancé Bash ou le HOWTO de programmation Bash, ainsi que la page de manuel du terminal que vous utilisez.

Voici un exemple simple:

$ vi your-script
#!/bin/bash
gnome-terminal -e "tail -f /var/log/syslog"
gnome-terminal --working-directory=/foo/bar
gnome-terminal --whatever-else

Rendez-le simplement exécutable:

$ chmod +x your-script
anonyme
la source
n'avez-vous pas besoin de exectout cela?
maco
Oui, sauf si gnome-terminal est déjà en cours d'exécution, la commande ouvre simplement une nouvelle fenêtre pour l'autre processus en cours, puis se ferme.
LassePoulsen