在命令末尾附加&
会在后台启动它。 E.g:
$ wget google.com &
[1] 7072
但是,这会打印一个作业编号和PID。是否有可能阻止这些?
注意:我仍然希望保留wget
的输出 - 它只是我想摆脱的[1] 7072
。
答案 0 :(得分:1)
set
builtin set -b
有一个选项可以控制此行的输出,但选择仅限于"立即" (设置时)和"等待下一个提示" (未设置时)。
设置选项后立即打印的示例:
$ set -b
$ sleep 1 &
[1] 9696
$ [1]+ Done sleep 1
通常的行为,等待下一个提示:
$ set +b
$ sleep 1 &
[1] 840
$ # Press enter here
[1]+ Done sleep 1
据我所见,这些都无法被抑制。但好消息是,作业控制消息不会显示在非交互式shell中:
$ cat sleeptest
#!/bin/bash
sleep 1 &
$ ./sleeptest
$
因此,如果您在子shell 中的后台中启动命令,则不会有任何消息。要在交互式会话中执行此操作,您可以在子shell中运行命令(感谢David C. Rankin):
$ ( sleep 1 & )
$
也导致没有作业控制提示。
答案 1 :(得分:-1)
来自Advanced Bash-Scripting Guide:
压制
stdout
。cat $filename >/dev/null # Contents of the file will not list to stdout.
压制
stderr
(来自Example 16-3)。rm $badname 2>/dev/null # So error messages [stderr] deep-sixed. Suppressing output from both stdout and stderr. cat $filename 2>/dev/null >/dev/null #1 If "$filename" does not exist, there will be no error message output. # If "$filename" does exist, the contents of the file will not list to stdout. # Therefore, no output at all will result from the above line of code. # # This can be useful in situations where the return code from a command #+ needs to be tested, but no output is desired. # # cat $filename &>/dev/null # also works, as Baris Cicek points out.