ruby的命令行選項

發表于:2007-07-04來源:作者:點擊數: 標簽:
請使用如下命令行啟動Ruby解釋器. ruby [ option ...] [ -- ] [ programfile ] [ argument ...] 這里的"option"指下文將要提到的命令行選項中的一個。"--"則顯式地表明選項字符串到此結束。"programfile"是裝載Ruby腳本的文件。若省略不寫或者寫成"-"時,Ruby

請使用如下命令行啟動Ruby解釋器.

ruby [ option ...] [ -- ] [ programfile ] [ argument ...]

這里的"option"指下文將要提到的命令行選項中的一個。"--"則顯式地表明選項字符串到此結束。"programfile"是裝載Ruby腳本的文件。若省略不寫或者寫成"-"時,Ruby會把標準輸入當做Ruby腳本進行處理。

programfile若以“#!”開始,則進行特殊的處理。詳細情況請參考下文的關于解釋器行。

argument中的字符串將變成內部常數ARGV的初始值。在有的環境中(Win32),標準shell不會展開通配符,這時Ruby解釋器將自行展開通配符然后賦值給ARGV。此時,可使用的通配符有“*”、“?”、“[]”和“**/”(與Dir.glob不同,這里不能使用“{..}”)。在Win32環境中,若不想展開通配符的話,請使用單引號(')將參數括起來。

命令行選項

Ruby解釋器可接受下列命令行選項?;旧吓cPerl的類似。

-0數字

以8進制數指定輸入記錄分隔符('$/')。

若不指定數字的話,分隔符是空字符(等同于$/="\0")。數字后面可以有其他的開關(switch)。

-00代表段落模式(等同于$/=""),-0777(因為這個代碼不代表任何文字)表示將文件的全部內容一次性讀入(相當于$/=nil)。

-a

與'-n'或'-p'一起使用時,可以打開自動拆分模式(auto split mode)。自動拆分模式將在各個循環前執行以下動作。

$F = $_.split

若沒有同時指定'-n'或'-p'選項的話將不起作用。

-C directory

執行腳本之前,先移動到指定目錄。

-c

只對腳本進行編譯,而并不執行。編譯后若沒發現語法錯誤,則顯示“Syntax OK”。

--copyright

顯示版權信息。

-Kc

指定Ruby要處理的漢字編碼。若是'E'或'e',則Ruby認定字符串或訪問文件中的漢字編碼為EUC。同樣,若是'S'或's'的話則認定為SJIS。若是'U'或'u'則當作UTF-8處理。'N'表示不對漢字進行處理。該選項的默認值就是N(NONE)。

將來有可能會改變文字編碼處理方式,屆時該選項的內容也會有所變化。

-d --debug

以調試模式執行腳本。將$DEBUG設置成true。

-e script

在命令行中指定腳本。添加-e選項后,就不會從參數中抽取腳本文件名了。

若多次使用-e選項時,系統會按照以下方式處理。

下列各表達式的意義相同。 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]

對參數中指定的文件內容進行替換(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的數組變量($:)中。

-l

進行行尾自動處理。首先,將$\改為$/的值,在print輸出時添加換行。若使用了-n標志或-p標志的話,將對gets讀入的各行末尾進行String#chop!處理。

-n

若使用了該標志,則整個程序會像sed -n或awk一樣,被

while gets ... end

括起來運行。

-p

與-n標志相仿,在各循環后輸出變量$_的值。

例:

% echo matz | ruby -p -e '$_.tr! "a-z", "A-Z"' MATZ -r feature

執行腳本前,先對feature指定的庫執行require操作。與'-n'選項、'-p'選項一起使用時特別奏效。

-s

對跟在腳本名后并且以'-'開頭的參數進行解釋,并將其值賦值給同名的全局變量。遇到以'--'開頭的參數就停止解釋,并將該參數從ARGV中刪除。

例:

#! /usr/local/bin/ruby -s # prints "true" if invoked with `-xyz' switch. print "true\n" if $xyz -S

該選項表明,當腳本名不是以'/'開頭的時候,要使用環境變量PATH的值搜索腳本。若您的機器不支持#!的話,可以使用下列方法模擬#!的運行:

#!/bin/sh exec ruby -S -x $0 "$@" #! ruby

因為第1行的關系,系統把腳本交給/bin/sh。/bin/sh執行第2行后啟動Ruby解釋器。在-x選項的作用下,Ruby解釋器把從'#!'到包含'ruby'的行的內容全部讀入。

根據系統的不同,$0未必包含完整路徑,因此有必要使用'-S'選項來告訴Ruby在必要時搜索腳本。

-T[level]

執行不純度測試。若給level指定了一個值之后,安全等級也會使用這個值。省略level時,其值為1。對于CGI程序來說,將其指定為-T1比較合適。$SAFE的等級也將被設定。

-v --verbose

冗長模式。啟動時顯示版本信息,然后將內部變量$VERBOSE設為true。當此變量為true時,眾多的方法在運行時會顯示冗長的信息。若只設定'-v'選項,而沒有其他參數時,啟動后會先顯示版本信息,然后就結束運行(不會等待來自標準輸入的腳本)。

--version

顯示Ruby的版本信息。

-w

不顯示版本信息的冗長模式。

-W[level]

ruby 1.8 特性

可以指定3種級別的冗長模式,如下所示。

-W0: 不顯示警告 -W1: 只顯示重要警告(默認) -W2 or -W: 顯示所有警告

內部變量$VERBOSE被分別設置為nil,false,true。

-x[directory]

從message中取出腳本并執行。讀入腳本的范圍是從'#!'開始,直到包含'ruby'的行為止。用EOF(文件結束),^D(controlD),^Z(controlZ)或保留字_END_來指定腳本結束。

若指定了目錄名的話,則在執行腳本前移動到該指定目錄。

-y --yydebug

編譯器調試模式。編譯腳本時顯示語法分析的過程。該顯示過程會很漫長,可能只對那些想調試編譯器的人有用。

關于解釋器行

命令行指定的腳本是以'#!'開頭的文件,當該行中不包含'ruby'時,將替代OS把'#!'后面的字符串看成命令行,然后啟動解釋器。

例如,用Ruby運行下面的shell腳本時將啟動sh。

#!/bin/sh -vx echo "$@"

若此行中包含'ruby'的話,則'ruby'左側的部分將被忽略,右側以'-'開頭的部分被視為選項。

這里指定的選項將被追加到以命令行方式指定的選項之中。這主要是為了嵌入那些本該在腳本中指定的選項。例如,下面腳本的作用等價于使用命令行方式指定-Ke選項。

#! ruby -Ke

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97