web-dev-qa-db-fra.com

Exécuter la commande sur une autre (nouvelle) fenêtre de terminal

Comment exécuter une commande dans une autre fenêtre de terminal?

Exemple: j'ai ouvert une fenêtre de terminal et si j'exécute une commande telle que apropos editor, elle s'exécute et génère des sorties sur cette fenêtre. Mais je veux exécuter la même commande sur une autre fenêtre de terminal (nouvelle fenêtre) à la place de la fenêtre actuelle à partir de premier terminal .

Précisions supplémentaires:
J'ai besoin de suggest-command <command> qui ouvre une nouvelle fenêtre de terminal et d’exécuter le <command> mentionné dans cette fenêtre (récemment ouverte). (où suggest-command est un exemple de suggestion de commande.)

Comment faire ça?

25
Pandya

C'est peut-être ce que vous recherchez:

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

ou (prochainement):

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

Il ouvre gnome-terminal avec votre dernière commande (!!) exécutée et il reste s’ouvre avec la sortie de la commande dans le shell, même avec une commande interactive telle que 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"
26
chaos

Démarrez une autre instance du terminal que vous voulez exécuter:

xterm -hold -e 'apropos editor' & 

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

Une alternative à cela consiste à utiliser une application qui doit être quittée. nano restera ouvert tout seul. Si vous ne faites que sortir à screen, 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 facile d'ouvrir un autre terminal et d'exécuter votre commande.

9
Oli

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

Le terminal à utiliser dépend d'abord de la disponibilité du système que vous utilisez (qu'ils soient installés ou non), puis de leur particularité et ensuite de votre goût personnel.

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

Notez les différences entre -hold de xtermet --hold de konsolename__.

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 vous devez donc demander directement à l'exécutable avec --help.

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

aterm          - AfterStep terminal with transparency support
gnome-terminal - default terminal for GNOME
guake          - A dropdown terminal for GNOME
konsole        - default terminal for KDE
Kuake          - a dropdown terminal for KDE
mrxvt          - Multi-tabbed rxvt clone
rxvt           - for the X Window System (and, in the form of a Cygwin port, 
                 for Windows) 
rxvt-unicode   - rxvt clone with unicode support
xfce4-terminal - default terminal for Xfce desktop 
                 environment with dropdown support
Terminator     - is a GPL terminal emulator. It is available on
                 Microsoft Windows, Mac OS X, Linux and other Unix X11 systems.
Terminology    - enhanced terminal supportive of multimedia 
                 and text manipulation for X11 and Linux framebuffer
tilda          - A drop down terminal
wterm          - It is a fork of rxvt, designed to be lightweight, but still
                 full of features
xterm          - default terminal for the X Window System
Yakuake        - (Yet Another Kuake), a dropdown terminal for KDE
7
Hastur

Vous pouvez utiliser l'option -e pour gnome-terminal comme suit:

gnome-terminal -e 'sh -c propose editor'

Ici, sh est le shell ouvert par gnome-terminal. Notez que cela va quitter le terminal dès que la commande est terminée. Reportez-vous à la page de manuel de gnome-terminal pour plus d'informations.

3
jobin
  1. Ouvrir deux terminaux;
  2. Identifier chaque terminal à l'aide de la commande tty;
  3. En supposant qu'ils s'identifient avec/dev/pts/0 et/dev/pts/1;
  4. Dans terminal pts/0, redirection de stdout en pts/1 avec la commande exec: exec 1>/dev/pts/1
  5. Maintenant chaque sortie de la commande stdout du terminal pts/0 est affichée en pts/1;
  6. Réacheminement de la sortie standard avec commad: exec 1>/dev/pts/0
  7. Maintenant pts/0 stdout fonctionne comme avant.

Vidéo Youtube:

2
Vitalie Ghelbert

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

1
kensaii

Voici mes 50 cents avec Terminator:

terminator -x "script.sh; bash"

Cela fonctionne aussi, mais je ne peux pas vous dire la différence:

terminator -e "script.sh; bash"

Notez que ce script peut également être une commande.

Testé sur Ubuntu 18.04 LTS.

0
Reginaldo Santos