Как открыть терминал команды в Linux?

Платформа IntelliJ (на которой основаны IDE JetBrains) предлагает два формата проекта

enter image description here

Если вы выберете На основе каталогов (примечание: кажется, единственный выбор для PyCharm)

есть папка .idea на проект .
для модуля имеется файл .iml (который может быть самим проектом, если есть только один).

Папка .idea отслеживает конфигурацию рабочей области

  • стили кода
  • источники данных
  • словари
  • выходы HTTP-запросов [ 1115]
  • Настройки VSC
  • Настройки компилятора
  • Библиотеки
  • Состояние пользовательского интерфейса

Файл .iml, вместо

[ 1133]

  • языковые уровни
  • выходные папки компиляции
  • исключенные папки
  • исходные папки
  • зависимости (вставляются вручную или через систему сборки)
    • Они являются структурными компонентами проекта IDEA.
      Они не нужны при работе над VS Code, Eclipse или другими IDE, однако они могут быть полезны для импорта целей.

    7
    задан alainlompo 2 November 2017 в 20:19
    поделиться

    8 ответов

    В Linux существует много эмуляторов терминала, которые позволяют Вам взаимодействовать с различными оболочками. Каждая оболочка является в основном интерпретатором команд, который понимает команды Linux (GNU & Unix управляет, более корректно, я предполагаю...). Эмулятор терминала обеспечивает интерфейс (окно) для оболочки и некоторые другие средства для использования командной строки. Для открытия окна терминала просто необходимо изменить командную строку как этот:-

    import java.io.*;
    
    class TerminalLauncher
    {
        public static void main(String args[]) throws IOException
        {
            String command= "/usr/bin/xterm"; 
            Runtime rt = Runtime.getRuntime();  
            Process pr = rt.exec(command);
        }
    }
    

    Основное предположение, которое я сделал, состоит в том, что Вы хотите открыть xterm, который доступен почти в любой системе (с X установленный, конечно). Вы могли бы хотеть открыть другой эмулятор терминала как rxvt, eterm, aterm, терминал гнома или консоль. Командная строка может также быть изменена для использования различных оболочек как zsh. Я предлагаю, чтобы Вы поймали исключение в случае, если терминал, который Вы выбрали, не присутствует, и обработайте его путем просьбы, чтобы пользователь установил его. Лучшее решение состоит в том, чтобы принять параметры командной строки для пользователей предпочтенная оболочка или использовать конфигурационный файл, который пользователь может изменить, чтобы заставить Ваш сценарий открыть оболочку его выбора.

    Примечание:
    1. Как другие уже указали, xterm (или любой другой терминал по Вашему выбору) может не быть в указанном пути (/usr/bin/...) и даже может не быть установлен, таким образом, Вам, возможно, придется использовать некоторую необычную командную строку (Исключая: конвейерная обработка находит через grep для получения пути к xterm прежде, чем запуститься), который не является такой прекрасной идеей. Я думаю, что лучший способ состоит в том, чтобы позволить пользователю настроить все это.

    2. Я получил комментарий к этому ответу (ypnos), предложив, чтобы я избегал использования полных путей и скорее полагался на команду, находящуюся в переменной окружения PATH. Я должен сказать, что соглашаюсь. В этом случае командная строка должна быть -

    String command = "xterm"
    

    Действительно посмотрите на комментарий, потому что он также указывает, что проблема с использованием находит.

    8
    ответ дан 6 December 2019 в 10:03
    поделиться

    Под Gnome это gnome-terminal.

    Под KDE это konsole.

    Или Вы могли использовать более универсальную терминальную программу xterm.

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

    3
    ответ дан 6 December 2019 в 10:03
    поделиться

    Нет никакой единственной стандартной "терминальной" команды на Linux - те доступные зависят, на котором GUI присутствует (т.е. ли KDE или Gnome, и т.д.).

    Необходимо смочь полагаться xterm при присутствовании, но на современных вариантах Linux это не предпочтительный терминал:

    String command= "/usr/bin/xterm";
    Runtime rt = Runtime.getRuntime();
    Process pr = rt.exec(command);
    

    Конечно, "xterm" не мог бы быть в том конкретном пути...

    3
    ответ дан 6 December 2019 в 10:03
    поделиться

    Нет на самом деле терминала. То, что Вы действительно хотите, является оболочкой. Большинство Linux использует BaSH в качестве оболочки, но сохранять безопасную сторону необходимо ограничить себя/bin/sh

    Править: Хм я, вероятно, неправильно понял вопрос. Если Вы хотите интерактивный терминал, необходимо изучить использование инструментария, обеспечивающего компонент для этого.

    Edit2: Возможно, Ваши потребности могут быть удовлетворены VTE, который является GTK + компонент для встраивания терминала.

    1
    ответ дан 6 December 2019 в 10:03
    поделиться

    Я определенно обеспечил бы простой способ настроить путь к желаемому терминалу в месте, которое может быть легко отредактировано. Например, возможно, в XML-файле конфигурации.

    Различные дистрибутивы сохранят это в различных местах, таким образом, будет, вероятно, лучше проверить на документацию распределения для платформ, Вы нацелены (и зарегистрировать, как изменить его).

    "/usr/bin/xterm" должен быть на большинстве машин, но я не обязательно поставил бы ферму на нем.

    0
    ответ дан 6 December 2019 в 10:03
    поделиться

    так как необходимо предположить, что Вы почти ничего не знаете о системе, Вы работаете на этом, я сказал бы, что наименьший общий знаменатель будет:

    Строковая команда = "/bin/sh";

    • или еще более 'гарантируемый' -

    Строковая команда = "sh";

    0
    ответ дан 6 December 2019 в 10:03
    поделиться

    Я думаю, что было бы хорошо, если Ваше приложение откроет терминальное приложение пользователя по умолчанию.

    К сожалению, кажется, что нет никакого универсального способа определить его.

    По-моему, самое предпочтительное решение было бы (остановка каждый раз, когда можно открыть что-то):

    • попробуйте к настольной среде recongnize пользователя и решите, что это - терминальное приложение по умолчанию. Можно считать что-то об этом здесь.
    • проверьте $TERM переменной среды
    • Попросите у пользователя ее предпочтения и сохраните его в конфигурационном файле.

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

    String command = System.getenv().get("TERM");
    Runtime rt = Runtime.getRuntime();
    Process pr = rt.exec(command);
    
    1
    ответ дан 6 December 2019 в 10:03
    поделиться

    xterm will most probably be available on most Linux-based operating systems and if present will be found in the path variable.

    Therefore, you will need to do something like this:

    try {
        Runtime r = Runtime.getRuntime();
        String myScript = .....
        String[] cmdArray = {"xterm", "-e", myScript + " ; le_exec"};
        r.exec(cmdArray).waitFor();
    } catch (InterruptedException ex){
        ex.printStackTrace();
    } catch (IOException ex) {
        ex.printStackTrace();
    }
    

    The -e option can be used to invoke either a script or another program, for example: javac. In this case you would make an assignment like: myScript = "javac".

    You will need the " ; le_exec" part if you do not want the window to immediately close after execution, otherwise discard it. The semi-colon is used to separate commands and le_exec is just a simple script that waits for the user to press Enter.

    However, if your script needs arguments, then you would need to replace the String myScript by and array of Strings.

    3
    ответ дан 6 December 2019 в 10:03
    поделиться
    Другие вопросы по тегам:

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