Перенаправление вывода команды кажется неактуальным, поскольку уведомление отправляется оболочкой при асинхронном запуске задания . Точнее, это функция оболочки (функциональность), связанная с управлением заданиями .
Вот цитата из «Справочного руководства Bash», глава «Управление заданиями», раздел первый.
Оболочка связывает JOB с каждым конвейером. Он хранит таблицу выполняемых в данный момент заданий, которая может быть указана с помощью jobs
команды. Когда Bash запускает задание асинхронно, он печатает строку, которая выглядит следующим образом:
[1] 25647
это означает, что это задание № 1 и что идентификатор процесса последнего процесса в конвейере, связанного с этим заданием, равен 25647. Все процессы в одном конвейере являются членами одного и того же задания. Bash использует абстракцию JOB в качестве основы для управления заданиями.
Обратите внимание, что сценарий оболочки не отображает это уведомление.
$ cat test
#!/bin/bash
true & echo true
$ ./test
true
По факту
Zsh
Документация Zsh содержит аналогичные указания по поводу этих уведомлений, см. man 1 zshmisc
Раздел «ЗАДАНИЯ». Эти уведомления не отображаются, когда управление заданиями отключено.
МОНИТОР ( -m , ksh: -m )
Разрешить контроль работы. Устанавливается по умолчанию в интерактивной оболочке.
zsh_prompt % setopt no_monitor
zsh_prompt % true & echo true
true
zsh_prompt %
zsh_prompt %
удар
Кажется, что Bash всегда отображает, например [1] 25647
. «Окончательное уведомление», например [1]+ Done true
, не отображается, когда управление заданиями отключено.
bash_prompt $ true & echo true
[1] 25647
true
bash_prompt $
[1]+ Done true
Контроль работы отключен
bash_prompt $ set +m # disable job control
bash_prompt $ true & echo true
[1] 25685
bash_prompt $
bash_prompt $
Вывод
Я не знаю, хорошо ли отключить управление заданиями, чтобы скрыть уведомления?
Ресурсы