Как мне действительно скрыть весь вывод консоли из процесса, который я запускаю?

Я нашел обходной путь для этой проблемы на официальной странице Guake github -:

.

Вы должны перейти в меню -Приложения -Gnome и нажать на символ Keyboard.

Здесь будут перечислены все значения по умолчанию Gnome-Keyboard-Shortcuts.

При прокрутке вниз нажмите +внизу страницы, чтобы добавить новый ярлык:

Name: Guake
Command: guake -t
Shortcut: F12

В моем случае перезагрузка не потребовалась.

Запуск Guake с использованием этого обходного пути не очень гладкий, но годный...

из guake man -страница:

-t, --toggle-visibility  
      Toggle the visibility of guake

0
21.11.2019, 23:50
1 ответ

Вы должны сделать это в обратном порядке :сначала перенаправить stdout, затем перенаправить stderr на stdout:

firefox >/dev/null 2>&1 &

РЕДАКТИРОВАТЬ :Вот объяснение. 2>&1— это операция дублирования файлового -дескриптора (см. справочную страницу bash и найдитеDuplicating File Descriptors):там написано «дублировать файловый дескриптор 2, чтобы сделать то же самое, что и файловый дескриптор 1». После этого все, что будет записано в fd 2, будет отправлено туда, куда fd 1 отправляет вещи. Таким образом, stderr (2 )и stdout (1 )будут писать в одно и то же место. Но они независимы, поэтому, если вы впоследствии измените fd 1 (, например. при перенаправлении stdout )fd 2 останется на месте :, он по-прежнему будет писать туда, куда fd 1 писал до последнего перенаправления.

Если вы сначала перенаправляете стандартный вывод, а затем дублируете, то и fd 1, и fd 2 записываются в одно и то же место :, куда был перенаправлен fd 1.

По сути, оболочка выполняет перенаправления/дублирование слева направо, так что вы должны получить правильный порядок.

Кстати, обратите внимание, что в качестве особого случая bash предоставляет ярлык для перенаправления stdout и stderr в одно и то же место:

 cmd &> /dev/null

эквивалентно

  cmd > /dev/null 2>&1
1
28.01.2020, 02:38

Теги

Похожие вопросы