Как отключить вывод dd?

У меня есть сценарий bash, который создает некоторый файл, используя dd. Проблема заключается в том, что dd генерирует большое количество выходных данных, которые будут запутываться с выходом моего скрипта. Поиск вокруг Я нашел решение:

dd if=boot1h of="/dev/r$temp1" >& /dev/null

Есть ли альтернатива или перенаправляется на /dev/null единственный способ?

25 голосов | спросил dierre 31 Jpm1000000pmMon, 31 Jan 2011 15:41:18 +030011 2011, 15:41:18

7 ответов


13

На странице dd(1):

   status=noxfer
          suppress transfer statistics

следующим образом:

dd if=boot1h of="/dev/r$temp1" status=noxfer

Это все еще выводит

0+1 records in
0+1 records out

мусор, когда dd завершается, поэтому перенаправление на приемник данных действительно является вашим единственным вариантом.

ответил amphetamachine 31 Jpm1000000pmMon, 31 Jan 2011 15:47:31 +030011 2011, 15:47:31
42
dd if=boot1h of="/dev/r$temp1" status=none

из dd (coreutils) 8.21 docs :

 'status=LEVEL'
     Transfer information is normally output to stderr upon receipt of
     the 'INFO' signal or when 'dd' exits.  Specifying LEVEL will adjust
     the amount of information printed, with the last LEVEL specified
     taking precedence.

     'none'
          Do not print any informational or warning messages to stderr.
          Error messages are output as normal.

     'noxfer'
          Do not print the final transfer rate and volume statistics
          that normally make up the last status line.

     'progress'
          Print the transfer rate and volume statistics on stderr, when
          processing each input block.  Statistics are output on a
          single line at most once every second, but updates can be
          delayed when waiting on I/O.
ответил orgoj 23 PMpThu, 23 Apr 2015 12:36:08 +030036Thursday 2015, 12:36:08
5

Для справок в будущем:

Чтобы подавить вывод dd, полностью перенаправить stderr на /dev /null, например:

dd if=/dev/urandom of=sample.txt bs=5MB count=1 2> /dev/null

Это хорошо работает, если вы хотите, например, выполнить время с помощью команды time в bash и присвоить результат переменной, не получая ни одного из результатов, которые производит dd.

ссылка: http: //www.unix.com/shell-programming-and-scripting/131624-how-suppress-dd-output.html

ответил CSCH 23 J000000Thursday15 2015, 20:09:03
2

Что-то вроде этого также должно работать для вас с последними версиями BASH и ZSH:

dd if=/path/to/file of=/path/to/another_file bs=1M count=1 &> /dev/null

P.S. Это просто пример, который я побежал ...

ответил slashdot 1 FebruaryEurope/MoscowbTue, 01 Feb 2011 17:21:39 +0300000000pmTue, 01 Feb 2011 17:21:39 +030011 2011, 17:21:39
2

С любым приложением или командой Unix вы можете отключить весь вывод с помощью

cmd >/dev/null 2>&1

Первый бит перенаправляет стандартный вывод (номер единицы 1) на /dev /null. Но вам нужна вторая часть, чтобы ТАКЖЕ перенаправить вывод ошибки (номер устройства 2) в то же место, что и номер 1.

В UNIX STDIN = 0, STDOUT = 1 и STDERR = 2


ответил Michael Dillon 4 FebruaryEurope/MoscowbFri, 04 Feb 2011 06:07:06 +0300000000amFri, 04 Feb 2011 06:07:06 +030011 2011, 06:07:06
0

Если я правильно понимаю, что вы пытаетесь сделать, вы помещаете эту команду sudo в сценарий и ожидаете, что скрипт подскажет для вашего пароля, когда он там работает? В этом случае вы просто делаете сложный путь.

Более чистым решением является запись сценария обычным способом (т.е. без sudo) и запустите его как суперпользователь . Причина этого в том, что если скрипту нужен доступ суперпользователя, просто дайте ему доступ (зачем ждать до некоторой команды?). В скрипте, чтобы проверить, запущен ли он как root, выполните следующие действия:

if [ "$(id -u)" != "0" ]; then
    echo "This script must be run as root" 1>&2
    exit 1
fi
ответил phunehehe 31 Jpm1000000pmMon, 31 Jan 2011 16:19:41 +030011 2011, 16:19:41
0

вы можете перенаправить вывод в обычный файл i.e.:

 dd if=boot1h of="/dev/r$temp1" >& /tmp/dd.log
ответил jet 31 Jpm1000000pmMon, 31 Jan 2011 23:08:11 +030011 2011, 23:08:11

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132