1

そこで、Ruby で Build Awesome Command-Line Applications を勉強しています。81 ページでは、STDIN を使用して複数のタスクをプロジェクトに入力することになっています。

 File.open(global_options[:filename], 'a+') do |todo_file|
  if task_names.empty?
    puts "Reading new tasks from stdin..."
    task_names = STDIN.readlines.map {|a| a.chomp}
  end
  tasks = 0
  task_names.each do |task|
    todo_file.puts [task, Time.now].join(', ')
    tasks+=1
  end
  if tasks == 0
    raise "You must provide tasks on the command-line or standard input"
  end
end

プロジェクトにタスクを入力する通常の方法は次のようなもの$todo new "Rake leavesですが、上記のコードを使用すると、以下の例の内容を実行できます。

それは機能します。しかし、STDIN にリスニングを停止するように指示するにはどうすればよいでしょうか。それを使用する方法の例はこれです...

$ todo new
Rake leaves
Take out trash
Clean garage
Put away dishes
^D

は何^Dを表しているのですか?

4

2 に答える 2

4

これは、ファイルの終わりの文字です。CtrlUnix システムでは+Dで、Windows ではCtrl+で文字どおりに入力できますZCtrl修飾子を表示する伝統的な方法は、^接頭辞を付けること^Dです。

これにより、標準入力が完全に閉じられることに注意してください。これらの行を入力した後にさらにデータを読みたい場合は、入力自体に別の区切り文字 (空の行など) がないかどうかを確認する必要があります。

于 2013-02-14T22:25:30.943 に答える
3

Unix ライクなシステムでは Ctrl-d を、Windows では Ctrl-z を押すと、STDIN を閉じることができます。

^6 は何を表していますか?

あなたはそれが言う^6と確信してい^dますか?もしそうなら、それはおそらくタイプミスです。

于 2013-02-14T22:25:22.597 に答える