如何获取linux终端名称

k75qkfdt  于 2021-06-04  发布在  Java
关注(0)|答案(1)|浏览(739)

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

  1. new ProcessBuilder(new String[] {"xfce4-terminal", "--title="+windowTitle, "--hold", "-x", "java", "-jar", decodedPath, "run"}).start();

注意字符串“xfce4 terminal”。这取决于linux的发行版本。有什么可靠的方法可以获得java命令的终端exe。在我看来,它应该由system.getproperty(“os.terminal”)实现,但是,这并不存在。

eni9jsuy

eni9jsuy1#

这里有一个跨平台的方法来确定操作系统终端。支持windows、mac和linux

  1. public static String osName = System.getProperty("os.name");
  2. public static String[] windows_terminals = new String[]
  3. {
  4. "cmd",
  5. "powershell",//seems to freak out and seems to be beta even in 2020 with all it's bugs
  6. };
  7. public static String[] mac_terminals = new String[]
  8. {
  9. "bin/bash"
  10. };
  11. public static String[] linux_terminals = new String[]
  12. {
  13. "/usr/bin/gcm-calibrate",
  14. "/usr/bin/gnome-terminal",
  15. "/usr/bin/mosh-client",
  16. "/usr/bin/mosh-server",
  17. "/usr/bin/mrxvt",
  18. "/usr/bin/mrxvt-full",
  19. "/usr/bin/roxterm",
  20. "/usr/bin/rxvt-unicode",
  21. "/usr/bin/urxvt",
  22. "/usr/bin/urxvtd",
  23. "/usr/bin/vinagre",
  24. "/usr/bin/x-terminal-emulator",
  25. "/usr/bin/xfce4-terminal",
  26. "/usr/bin/xterm",
  27. "/usr/bin/aterm",
  28. "/usr/bin/guake",
  29. "/usr/bin/Kuake",
  30. "/usr/bin/rxvt",
  31. "/usr/bin/rxvt-unicode",
  32. "/usr/bin/Terminator",
  33. "/usr/bin/Terminology",
  34. "/usr/bin/tilda",
  35. "/usr/bin/wterm",
  36. "/usr/bin/Yakuake",
  37. "/usr/bin/Eterm",
  38. "/usr/bin/gnome-terminal.wrapper",
  39. "/usr/bin/koi8rxterm",
  40. "/usr/bin/konsole",
  41. "/usr/bin/lxterm",
  42. "/usr/bin/mlterm",
  43. "/usr/bin/mrxvt-full",
  44. "/usr/bin/roxterm",
  45. "/usr/bin/rxvt-xpm",
  46. "/usr/bin/rxvt-xterm",
  47. "/usr/bin/urxvt",
  48. "/usr/bin/uxterm",
  49. "/usr/bin/xfce4-terminal.wrapper",
  50. "/usr/bin/xterm",
  51. "/usr/bin/xvt"
  52. };
  53. public static String getTerminal()
  54. {
  55. String[] cmds = getTerminals(osName);
  56. for(String cmd : cmds)
  57. {
  58. try
  59. {
  60. Runtime.getRuntime().exec(cmd + " cd " + System.getProperty("user.dir"));
  61. return cmd;
  62. }
  63. catch (Throwable e) {}
  64. }
  65. return null;
  66. }
  67. public static String[] getTerminals(String os)
  68. {
  69. return os.contains("windows") ? windows_terminals : os.contains("mac") ? mac_terminals : os.contains("linux") ? linux_terminals : null;
  70. }
展开查看全部

相关问题