Comdiv писал(а):
Александр Ильин писал(а):
Я такие задачи иногда на Факторе делаю, он динамический.
Ещё и ориентированность на стек тоже повышает скриптовость, хотя, на мой взгляд, сильно снижая наглядность.
Да, всё, что делается пайпами и прочими перенаправлениями потоков данных, довольно органично описывается на Факторе. Конкатенация есть композиция. Но иной раз за понятность кода приходится дополнительно бороться, разделяя на небольшие смысловые куски, как я попытался сделать в примере. Можно было бы всё в одну функцию написать, но это не красиво.
Comdiv писал(а):
Цитата:
Запуск: factor -run=move-os-subdirs
Пришлось изрядно повозиться, чтобы запустить скрипт. Без
подсказок не получилось.
Куда проще было бы способом, пригодным для использования и с she-bang
Код:
factor -script move-os-subdirs.factor
В Виндовс я просто настроил на расширение *.factor вот такую команду:
Код:
<path-to-factor>\factor.com "%1"
Всё просто работает. (factor.com - это консольный вариант пускача из стандартной поставки.)
Может быть, в Линуксе тоже прокатит.
А вот, пока писал этот пост, в рассылке уже ответили:
John Benediktsson писал(а):
Yes, if you put a she-bang at the top you can just run it.
$ cat hello
#!/path/to/factor
USE: io
"HELLO WORLD" print
$ ./hello
HELLO WORLD
А вообще, респект, что вы попробовали! Я думал, никто даже вчитываться не будет.
Comdiv писал(а):
Цитата:
26 минут заняло вместе с подглядываниями в справку
Много, конечно, но предположу, что если бы этим озаботились разработчики, создав специальные библиотеки, factor можно было бы эффективно использовать как замену bash, решая такие задачи за те же 2-5 мин.
Я в справку глядел, так как редко пользуюсь всякими файловыми командами, коих довольно много. Пока понял, что нету нужного варианта, пока сам написал из имеющихся функций...
Ну, вон тот же glob есть, например, а "переместить все подходящие по маске файлы в такой-то каталог с переименованием каждого файла" - не нашёл. Можно переместить список файлов в один каталог, но потом каждый надо было бы отдельно переименовывать внутри того каталога. Два переименования я решил не делать, а до хорошей абстракции не успел додуматься за это время.
Вообще, если задача разовая, я такие штуки в интерактивном режиме обычно делаю: получил список файлов, поковеркал его как надо, и так далее. Интерактивная разработка на очень хорошем уровне у них, и справка под рукой всегда.