ターミナルでコマンドを実行し、新しいターミナルタブを開いて別のコマンドを実行するスクリプト

ターミナルでコマンドを実行し、新しいターミナルタブを開いて別のコマンドを実行するスクリプト

私は Ubuntu 21.04 を実行しており、次の操作を実行するスクリプトを作成したいと考えています。

  1. 走る:

    cd && cd path/to/repo && git pull && npm i && code . && npm run dev
    
  2. 次に、次のコマンドを使用して新しい GNOME ターミナル タブを開きます。

    gnome-terminal --tab
    
  3. 次に、このタブに切り替えて実行します。

    cd && cd path/to/repo && git reset --hard && git pull -f && npm i && npm run dev
    

つまり、基本的には 2 つの開発サーバーを実行する 2 つのタブを備えた 1 つのターミナルが必要です。

xdotoolとを試してみましたxteが、うまくいきませんでした (キーが押されていないのに)。

私が望むことを実現することは可能でしょうか?

下記のように試してみたところ、failed to run cdグーグルで検索したところ、次の結果が見つかりました。

gnome-terminal --tab -- /bin/bash -e -c "cd path/to/repo && ls && git pull && npm i && code . && npm run dev" --tab -- /bin/bash -e -c "cd path/to/repo && git reset --hard && git pull -f && npm i && npm run dev"

しかし、問題は、それnpm run devが決して停止しないことになっているため、2 番目のターミナル タブが開かれないことです。そして、それらを一緒に実行する必要があります...

答え1

gnome-terminalオプションは非推奨であることを示していますが-e、3.40.3 でも引き続き機能します。

# Option “-e” is deprecated and might be removed in a later version of gnome-terminal.
# Use “-- ” to terminate the options and put the command line to execute after it.

開発者は、これが、タブで異なる作業環境を自動的に設定するなど、必要なことを行う唯一の方法であることを忘れているようです。オプションの最後に実行するコマンドを追加する「新しい」構文では、--それができません。-eオプションが削除されると、このようなことを行うには、別のターミナル エミュレーターに移動する必要があります。

したがって、たとえば、これは今のところまだ機能します:

gnome-terminal --tab -e "htop" --tab -e "top"

コマンドhtoptopカスタム スクリプトに置き換えます。

答え2

したがって、sh スクリプトの内容は次のようになります。

gnome-terminal --tab --title='frontend' -e "bash -c 'cd path/to/repo && git pull && npm i && code . && npm run dev'";
gnome-terminal --tab --title='backend' -e "bash -c 'cd path/to/repo && git reset --hard && git pull -f && npm i && npm run dev'"

Google 検索の方向性を見つけるのを手伝ってくれた @vanadium に感謝します ;)

意図したとおりに動作します。ターミナルを開いて書き込むと、sh myScript.shバックエンドとフロントエンドのリポジトリが実行される 2 つの追加タブが開きます。

ちょっとした問題は、sh ファイルをダブルクリックして実行すると、2 つのターミナル ウィンドウが開くことです (見苦しい、タブが欲しい)。

これをどう修正すればい​​いのか本当に分かりません。

関連情報