Linux Bash函数,用于在后台自动运行命令并断开连接

Linux Bash函数,用于在后台自动运行命令并断开连接,linux,bash,shell,Linux,Bash,Shell,我试图在我的bashrc中创建一个函数,允许我启动任何命令并自动拒绝它 e、 g.launch./myprogram或launch xdg open myfolder 我已经用过很多次了command;Ctrl+Z;bg;disown,只想创建这些步骤的快捷方式 但是,我不知道如何在bash脚本中嵌入Ctrl+Z的操作。我已经看到它的动作是SIGTSTP,但是我真的不知道如何将它合并到bash函数中。您可以直接在后台运行该命令,而不是停止它然后在后台运行它。使用和: $ cat > lau

我试图在我的bashrc中创建一个函数,允许我启动任何命令并自动拒绝它

e、 g.
launch./myprogram
launch xdg open myfolder

我已经用过很多次了
command;Ctrl+Z;bg;disown
,只想创建这些步骤的快捷方式


但是,我不知道如何在bash脚本中嵌入Ctrl+Z的操作。我已经看到它的动作是SIGTSTP,但是我真的不知道如何将它合并到bash函数中。

您可以直接在后台运行该命令,而不是停止它然后在后台运行它。使用

$ cat > launch
#! /bin/bash
"$@" & disown
Ctrl+d


对于子孙后代和其他路过的人,以下是我制作的bash功能:

 launch()
{
"$@" > /dev/null 2>&1 & disown
}
  • “$@”将提示中给出的每个参数作为一个参数
  • /dev/null 2>&1
    将每个输出(stout和stderr)重定向到dev/null,dev/null将自动删除它们,这样它就不会出现在shell上
  • &
    在后台运行该命令,这意味着它将允许您在shell中输入其他命令
  • disown
    ,顾名思义,它将使进程不再绑定到shell,您可以安全地关闭shell,而不必同时关闭进程

我有一个类似的脚本,但也将stdin/stdout/stderr重定向到/dev/null,这样它就不会试图阻止输入或将调试信息喷入我的终端。。。。我讨厌我自己。我知道&,甚至知道我必须这样做来取代bg,但没有意识到它也有效地绕过了ctrl+z的需要。谢谢。您基本上将@choroba的第二行替换为:
/dev/null&disown
@root我在这段时间内已经找到了它,并在下面的回答中实现了该函数。你能确认它做同样的事情吗?或者我的脚本不完美?您不需要否认,因为从脚本启动后台进程构成了一个双叉。
 launch()
{
"$@" > /dev/null 2>&1 & disown
}