?
本文檔使用 php中文網(wǎng)手冊 發(fā)布
請使用如下命令行啟動Ruby解釋器.
ruby [ option ...] [ -- ] [ programfile ] [ argument ...]
這里的"option"指下文將要提到的命令行選項中的一個。"--"則顯式地表明選項字符串到此結(jié)束。"programfile"是裝載Ruby腳本的文件。若省略不寫或者寫成"-"時,Ruby會把標(biāo)準(zhǔn)輸入當(dāng)做Ruby腳本進行處理。
programfile若以“#!”開始,則進行特殊的處理。詳細(xì)情況請參考下文的關(guān)于解釋器行。
argument中的字符串將變成內(nèi)部常數(shù)ARGV的初始值。在有的環(huán)境中(Win32),標(biāo)準(zhǔn)shell不會展開通配符,這時Ruby解釋器將自行展開通配符然后賦值給ARGV。此時,可使用的通配符有“*”、“?”、“[]”和“**/”(與Dir.glob不同,這里不能使用“{..}”)。在Win32環(huán)境中,若不想展開通配符的話,請使用單引號(')將參數(shù)括起來。
Ruby解釋器可接受下列命令行選項?;旧吓cPerl的類似。
以8進制數(shù)指定輸入記錄分隔符('$/')。
若不指定數(shù)字的話,分隔符是空字符(等同于$/="\0")。數(shù)字后面可以有其他的開關(guān)(switch)。
-00代表段落模式(等同于$/=""),-0777(因為這個代碼不代表任何文字)表示將文件的全部內(nèi)容一次性讀入(相當(dāng)于$/=nil)。
與'-n'或'-p'一起使用時,可以打開自動拆分模式(auto split mode)。自動拆分模式將在各個循環(huán)前執(zhí)行以下動作。
$F = $_.split
若沒有同時指定'-n'或'-p'選項的話將不起作用。
執(zhí)行腳本之前,先移動到指定目錄。
只對腳本進行編譯,而并不執(zhí)行。編譯后若沒發(fā)現(xiàn)語法錯誤,則顯示“Syntax OK”。
顯示版權(quán)信息。
指定Ruby要處理的漢字編碼。若是'E'或'e',則Ruby認(rèn)定字符串或訪問文件中的漢字編碼為EUC。同樣,若是'S'或's'的話則認(rèn)定為SJIS。若是'U'或'u'則當(dāng)作UTF-8處理。'N'表示不對漢字進行處理。該選項的默認(rèn)值就是N(NONE)。
將來有可能會改變文字編碼處理方式,屆時該選項的內(nèi)容也會有所變化。
-d
--debug
以調(diào)試模式執(zhí)行腳本。將$DEBUG設(shè)置成true。
-e script
在命令行中指定腳本。添加-e選項后,就不會從參數(shù)中抽取腳本文件名了。
若多次使用-e選項時,系統(tǒng)會按照以下方式處理。
下列各表達(dá)式的意義相同。 ruby -e "5.times do |i|" -e "puts i" -e "end" ruby -e "5.times do |i| puts i end" ruby -e "5.times do |i|; puts i; end"
-Fregexp
將regexp指定給輸入域分隔符(field separator)。
-h
--help
顯示命令行選項的簡介。
-i[extension]
對參數(shù)中指定的文件內(nèi)容進行替換(in-place edit)。原始文件將被加上擴展名并保存下來。若沒有擴展名的話,將不會進行備份,而且只有替換后的文件會被保留下來。
例:
% echo matz > /tmp/junk % cat /tmp/junk matz % ruby -p -i.bak -e '$_.upcase!' /tmp/junk % cat /tmp/junk MATZ % cat /tmp/junk.bak matz
-I directory
指定(追加)加載文件的路徑。指定的目錄將被追加到Ruby的數(shù)組變量($:)中。
-l
進行行尾自動處理。首先,將$\改為$/的值,在print輸出時添加換行。若使用了-n標(biāo)志或-p標(biāo)志的話,將對gets讀入的各行末尾進行String#chop!處理。
-n
若使用了該標(biāo)志,則整個程序會像sed -n或awk一樣,被
while gets ... end
括起來運行。
-p
與-n標(biāo)志相仿,在各循環(huán)后輸出變量$_的值。
例:
% echo matz | ruby -p -e '$_.tr! "a-z", "A-Z"' MATZ
-r feature
執(zhí)行腳本前,先對feature指定的庫執(zhí)行require操作。與'-n'選項、'-p'選項一起使用時特別奏效。
-s
對跟在腳本名后并且以'-'開頭的參數(shù)進行解釋,并將其值賦值給同名的全局變量。遇到以'--'開頭的參數(shù)就停止解釋,并將該參數(shù)從ARGV中刪除。
例:
#! /usr/local/bin/ruby -s # prints "true" if invoked with `-xyz' switch. print "true\n" if $xyz
-S
該選項表明,當(dāng)腳本名不是以'/'開頭的時候,要使用環(huán)境變量PATH的值搜索腳本。若您的機器不支持#!的話,可以使用下列方法模擬#!的運行:
#!/bin/sh exec ruby -S -x $0 "$@" #! ruby
因為第1行的關(guān)系,系統(tǒng)把腳本交給/bin/sh。/bin/sh執(zhí)行第2行后啟動Ruby解釋器。在-x選項的作用下,Ruby解釋器把從'#!'到包含'ruby'的行的內(nèi)容全部讀入。
根據(jù)系統(tǒng)的不同,$0未必包含完整路徑,因此有必要使用'-S'選項來告訴Ruby在必要時搜索腳本。
-T[level]
執(zhí)行不純度測試。若給level指定了一個值之后,安全等級也會使用這個值。省略level時,其值為1。對于CGI程序來說,將其指定為-T1比較合適。$SAFE的等級也將被設(shè)定。
-v
--verbose
冗長模式。啟動時顯示版本信息,然后將內(nèi)部變量$VERBOSE設(shè)為true。當(dāng)此變量為true時,眾多的方法在運行時會顯示冗長的信息。若只設(shè)定'-v'選項,而沒有其他參數(shù)時,啟動后會先顯示版本信息,然后就結(jié)束運行(不會等待來自標(biāo)準(zhǔn)輸入的腳本)。
--version
顯示Ruby的版本信息。
-w
不顯示版本信息的冗長模式。
-W[level]
ruby 1.8 特性
可以指定3種級別的冗長模式,如下所示。
內(nèi)部變量$VERBOSE被分別設(shè)置為nil,false,true。
-x[directory]
從message中取出腳本并執(zhí)行。讀入腳本的范圍是從'#!'開始,直到包含'ruby'的行為止。用EOF(文件結(jié)束),^D(controlD),^Z(controlZ)或保留字_END_來指定腳本結(jié)束。
若指定了目錄名的話,則在執(zhí)行腳本前移動到該指定目錄。
-y
--yydebug
編譯器調(diào)試模式。編譯腳本時顯示語法分析的過程。該顯示過程會很漫長,可能只對那些想調(diào)試編譯器的人有用。
命令行指定的腳本是以'#!'開頭的文件,當(dāng)該行中不包含'ruby'時,將替代OS把'#!'后面的字符串看成命令行,然后啟動解釋器。
例如,用Ruby運行下面的shell腳本時將啟動sh。
#!/bin/sh -vx echo "$@"
若此行中包含'ruby'的話,則'ruby'左側(cè)的部分將被忽略,右側(cè)以'-'開頭的部分被視為選項。
這里指定的選項將被追加到以命令行方式指定的選項之中。這主要是為了嵌入那些本該在腳本中指定的選項。例如,下面腳本的作用等價于使用命令行方式指定-Ke選項。
#! ruby -Ke