shopt -s cdable_vars не расширяется должным образом

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

Адреса первых нескольких блоков данных файла хранятся в индексном узле, но, поскольку индексный дескриптор имеет фиксированный размер, это работает только для небольших файлов. В ext2 или ext3 большие файлы требуют использования косвенных блоков для хранения остальной части списка адресов блоков, которые не помещаются в сам индексный дескриптор. То есть индекс содержит адрес блока, который сам содержит список блоков. Они называются косвенными блоками. Эти дополнительные блоки обычно не нужны при использовании экстентов, потому что для хранения экстента требуется постоянное количество места, независимо от того, насколько большой диапазон блоков он описывает.

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

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

1
30.04.2019, 10:19
1 ответ

Частичное решение (имя переменной будет расширено, но ее значение не будет подставлено в командную строку ):если у вас установлен пакет bash-completion, переустановите завершение для команды cd:

complete -v -F _cd -o nospace cd pushd

Пакет делает это, если cdable_varsустановлен при получении /etc/profile.d/bash_completion.sh, поэтому вы можете установить profile.d, который будет получен перед ним.

Если у вас нет пакета, info bashдает пример функции завершения для cd, которая поддерживает cdable_vars.

1
28.01.2020, 00:12

Теги

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