GNU/Linux >> Znalost Linux >  >> Linux

Spusťte shell skript v novém terminálu z aktuálního terminálu

Přišel jsem sem, abych zjistil, jak vytvořit ze skriptu terminál a spustit jej v něm sám, takže pro ty, kteří to chtějí udělat, jsem přišel na toto řešení:

if [ ! -t 0 ]; then # script is executed outside the terminal?
  # execute the script inside a terminal window with same arguments
  x-terminal-emulator -e "$0" "[email protected]"
  # and abort running the rest of it
  exit 0
fi

Zde je jednoduchý příklad, jak začít:

Chcete-li napsat skript shellu, udělejte to na příkazovém řádku:

echo -e '#!/bin/sh\n echo "hello world"' > abc.sh

Toto píše:

#!/bin/sh
echo "hello world"

Do souboru s názvem abc.sh

Dále jej chcete nastavit jako spustitelný pomocí:

chmod +x abc.sh

Nyní jej můžete spustit pomocí:

./abc.sh

A měli byste vidět:

hello world

Na vašem terminálu.

Chcete-li jej spustit v novém terminálu, můžete:

gnome-terminal -x ./abc.sh

nebo pokud je xterm :

xterm -e ./abc.sh

Zde je seznam různých emulátorů terminálu.

Případně jej jednoduše spustíte ve svém aktuálním terminálu, ale na pozadí pomocí:

./abc.sh &

Pro gnome zkuste toto.

Nahraďte ls příkazem, který chcete spustit

gnome-terminal -x sh -c "ls|less"

Doufám, že to je to, co chcete


Od ledna 2020 platí -e a -x možnost v gnome-terminal stále běží správně, ale vyhodí následující varování:

Pro -e :

# Možnost „-e“ je zastaralá a může být odstraněna v pozdější verzi gnome-terminálu.

# Pomocí „- “ ukončete volby a za ně umístěte příkazový řádek k provedení.

Pro -x :

# Možnost „-x“ je zastaralá a může být odstraněna v pozdější verzi gnome-terminálu.

# Pomocí „- “ ukončete volby a za ně umístěte příkazový řádek k provedení.

Na základě výše uvedených informací jsem potvrdil, že můžete spustit následující dva příkazy, aniž byste obdrželi jakékoli varovné zprávy:

gnome-terminal -- /bin/sh -c '<your command>'
gnome-terminal -- ./<your script>.sh

Doufám, že to pomůže někomu dalšímu, kdo má v současné době tento problém :)


Linux
  1. Jak spustíte skript při přihlášení v *nix?

  2. Paralelní spuštění skriptu shellu

  3. Jak spustit skript .sh z libovolné cesty v terminálu?

  1. Jak zajistit, aby skript Shell vždy běžel jako root?

  2. Odkud se spouští skript Shell?

  3. Spusťte skript prostředí jako jiný uživatel

  1. Obnovit .bashrc z aktuálního prostředí?

  2. Jak spouštět skripty Pythonu ze shellu

  3. Jak spustit skript shellu na konzole Unix nebo terminálu Mac?