GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Ouverture de plusieurs onglets de terminal et exécution de la commande ?

Je dois ouvrir plusieurs onglets de terminal, leur donner des titres, accéder à un répertoire et faire en sorte que chaque onglet exécute une commande.

Je suis nouveau sur Linux et les scripts shell, après avoir recherché en ligne et vérifié certaines solutions, j'ai créé 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 n'exécute pas 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 défaut est que si j'arrête la commande en cours d'exécution, cela 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.

Qu'est-ce qui ne va pas avec le script ? Existe-t-il un autre moyen plus simple de procéder ?

Remarque :Si j'ai supprimé la partie (-e ""bash -c ${cmds[i]} ;bash"") de la commande, elle 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 cela 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 gemset une fois ce dossier accessible.

Réponse acceptée :

Je recommanderais d'utiliser tmux avec tmuxinator , il fera le travail pour vous, et vous pouvez compter sur terminator les mises en page aussi !

Pour terminator layout checkout la réponse de mhnagaoka ici askubuntu aussi :

  1. Après avoir configuré votre mise en page, cliquez avec le bouton droit sur l'arrière-plan de n'importe quel terminal et choisissez PréférencesMises en page onglet et cliquez sur Ajouter bouton.

  2. Donnez-lui un nom et appuyez sur Fermer .

  3. Cela devrait créer le ~/.config/terminator/config mentionné fichier.

  4. Vous pouvez maintenant démarrer le terminateur en utilisant la mise en page enregistrée en utilisant :terminator -l yourLayout (remplacez votreLayout avec ce que vous
    avez choisi à l'étape 2).

  5. (facultatif) Modifiez le ~/.config/terminator/config fichier de sorte que là où il est écrit [layouts] et imbriqué en dessous [[yourLayout]] , renommez votreLayout à par défaut et supprimer/renommer le précédent par défaut agencement. Désormais, lorsque Terminator démarre sans aucun paramètre, il charge
    votre [[default]] personnalisé mise en page !


Ubuntu
  1. Afficher et supprimer l'historique du terminal dans Ubuntu 20.04 - Meilleure méthode ?

  2. Différence entre " et " sur la ligne de commande (bash) ? ?

  3. Ssh vers plusieurs hôtes et exécuter une commande ?

  4. Différence entre les symboles '&&' et ';' dans un terminal bash standard ?

  5. | Dans Terminal Command ?

Exemples de commandes d'écran pour gérer plusieurs sessions de terminal

Créer et utiliser des alias Bash sous Linux

Comment afficher et supprimer l'historique du terminal dans Ubuntu 20.04

Copier et coller du texte sur le terminal Linux

Travailler avec plusieurs onglets de terminal dans Ubuntu

Installer et utiliser Guake - Un émulateur de terminal déroulant pour Ubuntu