В системах Linux задайте неизменяемый атрибут файла с помощью chattr .
sudo chattr +i file
A file with the 'i' attribute cannot be modified: it cannot be deleted or renamed, no link can be created to this file, most of the file's metadata can not be modified, and the file can not be opened in write mode. Only the superuser or a process possessing the CAP_LINUX_IMMUTABLE capability can set or clear this attribute.
Используйте lsattr
для отображения атрибутов файла.
lsattr -l myfile
myfile Immutable
Недостатком этого является то, что вы не сможете писать в файл, даже будучи суперпользователем (root ). Сначала вам нужно будет удалить неизменяемый атрибут:
sudo chattr -i file
В macOS команда chflags используется для установки и сброса неизменяемого флага. Для установки:
chflags uchg file
и снять или очистить:
chflags nouchg file
Эти операции может выполнять либо владелец файла, либо суперпользователь.
В macOS при использовании флагов -Ol
с ls
неизменяемый флаг отображается как uchg
, если он установлен.
Я бы предложил решение на основе awk
-, если этот инструмент вам доступен:
awk '/^Installed Product/{f=1} f && $1=="Version" {print $2; f=0}'
установит флаг f
после того, как будет найден заголовок «Установленный продукт», а (только )затем ищет строку, начинающуюся с «Версия». Он напечатает второе поле этой строки, разделенное пробелом -, которое является версией. В качестве меры безопасности он одновременно сбрасывает флаг, чтобы гарантировать, что последующее появление строки «Версия» не приведет к ложному выводу.
Вы можете использовать его как
sh /ihs/IBM/HTTPServer/bin/versionInfo.sh | awk '/^Installed Product/{f=1} f && $1=="Version" {print $2; f=0}'