簡介
Ruby 是一種功能極其豐富的、免費的、簡單的、可擴展的、可移植的、面向對象的腳本編程語言。最近,它在 Web 領域廣受歡迎。這在一定程度上要歸因于非常強大的 Web 應用程序開發框架 Rails,Rails 正是用 Ruby 編寫的。Rails,也稱 Ruby on Rails(ROR),顧名思義,它為快速、有效地開發 Web 應用程序提供一個非常強大的平臺。它是高度可伸縮的,Web 上有很多站點就是用 Ruby on Rails 構建的。
除了與 Rails 一起用作 Web 應用程序開發平臺外,Ruby 還具有較少被提及的另一面,那就是作為一種強大的腳本編程語言,就像 Python 或 Perl 那樣。它擁有非常強大的功能,由于可以使用很多內建的和外部的庫,因此可利用它的威力來解決通常系統管理工作環境中出現的很多腳本編程需求。
系統管理需要大量編寫腳本以使事情更簡單、更有效。編寫腳本比單調的手動工作能更好地解決用戶管理、進程管理、文件管理、軟件包管理和其他基本的自動化需求。在這個場景中,Ruby 非常有用。它有一套很好的庫可滿足這一點。
對于本文,我假設讀者具有 Ruby 的應用知識。這里提供的基本例子使用純 Ruby,因此可以在 Ruby 支持的任何類 UNIX? 系統以及 Windows? 上運行。對于更高級的 Cfruby 例子,需要能夠使用一個 UNIX 系統。下面所有的例子已經在一臺 Linux? 機器上使用 Ruby v1.8.4 進行了測試。它們應該也能用于最新版本的 Ruby。
實踐中的 Ruby
第一個例子在指定路徑中搜索符合給定模式的文件,并以用戶友好的方式給出關于這些文件的詳細信息。實現這一目標不必依賴于任何命令行實用程序,只需使用 Ruby 內建的 API。因此,這個例子在有 Ruby 運行的任何平臺上都能運行。
而且,這個例子展示了 Ruby 在簡化腳本編寫需求方面有多強大。它不是簡單地模擬 *nix "find" 命令,而是構建在該命令之上,因而在使用 Ruby 時具有很強的定制能力。
清單 1. 在給定路徑中搜索符合給定模式的模式的文件,并顯示它們的詳細信息
require 'find'puts ""puts "-----------------------File Search-----------------------------------"puts ""print "Enter the search path : "searchpath = getssearchpath = searchpath.chompputs ""print "Enter the search pattern : "pattern = getspattern = pattern.chompputs"----------------------------------------------------------------------"puts "Searching in " + searchpath + " for files matching pattern " + patternputs"----------------------------------------------------------------------"puts "" Find.find(searchpath) do |path| if FileTest.directory?(path) if File.basename(path)[0] == ?. Find.prune # Don't look any further into this directory. else next end else if File.fnmatch(pattern,File.basename(path)) puts "Filename : " + File.basename(path) s = sprintf("%o",File.stat(path).mode) print "Permissions : " puts s print "Owning uid : " puts File.stat(path).uid print "Owning gid : " puts File.stat(path).uid print "Size (bytes) : " puts File.stat(path).size puts "---------------------------------------------------" end end end
新聞熱點
疑難解答