Я обнуляю медиа с простым pv /dev/zero > ...
и хочу знать если после этой команды, там любой другой байт на медиа. Это позволило бы мне знать, что медиа повреждаются. Я принимаю идеальную среду, которую любой другой процесс не запишет в медиа тем временем.
Я попробовал команду grep -vP '\x00' ...
но это не дает обратной связи в обоих случаях: 1. файл имеет только байты NUL 2. файл имеет другие байты. В конечном счете я добавляю ; echo $?
но это всегда дает 0.
Я пропускаю что-то? Что должна проверить надлежащая команда?
grep -qP '[^\x00]' ...; echo $?
Флаг -q
сообщает grep, чтобы он возвращал 0, как только он увидит ненулевой байт ([^\x00]
). В противном случае возвращается 1. Это дает преимущество в скорости для положительных совпадений.
Например, чтение 100 миллионов случайных байтов, затем 100 миллионов нулевых байтов:
$ time head -c 100000000 /dev/urandom | grep -qP '[^\x00]'; echo $?
real 0m0.007s
user 0m0.000s
sys 0m0.004s
0
$ time head -c 100000000 /dev/zero | grep -qP '[^\x00]'; echo $?
real 0m4.281s
user 0m4.120s
sys 0m0.268s
1