has_all_iregexps() {
awk '
BEGIN {
if (ARGC <= 1) exit
for (i = 1; i < ARGC; i++) s[tolower(ARGV[i])]
n = ARGC - 1
ARGC = 1
}
{
for (i in s) if (tolower($0) ~ i) {
delete s[i]; if (!--n) exit
}
}
END {
if (n) {
print "Those regexps were not matched:"
for (i in s) print " " i
exit(1)
}
}' "$@" >&2
}
А затем:
nginx -V 2>&1 |
has_all_iregexps 'nginx/1\.9\.10' \
'ngx_pagespeed-release-1\.9\.32\.10' \
'openssl-1\.0\.2f' \
'modsecurity-2\.9\.0' &&
echo "has the stuff we need"
Или:
has_all_istrings() {
awk '
BEGIN {
if (ARGC <= 1) exit
for (i = 1; i < ARGC; i++) s[tolower(ARGV[i])]
n = ARGC - 1
ARGC = 1
}
{
for (i in s) if (index(tolower($0), i)) {
delete s[i]; if (!--n) exit
}
}
END {
if (n) {
print "Those strings were not found:"
for (i in s) print " " i
exit(1)
}
}' "$@" >&2
}
nginx -V 2>&1 |
has_all_istrings 'nginx/1.9.10' \
'ngx_pagespeed-release-1.9.32.10' \
'openssl-1.0.2f' \
'modsecurity-2.9.0' &&
echo "has the stuff we need"
(tolower
- для нечувствительного к регистру сопоставления, чтобы соответствовать вашему использованию -i
, хотя я не уверен, почему вы хотите сделать нечувствительное к регистру сопоставление здесь).
«Специальные» файлы — это все еще файлы, хранящиеся в файловой системе подобно «обычным» файлам. Каталоги, файлы, символические ссылки и т. д. различаются по типу, который явно хранится в файловой системе. См. Общие сведения о разрешениях и типах файлов UNIX для получения подробной информации о различных типах файлов, с которыми вы можете столкнуться.
Как файлы хранятся и какие файлы могут храниться, зависит от файловой системы. Некоторые файловые системы поддерживают подмножество типов файлов в стиле Unix -; например, FAT не может хранить ничего, кроме файлов или каталогов (и меток томов ). Это означает, что хранилище «специального» файла зависит от файловой системы, и вы не можете копировать биты, представляющие файл, из одной файловой системы в другую, как -.
Симлинки хранят текстовое представление своей цели. В большинстве современных файловых систем в стиле Unix -есть место для коротких целей наряду с «основной» информацией символической ссылки (в ее индексном узле ); более длинные ссылки требуют выделения блока данных.
Узлы устройств хранят идентификаторы, известные как основной и второстепенный узлы.Это два небольших -числа с фиксированными требованиями к хранилищу, и в индексном узле для них есть место. Цифры зависят от ОС -, поэтому вы не можете скопировать узел из Linux в BSD, сохранив при этом его функции.
Подробную информацию о том, как Ext4 хранит эту информацию, можно найти в документации ядра Ext4 . Ищите, в частности, i_mode
, чтобы увидеть, как хранится тип файла.