Синтаксический анализ ls(1)
вывод опасен - создайте несколько файлов со смешными именами в каталоге и протестируйте его:
touch "one file"
touch "`printf "\x0a\x0a\x0ahello\x0a world"`"
Это создает два файла в текущей рабочейкаталог.Я ожидаю, что ваши попытки разобрать ls(1)
вывод не будут работать.Это может быть хорошо, если вы показываете результаты для человек (хотя человек будет очень запутан, если имя файла включает в себя вывод, который выглядит так же, как ls(1)
вывод!), Но если вы пытаетесьчтобы представить что-то вроде explorer.exe
или Finder.app
представления файлов в файловой системе, это ужасно сломано .
Вместо этого используйте opendir(3)
, readdir(3)
и closedir(3)
читать записи каталога самостоятельно.Это будет более безопасным, более портативным и (в качестве дополнительной выгоды) немного более эффективным.