42 votes

Exécutez la commande sur une autre nouvelle fenêtre de terminal

Comment exécuter n'importe quelle commande dans une autre fenêtre de terminal?

Exemple : J'ai ouvert une fenêtre de terminal et si j'exécute la commande apropos éditeur, alors elle s'exécute et affiche la sortie dans cette fenêtre. Mais je veux exécuter la même commande dans une autre fenêtre de terminal (nouvelle fenêtre) plutôt que dans la fenêtre actuelle depuis le premier terminal.

Clarification supplémentaire:
J'ai besoin de suggest-command qui ouvre une nouvelle fenêtre de terminal et exécute la mentionnée dans cette fenêtre nouvellement ouverte. (où suggest-command est un exemple de suggestion de commande.)

Comment faire cela?

38voto

chaos Points 25386

Cela pourrait être ce que vous recherchez :

gnome-terminal -e "bash -c \"!!; exec bash\""

ou (en bref) :

gnome-terminal -x sh -c "!!; bash"

Il ouvre gnome-terminal avec votre dernière commande (!!) exécutée et il reste ouvert avec la sortie de la commande dans le shell, même avec une commande interactive comme top ou less...

Dans votre cas, c'est :

gnome-terminal -e "bash -c \"apropos editor; exec bash\""

ou

gnome-terminal -x sh -c "apropos editor; bash"

10voto

Mufaka Points 54

Commencez une autre instance du terminal que vous souhaitez exécuter :

xterm -hold -e 'apropos editor' & 

Remarquez le -hold. La plupart des terminaux se fermeront après avoir exécuté la commande que vous leur fournissez. Il y a déjà une bonne douzaine de questions à ce sujet sur le site :

Une alternative à cela est d'utiliser une application qui doit être fermée. nano restera ouvert par lui-même. Si vous voulez simplement afficher à l'écran, vous pouvez le rediriger vers less:

xterm -e 'apropos editor | less' & 

Cela dit, dans votre cas (comme l'ont dit les deux autres), il semble plus simple d'ouvrir simplement un autre terminal et d'exécuter votre commande.

10voto

Hastur Points 3660

Chaque terminal est même un programme que vous pouvez lancer comme n'importe quel autre programme, avec & pour le mettre en arrière-plan, en donnant une liste d'arguments, etc.

Quel terminal utiliser dépend d'abord de la disponibilité du système que vous utilisez (s'ils sont installés ou non), ensuite de leurs particularités et ensuite de vos goûts personnels.

  konsole   --hold -e "ls" &  
  xterm      -hold -e "ls" &  
  gnome-terminal   -e "ls" & ...  

Notez les différences entre -hold de xterm et --hold de konsole.

Chaque réalisation a différentes options que vous devez vérifier avec l'aide. Même l'aide peut être invoquée de différentes manières. Vous pouvez constater que man konsole ne fonctionne pas et donc vous devez demander directement à l'exécutable avec --help.

Voici une liste de terminaux que vous pouvez rechercher sur votre système

aterm          - Terminal AfterStep avec support de transparence
gnome-terminal - terminal par défaut pour GNOME
guake          - Un terminal déroulant pour GNOME
konsole        - terminal par défaut pour KDE
Kuake          - un terminal déroulant pour KDE
mrxvt          - Clone de rxvt à onglets multiples
rxvt           - pour le système de fenêtrage X (et, sous forme de port Cygwin, pour Windows) 
rxvt-unicode   - clone de rxvt avec support Unicode
xfce4-terminal - terminal par défaut pour l'environnement de bureau Xfce avec support déroulant
Terminator     - un émulateur de terminal GPL. Il est disponible sur Microsoft Windows, Mac OS X, Linux et d'autres systèmes Unix X11.
Terminologie    - terminal amélioré prenant en charge les contenus multimédias et la manipulation de texte pour X11 et le framebuffer Linux
tilda          - un terminal déroulant
wterm          - C'est un fork de rxvt, conçu pour être léger, mais toujours 
                 plein de fonctions
xterm          - terminal par défaut pour le système de fenêtrage X
Yakuake        - (Yet Another Kuake), un terminal déroulant pour KDE

4voto

BiLaL Points 101
  1. Ouvrez deux terminaux.
  2. Identifiez chaque terminal avec la commande tty.
  3. En supposant qu'ils soient identifiés avec /dev/pts/0 et /dev/pts/1.
  4. Dans le terminal pts/0, redirigez la sortie stdout vers pts/1 avec la commande exec: exec 1>/dev/pts/1
  5. Maintenant, toute la sortie stdout des commandes du terminal pts/0 s'affiche dans pts/1.
  6. Redirigez à nouveau la sortie stdout avec la commande: exec 1>/dev/pts/0
  7. Maintenant, la sortie stdout de pts/0 fonctionne comme avant.

4voto

kensaii Points 186

Après Ubuntu 18.04 LTS, vous voudrez peut-être passer de -e à -- , c'est-à-dire de gnome-terminal -e à gnome-terminal -- car -e et -x sont tous les deux obsolètes.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X