Hogyan készíthetek parancsfájlokat, amelyek megnyitják a terminál ablakokat, és parancsokat hajthatnak végre bennük?

113

Három szkriptet kell futtatnom, amikor elindítom az Ubuntu gépemet, elkezdenek szolgáltatásokat használni a fejlesztési környezetemben.

Ehhez manuálisan három terminált nyitok és írtam be a parancsokat.

Van-e mód arra, hogy létrehozzunk egy parancsfájlt, amely három terminálot fog megnyitni és egy parancsot végrehajtani mindegyikben? (Minden parancsnak külön terminál ablakban kell lennie, hogy láthassam a kimenetüket.)

    
készlet JSBach 02.06.2011 21:58
forrás

5 válasz

113
gnome-terminal -e command

vagy

xterm -e command

vagy

konsole -e command

Nagyon sok

terminal -e command

Ahhoz, hogy a terminál maradjon, amikor a parancs kilép:

A konzolban--noclose zászló van.

Az xterm-ben van egy-hold flag.

Agnome-terminal -ben menjen a Szerkesztés - > Profilbeállítások - > Cím . Kattintson a Parancs fülre. Válassza a Tartsa a terminált lehetőséget a Amikor a parancs kilép legördülő menüből. Hozzon létre egy új profilt ehhez és hajtsa végre

gnome-terminal --window-with-profile=NAMEOFTHEPROFILE -e command
    
válasz adott nickguletskii 02.06.2011 22:03
forrás
48

Agnome-terminal, akonsole, stb. kemény kódolás helyett használja a Alternatívák rendszert. Az alapértelmezett terminál emulátor programot végrehajtó program:

x-terminal-emulator

A rendszeremben minden alkalommal megnyílik a Konsole új példánya, amikor végrehajtom ezt a parancsot.

Szerencsére úgy tűnik, hogy a terminálok támogatják a-e opciót egy parancs végrehajtásához (megerősítettem akonsole és agnome-terminal részére). A parancs utáni argumentumok átkerülnek az invokált parancsra. Bash megtagadja, hogy nyitva maradjon a terminálomban, további parancsfájlra van szükség ahhoz, hogy egy terminált kapj:

#!/bin/sh
"$@"
exec "$SHELL"

Ha az előző szkriptet/home/user/hacky -ként mentette el és végrehajthatóvá tette, akkor a következő parancsfájlokat futtathatja:

x-terminal-emulator -e /home/user/hacky your-script optional arguments here

A teljes elérési útvonal szükséges, és a/home/user/hacky -nak végrehajthatónak kell lennie.

A korábbi parancsom egy parancsfájl futtatását egy új terminál ablakban a 2. számú verzióban található, még azelőtt Rájöttem, hogy érvek adhatók ax-terminal-emulator -ra.

    
válasz adott Lekensteyn 02.06.2011 22:29
forrás
8

Nagyon egyszerűen -

#!/bin/bash

/etc/init.d/ccpd status

Ez elég olyan parancsok számára, amelyeknek semmit sem kell megjeleníteniük a terminálon. De itt meg kell látni a megjelenített állapotot Tehát futtatni kell egy terminál ablakban

#!/bin/bash

gnome-terminal -e "/etc/init.d/ccpd status"  --window-with-profile=NAMEOFTHEPROFILE

A másik bejegyzés [] helyett helyőrzőnek minősült

Itt a "NAMEOFTHEPROFILE" név helyébe a "Természetesen a terminál, amikor a parancs kilép." nevét helyettesíti.

    
válasz adott Karthik T 23.01.2013 10:31
forrás
1

a Lekensteyn válaszának megjegyzésére. Tudom, hogy ez egy régi postás, de bárki számára, aki ezt hasznosnak találja (ahogy én is tettem) Ahelyett, hogy egy újabb "hacky scriptet" csinálna, csak egy parancsfájlt helyezzen el a szkriptbe, amit hívsz

hacky_function()
{
"$@"
exec "$SHELL"
}

Hívja a szkriptet az "x-terminal-emulator -e / path / to / script hacky_function opcionális argumentumokat itt"

Ne felejtsd el elhelyezni a "$ @" parancsot a szkript végén

    
válasz adott Sruli 06.12.2017 21:11
forrás
-2

Használja a képernyőparancsot és -d leválasztható egy meglévő képernyőfolyamatról, és csatolja újra -m kényszerít egy új képernyőmenetet -S létrehoz egy megnevezett munkamenetet az alapértelmezett név használata helyett

    
válasz adott Jack Heath 13.04.2014 22:00
forrás