首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取linux终端名称

如何获取linux终端名称
EN

Stack Overflow用户
提问于 2020-11-27 19:55:54
回答 1查看 128关注 0票数 0

我想在linux中的终端上执行一个命令。现在,为了做到这一点,我不能像windows那样对cmd进行硬编码。如何以编程方式从java中获取字符串形式的终端名称?

代码语言:javascript
复制
new ProcessBuilder(new String[] {"xfce4-terminal", "--title="+windowTitle, "--hold", "-x", "java", "-jar", decodedPath, "run"}).start();

注意字符串"xfce4-terminal“。这取决于他们所使用的linux发行版。有什么可靠的方法可以获得java命令的终端exe。在我看来,它应该是System.getProperty("os.terminal"),但是,这并不存在。

EN

回答 1

Stack Overflow用户

发布于 2020-11-29 08:04:17

这里是确定os终端的跨平台方式。支持windows、mac和linux

代码语言:javascript
复制
    public static String osName = System.getProperty("os.name");
    public static String[] windows_terminals = new String[]
    {
        "cmd",
        "powershell",//seems to freak out and seems to be beta even in 2020 with all it's bugs
    };
    
    public static String[] mac_terminals = new String[]
    {
        "bin/bash"  
    };
    
    public static String[] linux_terminals = new String[]
    {
            "/usr/bin/gcm-calibrate",
            "/usr/bin/gnome-terminal",
            "/usr/bin/mosh-client",
            "/usr/bin/mosh-server",
            "/usr/bin/mrxvt",           
            "/usr/bin/mrxvt-full",        
            "/usr/bin/roxterm",          
            "/usr/bin/rxvt-unicode",        
            "/usr/bin/urxvt",             
            "/usr/bin/urxvtd",
            "/usr/bin/vinagre",
            "/usr/bin/x-terminal-emulator",
            "/usr/bin/xfce4-terminal",   
            "/usr/bin/xterm",
            "/usr/bin/aterm",
            "/usr/bin/guake",
            "/usr/bin/Kuake",
            "/usr/bin/rxvt",
            "/usr/bin/rxvt-unicode",
            "/usr/bin/Terminator",
            "/usr/bin/Terminology",
            "/usr/bin/tilda",
            "/usr/bin/wterm",
            "/usr/bin/Yakuake",
            "/usr/bin/Eterm",
            "/usr/bin/gnome-terminal.wrapper",
            "/usr/bin/koi8rxterm",
            "/usr/bin/konsole",
            "/usr/bin/lxterm",
            "/usr/bin/mlterm",
            "/usr/bin/mrxvt-full",
            "/usr/bin/roxterm",
            "/usr/bin/rxvt-xpm",
            "/usr/bin/rxvt-xterm",
            "/usr/bin/urxvt",
            "/usr/bin/uxterm",
            "/usr/bin/xfce4-terminal.wrapper",
            "/usr/bin/xterm",
            "/usr/bin/xvt"
    };
    
    public static String getTerminal()
    {
        String[] cmds = getTerminals(osName);
        for(String cmd : cmds)
        {
            try 
            {
                Runtime.getRuntime().exec(cmd + " cd " + System.getProperty("user.dir"));
                return cmd;
            } 
            catch (Throwable e) {}
        }
        return null;
    }

    public static String[] getTerminals(String os)
    {
        return os.contains("windows") ? windows_terminals : os.contains("mac") ? mac_terminals : os.contains("linux") ? linux_terminals : null;
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65036960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档