От man sh
-c string If the -c option is present, then commands are read from string.
If there are arguments after the string, they are assigned to the
positional parameters, starting with $0
Это значит, что ваша команда должна быть такой:
$ sh -c 'echo "$0"' foo
foo
Аналогично:
$ sh -c 'echo "$0 $1"' foo bar
foo bar
Это была первая часть для понимания; второй случай прост и не нуждается в объяснении, я думаю.
Обычно я монтирую куда-нибудь образ диска и find
все файлы из его "корневого" каталога (корень точки монтирования )выдаю sha1sum
для каждого найденного файла.
Затем перейдите в корневой каталог ФС, которую вы хотите проверить, и запустите sha1sum
против списка сохраненных сумм (вам нужно выполнить find
из корней, чтобы пути к файлам были одинаковыми на выходе sha1sum
)
Это немного запутанно, потому что отсутствующие файлы вызовут ошибки, а имена файлов с пробелами или мета-символами оболочки -также доставят вам проблемы, но это лучший из известных мне способов поиска дубликатов файлов или обнаружения изменений.
mount -o ro /root/Disk.img /mnt/disk_img
)cd /mnt/disk_img && find. -type f -exec sha1sum '{}' \; > tmp/disk_img.sums
umount /mnt/disk_img
cd / && sha1sum -c /tmp/disk_img.sums