LINUX.ORG.RU

История изменений

Исправление Deleted, (текущая версия) :

Это ли не просто обращение к bash?

К sh, если быть точным. Как legacy-костыль, почему бы и нет.

Насчёт перенаправлений. В sh все эти >, <, | заменяют более вменяемые средства комбинирования алгоритмов. Когда приходится вызывать sed или awk только для того, чтобы несколько строк распарсить и потом обратно скомбинировать, понятно, что это нездоровая ситуация. А sed или awk это, на миточку, тоже скриптовые языки. И тоже неполноценные, в результате чего толком ни sh на awk не заменить, ни awk на sh.

Когда в языке есть нормальный процессинг файлов, строк, списков и т.п., то вопрос «как удобно перенаправить поток данных в очередную обёртку» отходит на второй план. Тем более, что можно на коллбеках мелко нашинковать, так что в IO не упирается:

require 'find'
Find.find("/").lazy.select {|p| p.match(/\.txt$/)}.each {|p| puts p}

Выводит *.txt в реальном времени по мере просмотра каталогов.

Исходная версия Deleted, :

Это ли не просто обращение к bash?

К sh, если быть точным. Как legacy-костыль, почему бы и нет.

Насчёт перенаправлений. В sh все эти [include]>[/include], [include]<[/include], [include]|[/include] заменяют более вменяемые средства комбинирования алгоритмов. Когда приходится вызывать sed или awk только для того, чтобы несколько строк распарсить и потом обратно скомбинировать, понятно, что это нездоровая ситуация. А sed или awk это, на миточку, тоже скриптовые языки. И тоже неполноценные, в результате чего толком ни sh на awk не заменить, ни awk на sh.

Когда в языке есть нормальный процессинг файлов, строк, списков и т.п., то вопрос «как удобно перенаправить поток данных в очередную обёртку» отходит на второй план. Тем более, что можно на коллбеках мелко нашинковать, так что в IO не упирается:

require 'find'
Find.find("/").lazy.select {|p| p.match(/\.txt$/)}.each {|p| puts p}

Выводит *.txt в реальном времени по мере просмотра каталогов.