Jak mohu vytvořit skript, který otevře okna terminálů a spustí příkazy v nich?

113

Mám tři skripty, které potřebuji ke spuštění, když spustím svůj stroj Ubuntu, spustí služby, které používám ve svém vývojovém prostředí.

Chcete-li to provést, ručně otevřete tři terminály a zadejte příkazy.

Existuje nějaký způsob, jak vytvořit skript, který otevře tři terminály a provede jeden příkaz v každém z těchto? (Každý příkaz by měl být v samostatném terminálovém okně, abych viděl jejich výstup).

    
dané JSBach 02.06.2011 21:58

5 odpovědí

113
gnome-terminal -e command

nebo

xterm -e command

nebo

konsole -e command

Docela hodně

terminal -e command

Ukončení ukončení příkazu:

V konsole je příznak--noclose.

V xtermu existuje příznak-hold.

Vgnome-terminal přejděte do Upravit - > Předvolby profilu - > Název . Klikněte na kartu Příkaz . V rozevírací nabídce Při ukončení příkazu vyberte Držte terminál . Měl byste pro něj vytvořit nový profil a spustit jej pomocí

gnome-terminal --window-with-profile=NAMEOFTHEPROFILE -e command
    
odpověděl nickguletskii 02.06.2011 22:03
48

Místo hard-codingugnome-terminal,konsole a tak dále použijte systém Alternatives. Program, který provádí výchozí emulátor terminálu, je:

x-terminal-emulator

Můj systém otevře novou instanci Konsole při každém spuštění tohoto příkazu.

Naštěstí se zdá, že terminály podporují volbu-e pro provedení příkazu (ověřil jsem to prokonsole agnome-terminal). Argumenty po příkazu jsou předány vyvolanému příkazu. Bash odmítá zůstat otevřený v mém terminálu, pro získání terminálu je zapotřebí další skript:

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

Pokud jste uložili předchozí skript jako/home/user/hacky a učinili jste jej spustitelným, spustili byste skripty pomocí:

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

Je nutná úplná cesta a/home/user/hacky musí být spustitelný.

Můj předchozí pokus o spuštění skriptu v novém okně terminálu lze nalézt v revizi # 2 , která byla předtím Uvědomil jsem si, že argumenty mohou být předányx-terminal-emulator.

    
odpověděl Lekensteyn 02.06.2011 22:29
8

Prostě jednoduše -

#!/bin/bash

/etc/init.d/ccpd status

To stačí pro další příkazy, které v terminálu nemusejí zobrazovat nic. Ale tady je třeba vidět zobrazený stav Takže je třeba spustit v terminálovém okně

#!/bin/bash

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

Druhý příspěvek zamýšlel[] být zástupným symbolem

Zde je třeba "NAMEOFTHEPROFILE" nahradit názvem profilu, který "při ukončení příkazu drží terminál".

    
odpověděl Karthik T 23.01.2013 10:31
1

komentoval odpověď Lekensteyn. Vím, že je to starý příspěvek, ale pro každého, kdo to považuje za užitečné (jak jsem právě udělal) Místo toho, abyste vytvořili jiný "hacký skript" s tím, že do skriptu zavoláte funkci

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

Zavolejte svůj skript pomocí příkazu "x-terminal-emulator -e / path / to / script hacky_function volitelné argumenty zde"

Nezapomeňte uvést "$ @" na konci skriptu

    
odpověděl Sruli 06.12.2017 21:11
-2

Použijte příkaz obrazovka a -d odpojit od existující relace obrazovky a znovu připojit zde -m vynutit novou relaci obrazovky -S vytváří pojmenovanou relaci namísto použití výchozího jména

    
odpověděl Jack Heath 13.04.2014 22:00