3
bash$ compgen -d -- '~'

Производит пустой вывод.

bash$ compgen -d -- '~mi'

Также выдает пустой вывод.

bash$ compgen -d -- '~mice/'
~mice/.pulse
~mice/.mozilla
~mice/Pictures

ОК

bash$ compgen -d -- '~mice/Do'
~mice/Downloads
~mice/Documents

Также хорошо.

Это ошибка в compgen, что он выдает пустой вывод для '~' и '~ mi'? Если это ошибка, будет ли она что-то сломать после исправления?

1 ответ1

4

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

bash$ compgen -u -- '~mi'
~mice

Однако нельзя указывать -d и -u в одном вызове compgen .

Обратите внимание на следующее:

bash$ compgen -d -- '~/'     # Like #1, but with trailing /: it works
bash$ compgen -d -- '~mice'  # Like #3, but w/o trailing /: it doesn't work

Таким образом, неполные расширения тильды не будут расширены до нужного каталога с помощью -d , и "полный" означает включение символа разделителя завершающего пути.


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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .