Как отключить вывод в Bash script?
У меня есть программа, которая выводит на stdout и хотела бы отключить этот вывод в Bash script при работе с файлом.
Например, запуск программы будет выводиться:
% myprogram
% WELCOME TO MY PROGRAM
% Done.
Я хочу, чтобы следующий script не выводил ничего на терминал:
#!/bin/bash
myprogram > sample.s
Ответы
Ответ 1
Если он выйдет на stderr, вы захотите его отключить. Вы можете сделать это, перенаправив дескриптор файла 2:
# Send stdout to out.log, stderr to err.log
myprogram > out.log 2> err.log
# Send both stdout and stderr to out.log
myprogram &> out.log # New bash syntax
myprogram > out.log 2>&1 # Older sh syntax
# Log output, hide errors.
myprogram > out.log 2> /dev/null
Ответ 2
Перенаправить stderr на стандартный вывод
Это перенаправит stderr (который является дескриптором 2) на дескриптор файла 1, который является stdout.
2>&1
Перенаправить стандартный вывод в файл
Теперь при выполнении этого вы перенаправляете стандартный вывод в файл sample.s
myprogram > sample.s
Перенаправить stderr и stdout в файл
Объединение двух команд приведет к перенаправлению как stderr, так и stdout в sample.s
myprogram > sample.s 2>&1
Перенаправить stderr и stdout в /dev/null
Перенаправьте на /dev/null
, если вы хотите полностью замолчать свое приложение.
myprogram >/dev/null 2>&1
Ответ 3
Весь вывод:
scriptname &>/dev/null
Портативный:
scriptname >/dev/null 2>&1
Портативный:
scriptname >/dev/null 2>/dev/null
Для более новых bash (нет портативных):
scriptname &>-
Ответ 4
Если вы хотите STDOUT и STDERR оба [все], тогда самый простой способ:
#!/bin/bash
myprogram >& sample.s
затем запустите его, как ./script
, и вы не получите никакого вывода на ваш терминал.:)
" > &" означает STDERR и STDOUT. &
также работает аналогично с трубой: ./script |& sed
который отправит все в sed
Ответ 5
Если вы все еще пытаетесь найти ответ, особенно если вы создали файл для вывода, и вы предпочитаете четкую альтернативу:
echo "hi" | grep "use this hack to hide the oputut :) "
Ответ 6
Попробуйте:
myprogram &>/dev/null
чтобы получить выходной файл
Ответ 7
Примечание. Этот ответ связан с вопросом "Как отключить эхо во время выполнения сценария оболочки Linux", который, в свою очередь, был помечен как дублированный на этот.
Чтобы фактически отключить эхо-команду, введите:
stty -echo
(это, например, когда вы хотите ввести пароль и не хотите, чтобы он был читабельным. Не забудьте включить эхо в конце вашего скрипта, иначе человек, который запускает ваш скрипт, не увидит, что он/с этого момента вводится. Чтобы включить эхо при запуске:
стое эхо