前回の記事では、Rubyの特殊変数について書きました。
その中で、コマンドラインオプションで変更される変数も紹介しました。 今回は、コマンドラインオプション自体をまとめてみます。
このページの内容は、Ruby 3.3.0での情報をもとにしています。
挙動変更
オプション | 説明 | 補足 |
---|---|---|
-0数字 | 入力コードセパレータ($/)を8進数で指定する | -00 : パラグラフモード($/=""と同じ)-0777 : ファイルの内容を一度ですべて読み込む($/=nil) |
-a | 自動スプリットモードをONにする。ONになると、各ループの先頭で以下が実行される$F = $_.split |
-n、-pが指定されていない場合は機能しない |
--backtrace-limit=num | バックトレースの最大行数を指定する | |
-C directory | スクリプト実行前に指定されたディレクトリに移動する | |
-E ex[:in] --encoding ex[:in] |
デフォルトの外部エンコーディングと内部エンコーディングを : 区切りで指定する |
|
--external-encoding encoding | デフォルトの外部エンコーディングを指定する | |
--internal-encoding encoding | デフォルトの内部エンコーディングを指定 | |
--enable feature | featureを有効にする | gems : rubygems (無効にするのはデバッグ専用、default: enabled)error_highlight : error_highlight (default: enabled)did_you_mean : did_you_mean (default: enabled)rubyopt : RUBYOPT 環境変数 (default: enabled)frozen-string-literal : 全ての文字列リテラルをfreeze (default: disabled)jit : JIT (default: disabled)mjit : MJIT (default: disabled)yjit : YJIT (default: disabled) |
--disable | feature を無効化にする | |
-e script | スクリプトを指定する | このオプションを指定すると引数ですプリプとファイル名を取らない。 複数指定した場合は各スクリプトの間に改行を挟んで解釈する |
-Fregexp | 入力フィールドセパレータ($;)に regexp を設定する | |
-i[extension] | 引数で指定されたファイルの内容を置き換える。拡張子を省略するとバックアップされずに変更されたファイルだけが残る | Win32では拡張子は省略できない |
-I directory | ファイルをロードするパスを追加する | $: に追加される |
-l | 行末の自動処理を行う | $\ を $/ と同じ値に設定し、printでの出力時に改行を付加するようにする。また、-n または -p が指定されていると gets で読み込まれた各行の最後に対して String#chomp!を実行する |
-n | スクリプトが以下で囲まれているように動作する<br>while gets<br> ...<br>end<br> |
|
-p | -n の挙動に追加で各ループの最後に変数 $_ の値を出力する | |
-r feature | スクリプト実行前にfeature で指定されたライブラリを Kernel.#require する | |
-s | スクリプト名に続く、 - で始まる引数を解釈して、同名のグローバル変数に値を設定する |
-- の引数以降は解釈を行なわない。該当する引数は Object::ARGV から取り除かれる |
-S | スクリプト名が / で始まっていない場合、環境変数 PATHの値を使ってスクリプトを探す |
|
-x[directory] | メッセージ中のスクリプトを取り出して実行する。ディレクトリ名を指定すると、スクリプト実行前に指定されたディレクトリに移動する | スクリプトを読み込む際に、 #! で始まり ruby の文字列を含む行を読み飛ばす。 |
デバッグ、冗長モード
オプション | 説明 | 補足 |
---|---|---|
-d --debug |
デバッグモードで実行する | $DEBUG = true にする |
-v | これ以外に引数があるとき、冗長モードにする。これ以外の引数がないときはバージョンを表示した後に実行を終了する | $VERBOSE = true にする |
--verbose | 冗長モードにする | $VERBOSE = true にする |
-w | バージョンの表示を行わずに冗長モードになる | |
-W[level] -W:category |
冗長モードを三段階のレベルで指定する | Warning.[] に設定される【level】 -W0 : 警告を出力しない-W1 : 重要な警告のみ出力(デフォルト)-W2 or -W : すべての警告を出力する【category】 deprecated と experimental は別々に設定できる -W:deprecated : 非推奨な機能を使用した際に警告を出力する-W:no-deprecated : 非推奨な機能を使用した際に警告を出力しない(デフォルト)-W:experimental : 実験的な機能を使用した際に警告を出力する(デフォルト)-W:no-experimental : 実験的な機能を使用した際に警告を出力しない |
コンパイル実行
オプション | 説明 | 補足 |
---|---|---|
-c | コンパイルのみ実行 | 文法エラーがなければ、"Syntax OK"が出力される |
-y --yydebug |
コンパイラデバッグモード | スクリプトを内部表現にコンパイルする時の構文解析の過程を表示する |
その他
オプション | 説明 | 補足 |
---|---|---|
--copyright | 著作権表示をする | |
--version | Rubyのバージョンを表示する | |
-h | コマンドラインオプションの概要を表示する | |
--help | -h より詳しいコマンドラインオプションの概要を表示する |
JITオプション(実験的)
オプション | 説明 | 補足 |
---|---|---|
--jit | JITを有効にする | YJITが有効な環境ならYJIT、それ以外ではMJITを有効にする |
YJITオプション
オプション | 説明 | 補足 |
---|---|---|
--yjit | デフォルトの設定でYJITを有効にする | |
--yjit-[option] | 指定した設定でYJITを有効にする | |
--yjit-exec-mem-size=num | MiB単位で実行可能メモリブロックのサイズを指定する(デフォルト: 256) | |
--yjit-call-threshold=num | JITが起動する呼び出し回数を指定する(デフォルト: 10) | テスト用 |
--yjit-max-versions=num | ベーシックブロックごとのバージョンの最大数を指定する(デフォルト: 4) | |
--yjit-greedy-versioning | 貪欲なバージョニングモードを指定にする(デフォルト: disabled) |
MJITオプション
オプション | 説明 | 補足 |
---|---|---|
--mjit | デフォルトの設定でMJITを有効にする | |
--mjit-[option] | 指定した設定でMJITを有効にする | |
--mjit-warnings | JITの警告の出力を有効にする | |
--mjit-debug | JITのデバッグを有効にする。指定されていれば、cflags を追加する | 非常に遅くなる |
--mjit-wait | 毎回JITコンパイルが終わるまで待 | テスト用 |
--mjit-save-temps | 一時ファイルを $TMP か /tmp の中に残す | テスト用 |
--mjit-verbose=num | ログレベルがnum以下のログが標準エラー出力に出力される(デフォルト: 0) | |
--mjit-max-cache=num | キャッシュに残すJITされたメソッドの最大個数を指定する(デフォルト: 10000) | |
--mjit-min-calls=num | JITが起動する呼び出し回数を指定する(デフォルト: 10000) | テスト用 |
まとめ
あまり使わないオプションも多いですが、シェルのような使い方をするときには便利なコマンドが多くあることを知ることができたので、必要に応じて活用してみたいなと思いました。