Если вы работаете в системе на базе Linux, используйте cat
вместо dd
cat source.img >/dev/destdisk
. Но на самом деле вам нужно учитывать скорость ввода-вывода вашего диски и шина данных, к которой они подключены: насколько быстро ваш вращающийся диск может доставлять данные, и скорость любого типа USB, который вы используете.
Итог: если вы были на 100% привязаны к процессору, возможно, что-то вы можете делать это в программном обеспечении, но здесь вы почти наверняка связаны с вводом-выводом.
Согласно Почему cat (1) работает быстрее, чем dd (1M) , утилита cat
быстрее, чем dd
, даже при использовании того же размера блока. (В статье объясняется, почему - очевидно, потому что cat
использует mmap ()
, тогда как dd
- нет.)
В оболочке bash
оператор &&
является логическим -и предназначен для управления процессом, позволяя запустить второй процесс, если первый процесс не завершился с ошибками. Двойной канал(||
)делает то же самое, но это оператор ИЛИ, и он будет выполняться, если предыдущая команда НЕ была успешной.
Таким образом, данный файл с именем sample_file
с содержимым:
aaa
bbb
123
ccc
ddd
Команда
grep ccc sample_file >/dev/null && echo found || echo not found
Будет эхо "найдено" и вот это-
grep cow sample_file >/dev/null && echo found || echo not found
Будет эхо "не найдено"
Просто замените операторы эха своим назначением переменной.
Команда Windows сравнивает два файла с помощью команды fc
и ищет в выводе сообщение «нет различий»; если мы видим это сообщение, тогда установите переменную equal
в yes
.
Команду unix cmp
можно использовать для сравнения файлов, и она возвращает нулевой результат, если они совпадают, и мы можем проверить это напрямую, поэтому нет необходимости в функции «поиск вывода».
[[ -z "$(cmp file1 file2 2>&1)" ]] && equal=yes
Предполагая, что делают эти команды Windows, я бы сказал, что эквивалент в сценарии POSIX sh
будет:
equal=no
cmp -s file1 file2 && equal=yes
, который установит для переменной equal
значение yes
, если два файла могут быть прочитаны и имеют идентичное содержимое (байт -— -байт ).
В качестве альтернативы cmp -s
в некоторых системах, в том числе на базе Linux -, можно использовать diff -q
.diff -q
(q
для тихий ), в отличие от большинстваcmp -s
(s
для тихий)выдает сообщение об ошибке, если какой-либо из файлов не может быть прочитан. В то время как реализации GNU diff
и cmp
сначала проверяют, являются ли два файла путями к одному и тому же файлу (, включая жесткие или символические ссылки на один из других )или имеют разные размеры для сохранения необходимо прочитать их, реализация busybox
cmp
не делает, аbusybox
diff
делает. Таким образом, в тех системах, где используется busybox
, вы можете предпочесть diff -q
из соображений производительности.