LoginSignup
2
2

More than 5 years have passed since last update.

Ruby技術者認定試験 Silver (2.1): 練習問題(コマンドラインオプション編)

Last updated at Posted at 2017-12-16

はじめに

筆者
  趣味レベルでRubyを使っていたアマチュアプログラマ
この記事の趣旨
  筆者がRuby技術者認定試験Silver2.1の勉強をする過程で
  理解が不十分だった内容をクイズ形式で紹介します。
    解答+簡易解説は”▶解答”をクリックで開きます。
参考文献
  Rubyリファレンスマニュアル(2.1.0)

問題

・次のうち、存在しないコマンドラインオプションはどれ?(一つ選択)
 a. -a
 b. -b
 c. -c
 d. -d
 e. -e

解答
 -b:存在しないオプション。
  -a:オートスプリットモードをONにする(-n, -p と同時に指定)
  -c:実行せずに文法をチェック。問題なければ"Syntax OK"と出力。
  -d:デバッグモードでスクリプトを実行($DEBUGをtrueにする)
     --debug でも同じ
  -e:コマンドラインからスクリプトを指定
     -e 指定時は引数からスクリプトファイル名を取らない



・次のうち、後ろにディレクトリ名をとれないのはどれ?(一つ選択)
 a. -C
 b. -I  (大文字の i )
 c. -S
 d. -x

解答
-S:環境変数PATHの値を使ってスクリプトを探すように指定。
  -C directory :スクリプト実行前に指定したディレクトリに移動
  -I directory :ファイルをロードするパスを指定(追加)
  -x [directory]:メッセージ中のスクリプトを取り出して実行。
         ディレクトリ名を指定すると
         スクリプト実行前に指定したディレクトリに移動



・次のうち、存在しないコマンドラインオプションはどれ?(一つ選択)
 a. --copyright
 b. --disable
 c. --encoding
 d. --help
 e. --verbose
 f. --version

解答
--disable:--enable, --disable は 2.2 から
  --copyright:著作権を表示
  --encoding :デフォルトの外部エンコーディングと内部エンコーディングを
         ex[:in] で指定(-E ex[:in]でも可)
  --help  :コマンドラインオプションの概要を表示(-h でも可)
  --verbose :冗長モード。組み込み変数 $VERBOSE をtrueにセット
  --version :Rubyのバージョンを表示
    -v について
      -v のみが指定されたときはバージョンを表示して実行を終了。
      -v 以外にも引数がある場合はバージョンを表示し、冗長モードになる。
    -w はバージョンを表示せずに冗長モードになる。



・次のうち、グローバル変数に関係しないものはどれ?(一つ選択)
 a. -0数字
 b. -Fregexp
 c. -l
 d. -n
 e. -p

解答
  -n   :プログラム全体が while gets; ...;end で囲まれているように動作する。
        グローバル変数には関係しない
  -0数字 :入力レコードセパレータ(\$/)を8進数で指定
  -Fregexp:入力フィールドセパレータ(\$;)に regexp をセット
  -l   :行末の自動処理を行う。
        \$\ を \$/ と同じ値に設定、printでの出力時に改行を付加する。
        -n フラグまたは-pフラグが指定されていると
        gets で読み込まれた各行の最後に対して String#chop!を行う。
  -p   :-nフラグとほぼ同じだが、各ループの最後に変数 $_ の値を出力する。



・次のうち、オプション単体でしか動作しないものはどれ?(一つ選択)
 a. -i
 b. -r
 c. -s
 d. -T
 e. -W
 f. -y

解答
-y:コンパイラデバッグモード( --yydebug でも可)
  -i[extension]:引数で指定されたファイルの内容を置き換える(in-place edit)
          extensionを指定すると元のファイルを拡張子をつけた形で保存
  -r feature :feature で指定されるライブラリを Kernel.#requireする。
  -s     :スクリプト名の後ろにおいた `-'で始まる引数を解釈し、
          同名のグローバル変数に値を設定
  -T[level]  :不純度チェックを行う。levelは安全度レベルの指定
  -W[level]  :冗長モードを三段階のレベルで指定

あとがき

しんどかった(›´ω`‹ ) ゲッソリ
コマンドラインオプションはほとんど使ってこなかったため、
「どれも理解が不十分だから、いっそのこと問題で全部登場させてみるか」
と思ったのが運の尽きでした。
しかも苦労した割に完成度は低いという…問題を作るのって難しいんだなぁ。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2