Книга: Программирование на языке 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
есть и другие возможности, которые мы здесь не рассматриваем. Дополнительную информацию ищите в документации.
- НЕВОЗМУТИМОСТЬ. Не раздражайтесь, даже по самому важному поводу
- Включение библиотеки
- Дополнительные национальные кодовые страницы и порядки сортировки
- Звонок по поводу оплаты
- Глава 8 Дополнительные службы
- Настройка библиотеки
- Обеспечение безопасности библиотеки
- Удаление библиотеки
- 4.6. Дополнительные возможности защиты
- 4.13. Замечания по работе Firewall
- Замечания по работе с файлами
- 5.2.2. Дополнительные возможности OpenSSL