Можно ли изменить размер файловой системы без предварительного изменения размера раздела?

Вы пропустили случай, когда он показывает, что *расширяет массив до одной строки, а @расширяет до отдельных строк в кавычках:

printf 'string "%s"\n' "${cape[*]}"

, который генерирует

string "Ping Pong King Kong King Fisher Club Blurb"

и

printf 'string "%s"\n' "${cape[@]}"

, который генерирует

string "Ping Pong"
string "King Kong"
string "King Fisher Club"
string "Blurb"

Помните, что echoпросто объединяет свои аргументы и печатает их, в то время как printfзаполняет свою строку формата аргументами и повторяет тот же формат, если предоставлено больше аргументов.

Кроме того,

for s in "${cape[*]}"; do
    echo "$s"
done

генерирует одну строку вывода (он повторяет только одну строку ), а

for s in "${cape[@]}"; do
    echo "$s"
done

генерирует по одному элементу массива.


Вы всегда должны использовать двойные кавычки вокруг расширений ${array[*]}и ${array[@]}, если вы по какой-то причине не хотите явно вызывать разбиение слов и подстановку имен файлов.И вы используете *или @в зависимости от того, нужны ли вам элементы массива все вместе как одна строка или по отдельности.

По моему опыту, очень редко используется [*].


При получении длины массива не имеет значения, какой из *или @вы используете. Но если вы не используете ни то, ни другое, вы получите длину в символах первого элемента массива.

0
12.12.2019, 16:52
1 ответ

Вы можете (и должны )определенно сжимать файловую систему перед сжатием раздела, хотя и не обязательно, -если вы сначала сжимаете раздел, если вы не создаете новый раздел, ничего должен писать в новое пустое пространство, но это все еще кажется опасным.

Если вы говорите об увеличении файловой системы, вы можете перезаписать некоторое пространство после раздела (, например. с суперблочными копиями ). Опять же, это может работать, если ничто не записывает в (официально )пустое пространство перед изменением размера файловой системы, но resize2fsобычно не выходит за пределы размера раздела.

Обратите внимание, что ваш пример выглядит как изменение размера всего диска и использование файловой системы в режиме без разделов. В этом случае уменьшение размера диска перед файловой системой может (и, скорее всего, )приведет к повреждению файловой системы, в то время как увеличение файловой системы должно выполняться после увеличения размера диска.

1
28.01.2020, 02:38

Теги

Похожие вопросы