У меня есть сценарий Bash, который создает некоторые файлы с помощью dd
. Проблема в том, что dd генерирует большое количество выходных данных, которые будут мешать выводу моего скрипта. Обыскивая, я нашел решение:
dd if=boot1h of="/dev/r$temp1" >& /dev/null
Есть ли альтернатива, или перенаправление /dev/null
на единственный путь?
/dev/null
- вы судите, потому что вамdd
нужен доступ для записи/dev/r$temp1
(я полагаю). Вам нужно будет делать это независимо от того, как вы подавляетеdd
вывод; перенаправление вывода на/dev/null
не требует rootcat
,head
илиtail
вместо этого.Ответы:
Со
dd(1)
страницы руководства :таким образом:
Это все еще выводит
мусор при
dd
выходе, так что перенаправление на приемник данных на самом деле ваш единственный вариант.источник
Добавить
status=none
:Из документов dd (coreutils) 8.21 :
источник
info page
; первоначальный ответ здесь содержал точную цитату изman page
. Я бы скопировал / вставил прямо соinfo
страницы, еслиman
страница неоднозначная, но на самом деле, до вас ... О, кстати, большое спасибо за ваш другой комментарий на мой ответ, связанный с сортировкой по дням недели.dd
безstatus=
)dd: invalid status flag: `none' Try `dd --help' for more information.
Для дальнейшего использования:
Для подавления вывода dd полностью перенаправьте stderr в / dev / null следующим образом:
Это прекрасно работает, если вы хотите, например, рассчитать время процесса с помощью команды time в bash и присвоить результат переменной, не получая вывод, который производит dd.
ссылка: http://www.unix.com/shell-programming-and-scripting/131624-how-suppress-dd-output.html
источник
Нечто подобное должно работать и у вас с последними версиями BASH и ZSH:
PS Это всего лишь пример, который я побежал ...
источник
С любым приложением или командой Unix вы можете подавить весь вывод с помощью
cmd >/dev/null 2>&1
Первый бит перенаправляет стандартный вывод (номер блока 1) в / dev / null. Но вам нужна вторая часть, чтобы ТАКЖЕ перенаправить вывод ошибки (блок № 2) в то же место, что и номер 1.
В UNIX STDIN = 0, STDOUT = 1 и STDERR = 2
источник
stderr
имеет файловый дескриптор 2 . (Я предполагаю, что "STDERR = 3" - просто опечатка.)cmd 2>logfile.txt
кажется более адаптированнымЕсли я правильно понимаю, что вы пытаетесь сделать,
sudo
вставляете ли вы эту команду в сценарий и ожидаете ли вы, что сценарий запросит ваш пароль при запуске? В этом случае вы просто делаете вещи сложным способом.Более чистое решение - написать скрипт обычным способом (т.е. без него
sudo
) и запустить его от имени суперпользователя . Причина этого в том, что если скрипту нужен доступ с правами суперпользователя, просто дайте ему доступ (зачем ждать определенной команды?). В скрипте, чтобы проверить, запускается ли он от имени root, сделайте что-то вроде этого:источник
sudo
? Обычные пользователи должны иметь возможность перенаправлять вещи/dev/null
просто отлично.Вы можете перенаправить вывод в обычный файл, т.е.
источник