Получить zsh не для завершения пользователей

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

32-разрядная платформа может ограничить вас до 2 31 -1 (т. Е., MAXINT), но у вас наверняка сначала закончится ОЗУ - дескриптор файла занимает более двух байтов ОЗУ. (Конечно, вы работаете на 64-битной платформе, а 2 63 -1 - абсурдное количество файлов, которые нужно открыть)

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

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

2
01.01.2017, 17:46
2 ответа

Пользователи являются допустимыми параметрами для команды cd, и поэтому предлагаются в качестве завершения, поскольку у вас включена опция cdable_vars . С этой опцией cd foo можно использовать вместо cd ~foo, что позволяет foo быть всем, что может быть tilde-expanded, включая имя пользователя или имя каталога, заданное hash -d (но не переменные оболочки, несмотря на название опции).

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

unset -f _cd
autoload -U _cd
functions[_cd_orig]=_cd
_cd () {
  setopt local_options no_cdable_vars
  _cd_orig $@[@]
}
1
27.01.2020, 22:10

Параметр cdablevars отвечает за создание именованных каталогов и, следовательно, пользователей в качестве допустимого аргумента для cd. Если вы этого не используете, используйте unsetopt cdablevars .

Чтобы изменить то, что завершено для компакт-диска, вы можете использовать стиль tag-order . Например, чтобы сначала попробовать только локальные каталоги, это будет:

    zstyle ':completion:*:cd:*' tag-order local-directories

Удобное сочетание клавиш для просмотра применимых тегов в определенном контексте - нажать Ctrl-X h вместо вкладки .

2
27.01.2020, 22:10

Теги

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