1

Я пытаюсь освоить интерфейс командной строки (CLI).

В общем корневом каталоге я сделал следующее:

root@droplet:/# ls ?tc

Я ожидал получить только каталог etc в списке результатов.

Тем не менее, я получил огромный список файлов и каталогов. Этот список был даже (и намного) длиннее, чем когда я просто делал ls без каких-либо дополнительных критериев. Зачем?

1 ответ1

2

Я полагаю, что из ваших фраз вы ожидали получить один результат:

# ls ?tc
etc

но вы на самом деле получили несколько результатов.

Знак вопроса является символом сглаживания, как определено:

?

джокер. ? символ служит односимвольным "подстановочным знаком" для расширения имени файла в глобализации, а также представляет один символ в расширенном регулярном выражении.

То, что произошло, это то, что подстановочный знак был расширен оболочкой (предположительно bash) перед передачей в ls 1. Так ls относились к нему , как:

# ls etc

Который возвратил бы много «файлов и папок 2 » из /etc


1: Вы можете проверить, что расширение происходит перед выполнением команды, попробовав: echo * - это будет (должно!) возвратите файлы и каталоги в текущем каталоге.

2 : Если вы хотите разобраться с командной строкой, предпочитайте термин «каталог», а не «папка» :-)

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