открыть терминал gnome с несколькими вкладками и выполнить несколько команд на каждой вкладке

12

Вот что я хочу сделать:

  1. Я хочу открыть терминал гномов с пятью вкладками в нем
  2. Я хочу запускать набор команд (5–10 команд) на каждой вкладке автоматически.
    Первая вкладка: устанавливает прозрачный вид и после этого выполняет одну или несколько команд.
    Вторая вкладка: выполняет вход на сервер и выполняет некоторые команды.
    Третья вкладка: выполнять только некоторые команды

gnome-terminal --geometry=260x25-0+0 --tab -e "csh -c \"ct setview myViewName; cal\"" –tab --tab --tab (работает нормально, вид установлен, но после этого команда не выполняется)

Вместо этого я попытался сделать это и запустил это в следующем сценарии:

gnome-terminal --geometry 125x18-0-26 --tab -t "some title" -e /home/ekido/Desktop/MyScripts/myScript

#!/usr/bin/expect
exec gnome-terminal --geometry 125x49-0+81 –tab
spawn ssh usert@server
expect "password"
send "*******\r"
expect "user@server100:~>"
send “some command\r"
expect "user@server100:~>"
send “some command"
interact 

Если я удаляю exec gnome-terminal --geometry 125x49-0+81 –tabстроки из примера и вызываю скрипт из какого-то другого файла, он работает нормально - я захожу на сервер и все команды выполняются. Может кто-нибудь помочь мне решить это?

Написать сценарий, который я вызываю для каждой вкладки, не вариант, так как у меня будет 5 терминалов с 5-7 вкладками в конце, а это означает, что будет написано от 25 до 30 сценариев (стоит больше, чем помогает в моей проблеме).

ekido
источник
Не то чтобы я был экспертом в GNOME Terminal, но создаваемые вами вкладки следует сохранять в профиле. Я считаю, что после создания профиля вы можете написать его. См. Управление профилями в справке GNOME.
eyoung100

Ответы:

11

Кажется, это работает на моей машине:

gnome-terminal --geometry=260x25-0+0 --tab -e "bash -c 'date; read -n1'" --tab -e "bash -c 'echo meow; read -n1' " --tab --tab

Обратите внимание: как только процессы, выполняемые -e, завершатся, они завершатся. В этом случае bash загружается, выполняет все команды, которые вы ему передаете, и сразу же существует. Я вставил операторы read, чтобы дождаться ввода пользователя. Таким образом, эти вкладки не закроются, пока вы не нажмете клавишу, просто чтобы вы могли увидеть это в этом примере. Без них все выглядело бы так, как будто открывались только две вкладки, потому что две другие выполнялись бы и закрывались слишком быстро.

Unix-ниндзя
источник
спасибо за Ваш ответ. Конечно, я получаю se для вывода одной команды (в данном случае «date»), но я хотел бы выполнить несколько команд, иметь возможность se для вывода и затем продолжать писать новые команды вручную на той же вкладке.
ekido
3

Поскольку bash завершает работу после завершения команды, вы можете вызвать другой экземпляр bashпосле вашей команды, чтобы получить интерактивную оболочку:

gnome-terminal  --tab -e "bash -c 'ps -ef; bash'" --tab -e "bash -c 'ls; bash'" --tab -e "bash -c 'top -n 1; bash'"
Жан Спектор
источник
кажется, что, если я закрываю терминал, базовые процессы не закрываются автоматически, есть ли решение для этого тоже? Я хотел бы закрыть все окно, и все вкладки с их процессами должны быть
убиты
2

Сохранить ниже как script.sh

#!/usr/bin/env bash

me=$(realpath $0)

commands=(
"echo"
"ls -l && echo 'yes'"
"top"
"ps"
)
len=${#commands[@]}

if [ $# -eq 0 ];then
    num=$len
else
    num=$1
fi

n=$((len-num))
command=${commands[$n]}
num=$((num-1))

xdotool key ctrl+shift+t

if [ $num -gt -1 ]; then
    sleep 1; xdotool type --delay 1 --clearmodifiers "$me $num; ${command}"; xdotool key Return;
fi

добавьте script.sh в $ PATH и запустите его

gnome-terminal -x script.sh

См. Открытие новой вкладки в gnome-терминал с помощью командной строки .

rofrol
источник
все остальное не удалось, кроме этого. Теперь я хотел бы открыть некоторые вкладки без команды. Например, я хотел бы открыть десять вкладок, но три, если бы они могли выполнять некоторые команды, такие как htop ..
nyxee