GNU/Linux >> Linux の 問題 >  >> Linux

現在のターミナルから新しいターミナルでシェルスクリプトを実行する

私はここに来て、スクリプトがターミナルを生成してその中で実行する方法を理解したいと思っていました。

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

開始するための簡単な例を次に示します。

シェル スクリプトを作成するには、コマンド プロンプトで次の操作を行います。

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

これは次のように書いています:

#!/bin/sh
echo "hello world"

abc.sh というファイルに

次に、次の方法で実行可能に設定します:

chmod +x abc.sh

これで、次の方法で実行できます:

./abc.sh

hello world

端末で。

新しいターミナルで実行するには、次のようにします:

gnome-terminal -x ./abc.sh

または、xterm の場合 :

xterm -e ./abc.sh

さまざまな端末エミュレーターのリストは次のとおりです。

または、現在のターミナルで実行するだけで、代わりに次のようにバックグラウンドで実行します:

./abc.sh &

gnome の場合は、これを試してください。

ls を実行したいコマンドに置き換えます

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

これがあなたの望むものであることを願っています


2020 年 1 月現在、-e-x gnome-terminal のオプション 正常に実行されますが、次の警告が表示されます:

-e の場合 :

<ブロック引用>

# オプション「-e」は非推奨であり、gnome-terminal の新しいバージョンで削除される可能性があります。

# 「--」を使用してオプションを終了し、その後にコマンド ライン toexecute を配置します。

-x の場合 :

<ブロック引用>

# オプション「-x」は非推奨であり、gnome-terminal の新しいバージョンで削除される可能性があります。

# 「--」を使用してオプションを終了し、その後にコマンド ライン toexecute を配置します。

上記の情報に基づいて、警告メッセージを受け取ることなく次の 2 つのコマンドを実行できることを確認しました:

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

これが、現在この問題を抱えている他の誰かの助けになることを願っています:)


Linux
  1. シェルスクリプトを常にルートとして実行する方法は?

  2. シェルスクリプトはどこから実行されますか?

  3. 現在のシェルから.bashrcを再生成しますか?

  1. * nixでログイン時にスクリプトを実行するにはどうすればよいですか?

  2. シェルスクリプトの並列実行

  3. シェルスクリプトの現在のディレクトリ?

  1. ターミナルの任意のパスから .sh-script を実行するには?

  2. コンテナー内で docker-compose コマンドからシェル スクリプトを実行します。

  3. どこからでもスクリプトを実行