Да, это возможно, пока Вы используете загрузчик, который понимает RAID-1 и LVM. Копайтесь 2 (т.е. Личинка 1.9x — LVM и поддержка технологией RAID, запущенная в Личинке 1.95), LILO (нестаринные вещи) делает, действительно Копается 1 (т.е. Личинка 0.9x) не делает.
Источник: я сделал это. Также:
GRUB 2 может считать файлы непосредственно из устройств RAID и LVM.
Копайтесь 1, или любой другой загрузчик не испытывает затруднений из-за RAID-1, он просто читает из одного из объемов (можно даже сохранить способность загрузиться без вмешательства, если одна из зеркальных половин перестала работать с правильным BIOS и установкой загрузочного сектора). Но Личинка 1 не понимает LVM, таким образом, Вам нужен non-LVM /boot
.
Обратите внимание, что режимы Grub 2's RAID могли бы отстать от Linux, таким образом, в данном распределении, могут быть расположения RAID, что ядро Linux и поддержка инструментов пространства пользователя отлично, но Личинка дросселирует на. Например, в Ubuntu 10.04, Grub2 не поддерживал mdraid RAID-1 с 1,0 форматами метаданных (с метаданными в начале объема). Ubuntu 11.10, Grub2 поддерживал этот режим. Я не знаю точный порог версии (1.97?).
Вам не нужно экранировать имена файлов, с которыми вы работаете в скрипте. Эвакуация необходима только в том случае, если вы хотите поместить имя файла в виде literal в скрипт, или передать несколько имён файлов в качестве одного входного потока в другой скрипт.
Так как вы прокручиваете выходной сигнал find
, это один из простейших (!) способов обрабатывать все возможные пути:
while IFS= read -r -d ''
do
file_namex="$(basename -- "$REPLY"; echo x)"
file_name="${file_namex%$'\nx'}"
do_something -- "$file_name"
done <(find "$some_path" -exec printf '%s\0' {} +)
Для этого можно использовать встроенную функцию printf
с % q
. Например:
$ file="Dr' A.tif"
$ printf '%q\n' "$file"
Dr\'\ A.tif
$ file=' foo$bar\baz`'
$ printf '%q\n' "$file"
\ foo\$bar\\baz\`
Из документации bash на printf
:
В дополнение к спецификациям стандартного формата, описанным в printf (1) и printf (3), printf интерпретирует: % b развернуть escape-последовательности обратной косой черты в соответствующем аргументе % q цитирует аргумент таким образом, чтобы его можно было повторно использовать как ввод оболочки % (fmt) T выводит строку даты и времени, полученную в результате использования FMT в качестве формата строка для strftime (3)
Многие из этих ответов, включая тот, который получил наибольшее количество голосов с использованием printf "% q"
, не будут работать во всех случаях без дополнительных манипуляций. . Я бы предложил следующее (пример ниже):
cat << EOF;
2015-11-07T03: 34: 41Z app [postgres.0000]: [TAG] запрос текстового поиска не содержит лексемы: ""
EOF