Книга: Программирование на языке Ruby

14.3.2. Дополнительные замечания по поводу библиотеки shell.rb

14.3.2. Дополнительные замечания по поводу библиотеки shell.rb

Метод transact исполняет блок в контексте вызывающего объекта. Таким образом, допустима следующая сокращенная запись:

sh = Shell.new
sh.transact do
 echo("Строка данных") > "somefile.txt"
 cat("somefile.txt","otherfile.txt") > "thirdfile"
 cat("thirdfile") | tee("file4") > STDOUT
end

Итератор foreach принимает в качестве параметра файл или каталог. Если это файл, он перебирает все его строки, а если каталог — все имена файлов в нем.

sh = Shell.new
# Напечатать все строки файла /tmp/foo.
sh.foreach("/tmp/foo") {|l| puts l }
# Вывести список файлов в каталоге /tmp.
sh.foreach("/tmp") {|f| puts f }

Метод pushdir запоминает текущий каталог, а метод popdir делает последний запомненный каталог текущим. У них есть синонимы pushd и popd. Метод pwd возвращает текущий рабочий каталог, его синонимы — getwd, cwd и dir.

sh = Shell.cd "/home"
puts sh.pwd # /home
sh.pushd "/tmp"
puts sh.pwd # /tmp
sh.popd
puts sh.pwd # /home

Для удобства в класс Shell импортируются методы из различных источников, в том числе из класса File, модуля FileTest и библиотеки ftools.rb. Это избавляет от необходимости выполнять require, include, создавать объекты, квалифицировать вызовы методов и т. д.

sh = Shell.new
flag1 = sh.exist? "myfile"     # Проверить существование файла.
sh.delete "somefile"           # Удалить файл.
sh.move "/tmp/foo", "/tmp/bar" # Переместить файл.

У библиотеки Shell есть и другие возможности, которые мы здесь не рассматриваем. Дополнительную информацию ищите в документации.

Оглавление книги


Генерация: 1.108. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз