Stdin、Stdout、Process Args
対話型 CLI プログラムを構築します
「Stdin、Stdout、Process Args」はCoddyKit上の無料Dart Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDart Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Dart Academyコースには全4レッスンが含まれています。
3つの標準ストリーム
コマンドラインプログラムは、3つのチャネルを通じて通信します。入力にはstdin、通常の出力にはstdout、エラーにはstderrを使います。
stdoutとprintの違い
printは改行を追加してstdoutに出力します。より細かく制御したい場合はstdout.writeで直接書き込み、余分な改行を出さないようにできます。
stdout.write('Loading');エラーはstderrへ送る
警告はstdoutではなくstderrに送ります。そうすれば、ユーザーがプログラムの出力を別の場所へパイプするときも、本来の出力をきれいに保てます。
stderr.writeln('Could not find file');入力を1行読み取る
ユーザーに質問を表示し、stdin.readLineSyncで回答を受け取ります。Enterキーが押されるまで処理は一時停止します。
final name = stdin.readLineSync();入力はnullになることがある
readLineSyncはnullableなStringを返します。入力がないままストリームが閉じるとnullになるため、その場合を処理してください。
final answer = stdin.readLineSync() ?? '';小さなプロンプトループ
書き込みと読み取りを組み合わせると、プロンプトを作れます。質問を表示し、回答を読み取り、それに応じて処理するという流れを数行で記述できます。
stdout.write('Name? '); final n = stdin.readLineSync();コマンドライン引数
mainはListのString argsを受け取れます。プログラム名の後にユーザーが入力した内容は、入力順にそこへ渡されます。
void main(List<String> args) { print(args); }引数を1つ読み取る
引数には、リストと同じようにインデックスでアクセスできます。引数がない場合にクラッシュしないよう、最初にargs.isEmptyを必ず確認してください。
if (args.isNotEmpty) print(args[0]);argsでフラグを解析する
本格的なCLIでは、argsパッケージを使うと、手作業でインデックスを扱わずにフラグやオプションを整理された解析結果へ変換できます。
import 'package:args/args.dart';終了コードを設定する
exitを使って、処理結果をシェルに伝えます。0は成功を表し、それ以外の値は、呼び出し元のスクリプトにエラーを通知します。
exit(1);エコーモードをオフにする
パスワードでは、行を読み取る前にstdin.echoModeをfalseに設定し、入力した文字が表示されないようにします。
stdin.echoMode = false;クイックチェック
パイプした出力をきれいに保つには、CLIツールはエラーメッセージをどこへ送るべきでしょうか。
まとめ
これで、stdoutとstderrへの書き込み、stdinからの入力の読み取り、コマンドライン引数の受け取り、終了コードの設定ができるようになりました。CLIが対話的になりました。
よくある質問
「Stdin、Stdout、Process Args」レッスンは無料ですか?
はい。「Stdin、Stdout、Process Args」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Dart Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Dart Academyコースには全4レッスンが含まれています。
「Stdin、Stdout、Process Args」で何を学びますか?
対話型 CLI プログラムを構築します ブラウザで直接実行するハンズオンコードでDart Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Dart Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDart Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「Stdin、Stdout、Process Args」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDart Academyレッスンでコードを書いて実行できますか?
はい。すべてのDart Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ファイルの読み書き
- ディレクトリ、パス、FileSystemEntity
- 大きなファイルのストリーミング
- Stdin、Stdout、Process Args