відкрийте термінал gnome з декількома вкладками та виконайте кілька команд у кожній вкладці


12

Це я хочу досягти:

  1. Я хочу відкрити термінал gnome з п'ятьма вкладками
  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 сценаріїв (коштувати більше, ніж це допомагає в моїй проблемі).


Не те, що я фахівець з терміналу GNOME, але створені вами вкладки слід зберігати у профілі. Створивши профіль, я вважаю, що ви можете його сценарій. Див. Розділ Керування профілями у довідці 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 завантажується, виконує всі команди, які ви йому передаєте, і негайно існує. Я вкладаю у прочитані заяви, щоб чекати введення користувачем. Таким чином ці вкладки не закриються, поки ви не натиснете клавішу, просто так ви зможете побачити її в цьому прикладі. Без них це виглядало би так, ніби відкриваються лише дві вкладки, оскільки інші дві виконати і закрити занадто швидко.


Дякую за вашу відповідь. Звичайно, я отримую висновок однієї команди (в даному випадку "дата"), але я хотів би виконати кілька команд, мати змогу вивести результат і потім продовжувати писати нові команди вручну на тій самій вкладці.
еккідо

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'"

здається, що якщо я закрию термінал, то основні процеси не закриваються автоматично, чи є також рішення для цього? Я хотів би закрити все вікно, і всі вкладки з їх процесами повинні вбити
Blub

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-терміналі за допомогою командного рядка .


все інше не вдалося окрім цього. Тепер я хотів би, щоб деякі вкладки були відкриті без команди. Наприклад, я хотів би відкрити десять вкладок, але три, якщо вони могли б виконувати такі команди, як htop ..
nyxee
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.