[[email protected] dir2]# ls
d1 d2 d3 d4 d5 f1 f2 f3 f4 f5
[[email protected] dir2]# rm -f *
rm: cannot remove `d1': Is a directory
rm: cannot remove `d2': Is a directory
rm: cannot remove `d3': Is a directory
rm: cannot remove `d4': Is a directory
rm: cannot remove `d5': Is a directory
[[email protected] dir2]# ls
d1 d2 d3 d4 d5
[[email protected] dir2]# rm -rf *
[[email protected] dir2]# ls
[[email protected] dir2]#
Я пишу инструмент для удаления файлов и каталогов. Мне нужно проверить, задал ли пользователь аргумент "*"
, а затем удалить все файлы и папки. Но "*"
, заданный в качестве аргументов, не принимает никаких файлов и папок, присутствующих в каталоге, как проверять "*"
без указания внутри двойных кавычек.Как извлечь «*» без предоставления котировок при запуске исполняемого файла
./a.out *
или ./a.out -f *
или ./a.out -rf *
. Я не могу дать ./a.out "*"
. Мне нужно ввести ./a.out *
и выполнить проверку. Как это сделать?
Расширение подстановок выполняется оболочкой, к тому времени, когда ваша программа работает, слишком поздно. Вместо этого вы можете выполнить собственное расширение '*' и посмотреть, соответствует ли оно командной строке (хотя это не является надежным, поскольку содержимое каталога может меняться промежуточный) –