Как открыть несколько вкладок терминала в разных папках (рабочих каталогах)?

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 = "/ some / thing /" также не помогла. Вы видите ошибку?

Kerkdyk
источник

Ответы:

8

Следующее работает для меня на oneiric. Вы можете использовать это вместо вашей версии:

#!/bin/bash
gnome-terminal --tab  --working-directory="/var/www/" --tab --working-directory='/home/' --tab --working-directory='/home/'
exit 0
Ричард Холлоуэй
источник
3

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

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

ВАЖНОЕ ПРИМЕЧАНИЕ:
использование cdв любом случае является частным случаем. cdне похож на большинство команд - он не запускает собственный двоичный файл / исполняемый файл. Он интерпретируется напрямую bash(или любой другой оболочкой, которую вы используете). Поэтому попытки Invoke 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также приведет к знакомой ошибке «Нет такого файла или каталога».)

Я надеюсь, что это не слишком долго. Я просто пытаюсь быть тщательным.

Dain42
источник