РЕДАКТИРОВАТЬ # 1: Я не могу ограничиться тем, что все аргументы заключены в две кавычки, так что оболочка не расширяет аргумент с *
до соответствующего пути.Как я могу реализовать команду 'ls' с подстановочным знаком '*'?
EDIT # 2: Для того, чтобы восстановить каталоги, такие как */*
, ../*
и dirA/*/file.out
, Как я должен использовать итерации цикла или рекурсивный вызов?
Я только что узнал о функции fnmatch()
. Но я не знаю места начала.
Существует много возможных случаев. Я смущен, имея дело с этими делами.
Например, допустим, что исполняемая программа - a.out
.
$./a.out -l */*
$./a.out -l ../*
$./a.out -l [file_name] [directory_name]
/* Since I also have to implement ls command with no wildcard. */
Что мне делать? Любые советы были бы замечательными.
Спасибо заранее.
Вы должны знать, что ваша оболочка расширяет '*' до того, как она получит ваш исполняемый файл ... – geoffspear
Быстрое примечание: большинство оболочек заменяет собой себя. Когда вы запускаете 'ls *' в bash, аргументы, ls' принимает имена всех файлов в текущем каталоге, а не '*'. Чтобы обеспечить эту функциональность, вам придется избегать ваших аргументов. – pistache