Использование только функций оболочки:
s1=ka3ak
s2=Raman
maxlen=${#s1}
diffs=0
[[ ${#s2} -gt $maxlen ]] && maxlen=${#s2}
for((i=0; i < maxlen; i++))
do
[[ ${s1:i:1} == ${s2:i:1} ]] || ((++diffs))
done
echo $((100 * diffs / maxlen))
В корневом каталоге любого RHEL/CentOS ISO вы найдете два скрытых файла:.discinfo
и .treeinfo
.
Файл .discinfo
будет выглядеть так:
1504618416.850667
7.4
x86_64
Вторая строка указывает, что этот пример файла .discinfo
был из CentOS версии 7.4.
Файл .treeinfo
будет выглядеть следующим образом:
[general]
name = CentOS-7
family = CentOS
timestamp = 1504618609.47
variant =
version = 7
packagedir =
arch = x86_64
[stage2]
mainimage = LiveOS/squashfs.img
[images-x86_64]
kernel = images/pxeboot/vmlinuz
initrd = images/pxeboot/initrd.img
boot.iso = images/boot.iso
[images-xen]
kernel = images/pxeboot/vmlinuz
initrd = images/pxeboot/initrd.img
Итак, если вам нужен только основной номер версии:
# mount -o loop,ro CentOS.iso /mnt
# grep ^version /mnt/.treeinfo | cut -d " " -f 3
7
# umount /mnt
Если вам также нужен дополнительный номер версии («уровень исправления»):
# mount -o loop,ro CentOS.iso /mnt
# head -2 /mnt/.discinfo | tail -1
7.4
# umount /mnt
Возможно, это умеренное мошенничество, но :проект CentOS публикует контрольные суммы своих официальных ISO-образов(ссылка на пример для CentOS 6.10 ). Запустите sha1sum на вашем iso и идите сравните, контрольная сумма не зависит от имени файла. Вы также можете посмотреть приблизительный размер ISO (, но имейте в виду, что некоторые программы отображают 2 ^ 20 байт как МБ, некоторые 10 ^ 6 байт, поэтому лучше исключать, только если разница в размере составляет не менее 10% ). ].