Терминал Gnome, как запустить в другом каталоге?

Вы можете обернуть зависимые от type операции в вспомогательные функции, которые хранятся в таблицах поиска, снабженных клавишами type, например:

std::map makeAMap;
makeAMap[NUMBER] = []() -> A* { return new B; };
makeAMap[STRING] = []() -> A* { return new C; };
...

std::map getFuncMap;
getFuncMap[NUMBER] = [](A *item){ static_cast(item)->get(); };
getFuncMap[STRING] = [](A *item){ static_cast(item)->get(); };
...

A* item = makeAMap[type]();
...
item->common();    
getFuncMap[type](item);

Live Demo [115 ]

25
задан Ken 24 March 2010 в 17:19
поделиться

9 ответов

Если вы запустите gnome-терминал, например, «gnome-terminal --working-directory = myfolder», он начнется с рабочего каталога в ~ / myfolder. так что вы можете добавить новую запись в ваше меню, чтобы использовать эту команду вместо другой.

45
ответ дан Cdsboy 28 November 2019 в 17:54
поделиться

Я сделал так - с помощью скрипта: откройте 3 вкладки в одном и том же размере окна 170x40, каждая «вкладка» начинается в разных каталогах.

gnome-terminal --geometry = 170x40 --working-directory = myfolder1 \

- вкладка --working-directory = myfolder2 \

- вкладка - рабочий каталог = myfolder3

12
ответ дан 28 November 2019 в 17:54
поделиться

Из GNOME Terminal - Начало работы :

Вы также можете указать команду, которая запускается автоматически при запуске GNOME Terminal в профиле.

2
ответ дан lothar 28 November 2019 в 17:54
поделиться

Если папка имеет сложный путь, то есть не просто ~/myfolder, вы можете создать символическую ссылку на нее в вашем домашнем каталоге, чтобы вы могли быстро к ней добраться. Вы также можете установить переменную окружения CDPATH, чтобы bash сообщал о необходимости поиска в списке каталогов при вводе cd myfolder.

1
ответ дан Neil Mayhew 28 November 2019 в 17:54
поделиться

Опция каталога

Существует опция --working-directory для указания каталога запуска терминала (без краткой формы опций).

Основной подход для открытия терминала в /some/dir - это

gnome-terminal --working-directory=/some/dir

, но есть ловушка ...

Bad trap

Предполагая, что мы хотим запустить терминал в каталоге ~/dir.

Это не работает:

gnome-terminal --working-directory=~/dir

Команда выглядит отлично в соответствии с синтаксисом опции, но терминал запускается в домашнем каталоге.
Это потому, что он не расширяет тильду (~), по непонятным причинам - см. Ниже.

Эти работы:

gnome-terminal --working-directory=/home/auser/dir

gnome-terminal --working-directory=$HOME/dir

gnome-terminal --working-directory ~/dir

Расширение Тильды

Обратите внимание, что в последнем варианте нет =. Из-за этого ~ находится в начале слова оболочки, и поэтому управляется расширением тильды.

Проблема в том, что ~ расширяется не везде, а только в определенных местах. Один из них находится в переменных назначениях, как directory=~/dir. Это нормально, ~ расширяется до $HOME, но --working-directory=~/dir не расширяется ~, потому что это не переменное присваивание, это только выглядит очень похоже. [Тысяча сто двадцать семь]

1
ответ дан Volker Siegel 28 November 2019 в 17:54
поделиться

Чтобы открыть в моем нужном каталоге от имени пользователя root, я запустил:

gnome-terminal --working-directory=/home/my-project/ -x bash -c "sudo su"
1
ответ дан Donald Duck 28 November 2019 в 17:54
поделиться

Я впечатлен комментарием Нейла Мэйхью и ответом Фолькера Зигеля . Я попытался не только установить каталог по умолчанию для gnome-terminal , но и сохранить привычное поведение среды рабочего стола (я использую Linux Mint 17.1 Cinnamon , GNOME Terminal) 3.6.2 , возможно, это также может быть применено для других DE-конгенерированных Gnome). Итак, позвольте мне положить мои два цента.

  1. Добавление cd ~/myfolder в самом конце ~/.bashrc делает работу. Но, как уже упоминалось, это повлияет на каждую интерактивную оболочку. Более того, если вы откроете какой-нибудь каталог в файловом менеджере ( Nemo или Nautilus или что-то в этом роде) и откроете оттуда контекстное меню (например, щелкните правой кнопкой мыши и затем выберите ] Открыть в Терминале ) Новый экземпляр gnome-терминал будет запущен в ~/myfolder независимо от папки, которая была загружена в файловый менеджер. Даже если вы запустите gnome-terminal --working-directory=/some/other/folder явно, он все равно откроется ~/myfolder. Кажется, что подход с .bashrc непригоден.

  2. gnome-terminal --working-directory=myfolder работает нормально, но только если вы используете настраиваемый пункт меню в вашем DE (или настраиваемый ярлык на рабочем столе), который запускает терминал с этим параметром. Если вы хотите запустить gnome-терминал из командной строки или из мини-лаунчера (нажмите Alt + F2 ), вы должны ввести параметр каждый раз. В любом случае, этот подход более или менее применим.


Как gnome-терминал определяет, какую папку открыть? Когда --working-directory не указан, он открывает текущий рабочий каталог (например, $PWD), в противном случае он открывает каталог, указанный явно.

Я нашел следующее решение.

Создайте файл с именем gnome-terminal в папке ~/bin. Он будет действовать как ярлык, но отовсюду (меню «Пуск», мини-панель запуска, другой экземпляр терминала и т. Д.), Потому что ~/bin уже находится в $PATH (по крайней мере, в Linux Mint ...). Сделайте этот файл исполняемым. Затем добавьте следующее содержимое в скрипт:

#!/bin/bash

home_directory=~

if [ "$PWD" == "$home_directory" ]; then
    # When 'gnome-terminal' was ran from either 
    #     - start menu
    #     - mini-launcher
    #     ... 
    # parent directory is set to $HOME.
    #
    # We respect original command line arguments. 
    # For example, when terminal is ran from another 
    # terminal instance and '--working-directory' is 
    # specified explicitly we should left it as it is.  
    # If there are two '--working-directory' switches 
    # in the command line 'gnome-terminal' will pick up 
    # the last one.
    #
    # Also we use full path to executable here in order
    # to prevent recursive calling of 'gnome-terminal' from 
    # '~/bin'.
    /usr/bin/gnome-terminal --working-directory=/ "$@" 
else
    # 'gnome-terminal' was from another directory. 
    # We don't change anything.
    /usr/bin/gnome-terminal "$@"
fi

Если вы запустите gnome-терминал из меню Пуск, вы увидите, что текущая папка в новом терминале - / (вы можете использовать любая папка, например, ~/myfolder, потому что наша пользовательская оболочка представляет собой Bash-скрипт, поэтому расширение оболочки работает нормально).

Если вы обращаетесь к Открыть в Терминале в файловом менеджере, вы получите текущий каталог в новом терминале.

Если вы запустите gnome-terminal с явным параметром --working-directory (возможно, из существующего экземпляра терминала), новый экземпляр терминала будет открыт в указанной вами директории.

1
ответ дан Community 28 November 2019 в 17:54
поделиться

Добавьте следующее в свою ~ / .bashrc

cd ~ / myfolder

12
ответ дан 28 November 2019 в 17:54
поделиться

Вы можете использовать расширение nautilus-open-terminal. Это позволяет щелкнуть правой кнопкой мыши на папке в nautilus и открыть окно терминала с этой папкой в качестве рабочего каталога.

Вы также можете запустить терминал обычным способом, набрать "cd " и перетащить значок папки из nautilus в окно. Это вставит путь к папке в командную строку, после чего вы напечатаете return для перехода в этот каталог. То же самое можно проделать с обычными файлами, чтобы вставить путь к ним и выполнить команды.

4
ответ дан 28 November 2019 в 17:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: