Як автоматизувати запуску екземплярів терміналу для конкретних завдань


10

Я переглядаю декілька навчальних посібників з програмування, і для кожного сеансу мені потрібно запустити щонайменше 3 вікна терміналу (одне для хвостового файлу журналу, одне для тестування виводу, одне для виконання різних команд оболонки тощо).

Зараз я запускаю їх все вручну: клацніть піктограму Terminal, CD в потрібній папці, введіть команди та змініть заголовок вікна на щось значуще.

Чи є спосіб написати сценарій чи щось таке, що могло б автоматизувати це для мене? А якщо так, то як?

(Я крутий тим, що не отримав повний сценарій як відповідь. Вказівник, з якого почати читати, теж працював би.

Відповіді:


9

Оскільки ви натискаєте піктограму Термінал, я вважаю, що ви використовуєте gnome-terminal.

Я отримав список варіантів, використовуючи gnome-terminal --helpкомандний рядок і читаючи звідти.

Спираючись на відповідь Мако, я можу запропонувати щось подібне:

gnome-terminal --window --title=Log -e "tail -f /var/log/syslog" --window --title=Output --working-directory=output --window --active --title=Dev --working-directory=dev/project

Цей приклад запускає три вікна (хоча ви могли б передати --tabвкладки) і встановлює робочі каталоги (відносно домашнього) та заголовки для кожного, запускає tailкоманду в одному та робить третє вікно активним.

Звичайно, ви можете скористатися окремими рядками для запуску кожного вікна, особливо якщо у вас є багато аргументів.

Ще одна корисна річ, коли ви влаштовуєте свої вікна на свій смак, - це використовувати

gnome-terminal --save-config=FILE

Це створює файл конфігурації з інформацією про всі відкриті вікна та вкладки терміналів (включаючи заголовки, робочі каталоги тощо). Після запуску gnome-терміналу з --load-configопцією буде відтворено ваш макет.

Дуже багато розробників, які працюють з декількома терміналами, люблять використовувати Terminator, оскільки він додає такі функції, як компонування сітки та комбінації клавіш.


Чи зробить це так із прапором -e, що призведе до закриття вікна, як тільки команда буде виконана? І якщо так, чи можна змусити вікно залишатися відкритим?
emf

8

Який би термінальний емулятор ви не використовували, він повинен мати можливість приймати команду як аргумент. Наприклад:

gnome-terminal -e "tail -f /var/log/syslog"

Просто додайте такі команди до автоматичного запуску в System -> Preferences -> Sessions (Ubuntu) або System Settings -> Autostart (Kubuntu)


4

Ви також можете автоматизувати це за допомогою сценарію. Рекомендую ознайомитись з Посібником з розширеного сценарію Bash або з програмуванням Bash HOWTO разом із довідковою сторінкою для того, який термінал ви використовуєте.

Ось простий приклад:

$ vi your-script
#!/bin/bash
gnome-terminal -e "tail -f /var/log/syslog"
gnome-terminal --working-directory=/foo/bar
gnome-terminal --whatever-else

Тоді просто зробіть його виконуваним:

$ chmod +x your-script

вам не потрібно execвсе це?
мако

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