bash - 简单地将命令的输出 fork 并重定向到/dev/null

标签 bash shell command-line autocomplete tab-completion

我经常从 shell(在我的例子中是 Bash)中执行我想立即 fork 的命令并且我想忽略其输出。事实上,我经常创建一个脚本(silent)来执行此操作:

#!/bin/bash
$@ &> /dev/null &

然后我可以运行,例如

silent inkscape myfile.svg

我的终端不会被我刚刚 fork 的进程的调试输出污染。

我有两个问题:

  1. 是否有一种“官方”方式来执行此操作?即更短但等效于 &>/dev/null & 的方法?

  2. 如果没有,有没有办法让制表符补全在我的silent 命令后正常工作,就好像它不存在一样?举个例子,在我输入 silent inksc 之后,我希望 bash 在我按下 [tab] 时自动完成我对 silent inkscape 的命令.

最佳答案

旁白:可能想在你的silent 脚本中exec "$@"&>/dev/null &,让它丢弃子shell,并且"$@" 周围的引号将防止空格妨碍。

至于 #2:complete -F _command silent 应该做您想要的事情。 (我将该脚本的版本称为 launch 并且在我的 .bash_profile 中有 complete -F launch)

关于bash - 简单地将命令的输出 fork 并重定向到/dev/null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8432853/

相关文章:

python - 使用 bash 执行 python 脚本的复杂任务

linux - 'mutt' 没有显示完整的主题

PHP shell_exec() 不工作,但命令从控制台工作

linux - 如何在另一个 screen session 中运行程序?

linux - 进程未显示在 "ps -e"输出中

ios - TACO 不会使用指定的 --device 参数远程构建 ios

linux - 在文件中查找以字符开头的单词并添加/添加文本

bash - 如何使用前缀/后缀重命名?

mysql - OSX dyld : lazy symbol binding failed: Symbol not found: _mysql_get_client_info

arrays - 来自 find 命令长度的 bash 数组