С zsh:
zmodload zsh/mapfile
for i ($filelist) mapfile[$i]="$prefix
$mapfile[$i]$suffix
"
С ksh93
или bash
(или zsh
):
for file in "${filelist[@]}"; do
{
rm -- "$file" && {
printf '%s\n' "$prefix"
cat
printf '%s\n' "$suffix"
} > "$file"
} < "$file"
done
Без подробностей о том, что происходит с ошибками, кто знает, поскольку некоторые проверки всегда будут терпеть неудачу и никогда не могут быть исправлены, если, например, / etc / aliases
был изменен указать root
mail в другом месте:
% rpm -qf /etc/aliases
setup-2.8.14-20.el6_4.1.noarch
% rpm -V setup
S.5....T. c /etc/aliases
%
В этом случае размер файла отличается (что - setperms
ничего не сделает для исправления), дайджест отличается (опять же --setperms
не имеет отношения), и mtime отличается, что опять же - setperms
не будет делать никаких вещь для.
Однако разрешения, безусловно, могут быть нарушены и исправлены с помощью - setperms
.
% sudo chmod 7001 /etc/aliases
% ls -l /etc/aliases
---S--S--t. 1 root root 1542 Aug 1 2014 /etc/aliases
% rpm -V setup
SM?....T. c /etc/aliases
% sudo rpm --setperms setup
% rpm -V setup
S.5....T. c /etc/aliases
% ls -l /etc/aliases
-rw-r--r--. 1 root root 1542 Aug 1 2014 /etc/aliases
%
Обратите внимание на второй столбец для «режима» и то, как не удалось выполнить дайджест-проверку, учитывая, что разрешения были объединены.
(Обертка вокруг rpm -V
может оказаться полезной для подробного разъяснения этого довольно загадочного вывода ...)