只需将命令输出重新分配并重定向到/ dev/null

Phi*_*ppe 11 bash shell command-line autocomplete tab-completion

我经常从shell(在我的情况下是Bash)执行命令,我想立即分叉并且我想忽略它的输出.事实上,我经常创建一个脚本(silent)来执行它:

#!/bin/bash
$@ &> /dev/null &
Run Code Online (Sandbox Code Playgroud)

然后,我可以跑,例如

silent inkscape myfile.svg
Run Code Online (Sandbox Code Playgroud)

并且我的终端不会受到我刚刚分叉的进程的调试输出的污染.

我有两个问题:

  1. 是否有"官方"的方式来做这件事?,即更短但相当于&> /dev/null &

  2. 如果没有,是否有一种方法可以在我的silent命令之后使标签完成工作,就像它不在那里一样?举个例子,在我输入之后silent inksc,我希望bash silent inkscape在我按下时自动完成命令[tab].

BRP*_*ock 4

旁白:可能想要exec "$@" &> /dev/null &在您的silent脚本中,使其丢弃子外壳,并且周围的引号"$@"将防止空格妨碍。

至于#2:complete -F _command silent应该做你想做的事情。(我调用该脚本的我的版本launchcomplete -F launch在我的.bash_profile