【问题标题】:open terminal for issuing one command打开终端以发出一个命令
【发布时间】:2013-03-19 17:59:17
【问题描述】:

为了启动带参数的gui程序,我经常发现自己打开一个终端(在我的例子中是urxvt):用'nohup'或'disown'启动相应的程序,然后退出终端。这使程序按需要运行,但不太舒服。我不使用任何像 tmux 或 screen 这样的多路复用器,这样可以规避这个问题。我希望能够启动一个终端,它会在发出一个命令后自动拒绝并退出。有什么想法可以实现吗?

提前致谢

【问题讨论】:

  • 您是否考虑过使用小型 .sh 脚本作为这些程序的“快捷方式”?这样你就可以传入参数并在不输入的情况下退出终端?也许不是您想要的,但这是一个想法。
  • 感谢您的提示,但我仍然需要退出 bash。这相当麻烦,因为我的窗口管理器会自动聚焦已启动程序的新创建窗口。或者是否有可能从 bash 脚本中关闭嵌入终端?或者当程序返回一些退出代码时告诉终端退出?
  • 您使用的是什么发行版?你可能已经有一个启动器类型的程序,它只需要一个命令行并执行它,而不需要打开一个成熟的终端模拟器。
  • 我使用的是 ubuntu 12.04。作为窗口管理器,我使用 i3。通常,当我想启动一个 x 应用程序时,我使用 dmenu,它列出了我所有已安装的应用程序并支持自动完成。但是当我需要为程序提供额外的参数时,我想继续自动完成文件和(部分)参数。这是在命令行上提供的,但我不知道有任何启动器类型的程序可以做到这一点。

标签: linux bash terminal


【解决方案1】:

有更优雅的方法可以解决这个问题,但这里有一个基于您所描述的解决方案:

$ (xclock &);退出

将 xclock 替换为您要运行的 GUI 程序。

【讨论】:

  • 退出应用程序后想退出终端时这样也行。但是我想在输入相应的命令后退出终端,并在应用程序退出之前离开终端会话。
  • 其实没有。这将导致应用程序启动并且终端会话立即退出。 (因为有括号。)您尝试过但没有用吗?
  • 你是对的。抱歉,我不知道我测试了什么,但这确实有效。谢谢!所以,我看到括号在关闭嵌入终端后改变了行为,但是他们到底在做什么,以至于子进程没有收到停止的信号?这为我节省了一些步骤,但仍然:我实际上想要一些机制,它会提示我一个新的终端窗口,我可以在其中输入我想要的命令(例如示例中的 xclock),然后将其转换为你的命令提供。
  • 好的,括号似乎是一种隐含的否认,因为该进程已从作业列表中删除。
  • 括号创建一个子shell。
猜你喜欢
  • 2017-06-17
  • 2011-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-14
  • 2013-08-30
  • 1970-01-01
相关资源
最近更新 更多