Програмно відкрити вкладку в gnome-терміналі, виконати команду та відкрити вкладку


12

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

щось на зразок цього:

gnome-terminal --tab -e "ls -a" --tab -e "ls"

але проблема з цим полягає в тому, що вкладки закриваються, як тільки команди "ls" закінчуються. Хтось знає, як зробити так, щоб вкладки залишалися відкритими?

Відповіді:


11

Gnome-термінал може або виконати команду, або відкрити оболонку, але не обидва.

Існує рішення як зробити інкапсуляцію команди, так і подальше виклик оболонки в одну команду.

$ gnome-terminal -e "bash -c \"echo foo; echo bar; exec bash\""

Більше альтернатив читайте мою відповідь на аналогічне запитання про переповнення стека: /programming/3512055/avoid-gnome-terminal-close-after-script-execution/3531426#3531426


10

Якщо у вас є xdotoolі wmctrlвстановлено, то може працювати наступний скрипт оболонки:

#!/usr/bin/env bash

window="$(xdotool search --class gnome-terminal | head -1)"
xdotool windowfocus $window
xdotool key ctrl+shift+t
xdotool type "$*"
xdotool key Return

Я використовую це так:

$ run-in-new-tab 'ls -l'

Я знайшов цю ідею в блозі Трустіна Лі .


Спасибі. Це працює досить добре. Мені потрібно додати sleep 1після ctrl + shift + t, щоб він працював на мене. Я прийму це, якщо незабаром нічого іншого не з’явиться

Так - я виявив, що мені довелося sleep 2змусити його працювати 100% часу. Хоча чудове рішення - я зараз відкриваю 8 вкладок, які впадають на різні сервери, запускають різні процеси тощо, використовуючи це: моя ранкова настройка тепер повністю написана :)
Макс Вільямс,

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