Существует ли максимум для расширения имени файла в bash (подстановка), и если да, то какой?

Помимо ответов, уже предоставленных для CentOS 6.5,

CentOS 7 также имеет инструмент текстового пользовательского интерфейса для изменения имени хоста (и других сетевых настроек), часть Network Manager:

nmtui

запускает этот пользовательский интерфейс:

enter image description here

который имеет опцию Set system hostname.

Текстовый пользовательский интерфейс NetworkManager установлен по умолчанию в образе CentOS-7-x86_64-DVD-1511.iso, базовая установка. Если в вашем его нет, вы можете установить его следующей командой:

yum install NetworkManager-tui

11
06.04.2017, 18:19
2 ответа

Нет ограничений (кроме доступной памяти) на количество файлов, которые могут быть расширены с помощью bash glob.

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

Подробнее см.:

Чтобы обойти это ограничение, вы можете использовать (при условии, что GNU xargs или совместимый):

printf '%s\0' foo* | xargs -r0 rm -f

Выше, поскольку printf встроен (в bash и большинстве Bourne-подобных оболочек), мы не достигаем предела execve(). И xargs разделит список аргументов на столько вызовов rm, сколько необходимо, чтобы избежать ограничения execve().

С zsh:

autoload zargs
zargs foo* -- rm -f

С ksh93:

command -x rm -f foo*
18
27.01.2020, 19:57

Вы можете увидеть предел для общего размера аргументов с помощью:

getconf ARG_MAX

Обычно это определяется не оболочкой, а базовой операционной системой согласно этот ответ .

8
27.01.2020, 19:57

Теги

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