Як відкрити кілька вкладок терміналів у різних папках (робочих каталогах)?


10

Я хочу, щоб один сценарій відкрив кілька вкладок у різних папках.

Під час пошуку я знайшов цей запис, але обмін, як показано нижче, відкрив термінал з трьома вкладками в моїй домашній папці. Повідомлення про помилку показало:

Failed to parse arguments: Unknown option --execute=cd /some/thing/

Сценарій виглядає приблизно так:

#!/bin/sh
gnome-terminal --tab --execute="cd /some/thing/" \
          --tab --execute="cd /home/" \
          --tab --execute="cd /home/" \
exit 0

Варіація з --working-directory = "/ деякий / річ /" також не допомогла. Ви можете бачити помилку?

Відповіді:


8

Наступні роботи для мене працюють на oneiric. Ви можете використовувати це замість своєї версії:

#!/bin/bash
gnome-terminal --tab  --working-directory="/var/www/" --tab --working-directory='/home/' --tab --working-directory='/home/'
exit 0

3

Ваша конкретна помилка викликана неправильним використанням --executeопції. Якщо ви подивитеся на уривок зі сторінки man нижче, ви зауважите, що --execute немає знака рівності, зазначеного як частина синтаксису, оскільки він просто виконує всю решту командного рядка. Прикладом правильного використання може бути:

gnome-terminal --execute play '/home/cjohnson/Still Alive.mp3'

ВАЖЛИВА ПРИМІТКА:
Використання cd- це все-таки особливий випадок. cdне подібно до більшості команд - він не запускає власний бінарний / виконавчий файл. Він інтерпретується безпосередньо bash(або будь-якою оболонкою, яку ви використовуєте). Тому спроба викликати cdне погоджується із прапорами --executeта -xпрапорами (які, схоже, хочуть безпосередньо породити дочірній процес). Ця ж проблема виникне (я перевірив) з іншими командами, які безпосередньо обробляються bashподібними home. Навіть якщо використовується правильно, без знака рівності, це все одно призведе до помилки: "Файл або каталог не знайдено". Тому використання --working-directory=[DIRECTORY]опції найкраще робити те, що ви хочете зробити.

ІНШЕ ВАЖЛИВО ПРИМІТКА:
Навіть якби це не було, ви все одно зіткнетесь з проблемою. Проблема полягає у спробі використовувати --executeваріант, коли ви дійсно маєте намір значення цього --commandваріанту. У документації на довідкову сторінку зазначено конкретно

-e, --command = STRING
Виконайте аргумент цієї опції всередині терміналу.

-x, --execute
Виконати залишок командного рядка всередині терміналу.

(наголос мій)

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

Уривок з одного з моїх власних сценаріїв, де я виконую кілька команд на окремих вкладках (імена змінені для моєї конфіденційності / безпеки):

gnome-terminal --tab --command="ssh cjohnson@GLaDOS" --tab --command="ssh drattman@GLaDOS"

(Між іншим, спроба використовувати --commandпрапор із cdабо homeтакож призведе до звичної помилки "Немає такого файлу чи каталогу".)

Я сподіваюся, що це не надто довго. Я просто намагаюся бути ретельним.

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