system
функция уже вызывает оболочку. Это может быть любым sh (Граница/POSIX) оболочка, не всегда колотить. Если Вы не должны использовать определенные для удара конструкции, Вы не должны вызывать другую оболочку в нем. Если Вы выполняете простую команду, просто включаете перенаправление в командную строку. При выполнении более сложных команд Вы, возможно, должны поместить фигурные скобки вокруг целой последовательности команды.
system("echo hello >somefile");
system("{ echo foo; echo bar; } >somefile");
С GNU ls
(как найдено на большинстве дистрибутивов Linux), можно использовать ls -v
, где -v
, от man
страница
-v natural sort of (version) numbers within text
GNU ls -v
был уже упомянут, но для других команд, если Ваша оболочка zsh
, можно влиять на подстановочные знаки порядка, расширены с globbing спецификаторами.
Например:
printf '%s\n' *(om)
Перечислил бы файлы, отсортированные по времени изменения (от новейшего до самого старого), *(Om)
инвертировать порядок сортировки (от самого старого до новейшего).
*(n)
отсортировал бы файлы численно. Таким образом, если Ваш ls
не GNU ls
, Вы могли все еще сделать:
ls -fdl -- *(n)
Отсортировать список численно.