web-dev-qa-db-fra.com

Définir le titre de chaque onglet de terminal dans gnome-terminal à l'aide d'un script bash

J'utilise Ubuntu 16.04

Je veux ouvrir plusieurs onglets de terminal, exécuter des commandes et définir un titre. Je peux ouvrir plusieurs onglets avec cette commande:

gnome-terminal --tab -e "command1" --tab -e "command2"

mais ne peut pas utiliser l'option --title car elle n'est pas disponible dans cette version.

Je sais que mate-terminal peut le faire, mais je veux utiliser gnome-terminal.

J'ai appliqué la solution postée ici et cela a fonctionné, mais quand je cours

gnome-terminal --tab -e "bash -c 'set-title 99;ping 192.168.7.99'"

Ça montre:

bash: set-title: command not found
PING 192.168.7.99 (192.168.7.99) 56(84) bytes of data.
64 bytes from 192.168.7.99: icmp_seq=1 ttl=128 time=0.425 ms
64 bytes from 192.168.7.99: icmp_seq=2 ttl=128 time=0.353 ms
64 bytes from 192.168.7.99: icmp_seq=3 ttl=128 time=0.335 ms

J'ai également appliqué la solution suggérée ici sous Unix et Linux SE

J'ai aussi lu ce message setting-terminal-tab-title mais la réponse acceptée ne résout pas le problème que je rencontre dans la version 16.04 os ou gnome-terminal version 3.18.3. Une autre solution permet d'utiliser un autre terminal xterm et je veux utiliser gnome-terminal.

6
d a i s y

Si vous souhaitez utiliser une fonction stockée dans ~/.bashrc, alors sourcez ce fichier dans votre commande:

gnome-terminal --tab -e "bash -c 'source ~/.bashrc;set-title 99;ping 192.168.7.99'"

Vous avez mentionné dans les commentaires que vous envisagez de l'utiliser dans un script Shell et avec plusieurs onglets gnome-terminal. À titre de preuve de concept, vous pouvez utiliser le script suivant comme exemple:

#!/bin/bash
gnome-terminal --tab -e "bash -c 'printf \"\033]0;TEST1\007\"; sleep 7'" \
               --tab -e "bash -c 'printf \"\033]0;TEST2\007\"; ping -c 4 8.8.8.8'" \

Au lieu de la fonction bash, ceci utilise printf et les séquences d'échappement directement. S'il vous plaît soyez conscient des barres obliques inverses.

9
Sergiy Kolodyazhnyy