Утилита ls не может интерпретировать неоднозначные ссылки на файлы?

В одном из моих любимых учебников Linux я нашел заявление, что утилита ls не может интерпретировать неоднозначные ссылки на файлы. Аргумент более или менее выглядит следующим образом: «Первый ls вызывается с аргументом ?old. Оболочка расширяет ?old в соответствующее имя файла hold и передает это имя в ls. Вторая команда такая же, как и первая, за исключением того, что ? защищена с помощью '\'. Оболочка не распознает этот знак вопроса как специальный символ и передает его на ls. [F11] также не может его интерпретировать:

$ ls ?old
hold
ls \?old
ls: ?old: No such file or  directory

Мой вопрос: здесь это Shell, который не может интерпретировать из-за обратного слэша. Итак, этот пример показывает только, что с обратным слэшем ни shell, ни ls не могут интерпретировать неоднозначную ссылку на файл. что без обратной косой черты ls не может интерпретировать неоднозначные ссылки на файлы. Что я здесь не так понял?

0
задан 17 July 2018 в 08:34

1 ответ

Без обратной косой черты: интерпретация оболочки ?, расширяет ?old до hold, и поэтому аргумент, который получает ls, - hold. С обратной косой чертой: оболочка не интерпретирует ?, но она интерпретирует \? как литерал ? и передает его как ? в ls. Таким образом, аргумент, полученный ls, равен ?old. ls не видит обратную косую черту.
5
ответ дан 18 July 2018 в 17:23

Другие вопросы по тегам:

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