Je dois ouvrir plusieurs onglets de terminal, leur donner des titres, aller dans un répertoire et faire exécuter une commande à chaque onglet.
Je suis nouveau sur Linux et les scripts shell, après avoir recherché en ligne et vérifié certaines solutions, j'ai fait ce script ( EDITED basé sur les réponses ci-dessous):
#!/bin/bash
cd /media/Extra/Project
tab=" --tab-with-profile=Default"
options=(--tab --title=Terminal)
cmds[1]="'rails s'"
titles[1]="Server"
cmds[2]="'rails c'"
titles[2]="Console"
for i in 1 2; do
options+=($tab --title="${titles[i]}" -e "bash -c \"${cmds[i]} ; bash\"" )
done
gnome-terminal "${options[@]}"
exit 0
Il ouvre les onglets, les nomme, mais ne parvient pas à exécuter les commandes générant cette erreur:
Une erreur s'est produite lors de la création du processus enfant pour ce terminal
Un autre inconvénient est que si j'arrête la commande en cours d'exécution, il ferme l'onglet, ce que je ne veux pas. Je dois pouvoir arrêter la commande et l'exécuter à nouveau dans le même onglet.
Quel est le problème avec le script? Existe-t-il un autre moyen plus simple de le faire?
Remarque: Si j'ai supprimé la partie (-e "\" bash -c $ {cmds [i]}; bash \ "") de la commande, il ouvre les onglets dans le répertoire donné et les nomme, sans erreur.
-Edit-1:
Après avoir appliqué la réponse @Tuknutx ci-dessous et modifié le script, l'erreur n'apparaît plus, mais elle me donne bash: rails c: command not found
et rails s
crée une nouvelle application rails au lieu de démarrer le serveur rails, j'utilise .rmvrc pour sélectionner un jeu de gemmes une fois que ce dossier est accédé .
cmds[1]="'ping 192.168.9.9'"
cela me donne la même erreur , mais je résolu en supprimant seule citation. Donc, si j'écris, cmds[1]="ping 192.168.9.9"
ça marche.
tab=" --tab-with-profile=Default"
??