Linux の Read コマンドの使い方に関する包括的なガイド
主な注意事項
- read コマンドは、ユーザー入力をキャプチャするか、ファイルから読み取ります。
- 機能をカスタマイズするためのオプションが多数あります。
- -s オプションを使用すると、パスワード入力のキャプチャを安全に行うことができます。
Linux の Read コマンドの威力を最大限に引き出す
Linux read コマンドは、ターミナルプロンプトやファイル経由のユーザー入力をキャプチャするために不可欠です。このガイドでは、その構文、オプション、そしてユーザーインタラクションを効率化するための実用的な例を詳細に解説します。
読み取りコマンドのオプションの探索
Bashのコマンド read には、入力の読み取り方法を変更するためのさまざまなオプションが用意されています。以下にそれらのオプションを紹介します。
| オプション | 説明 |
|---|---|
| -a <配列> | 入力を配列の要素として保存します。 |
| -s | 入力、特にパスワードをマスクして、サイレントに実行します。 |
| -そして | readline をサポートし、入力編集を可能にします。 |
| -i <プレフィックス> | 指定された入力値をプロンプトに事前に入力します。 |
| -p <プロンプト> | 入力を読み取る前にカスタム プロンプト メッセージを表示します。 |
| -u <ファイル記述子> | 指定されたファイル記述子からの読み取りを許可します。 |
| -d <区切り文字> | 代替入力行区切り文字を指定します。 |
| -t <時間> | 失敗するまでのユーザー入力のタイムアウトを設定します。 |
| -r | バックスラッシュをエスケープ文字として扱うことを防ぎます。 |
| -n <数値> | 読み取る文字数を制限します。 |
読み取りコマンドで入力をキャプチャする方法
ステップ1:基本入力に読み取りコマンドを使用する
基本的な入力を読み取るには、 read ターミナルに入力するだけです。コマンドはユーザー入力を待機し、それをデフォルト変数に保存します $REPLY。
ステップ2:入力を特定の変数に保存する
入力をカスタム変数に直接保存するには、 read コマンドの後に変数名を指定します。例: read var_name。その後、 を使用して値を表示できます echo。
複数の値の取得
この read コマンドは複数値の入力を直接サポートしていませんが、値をスペースで区切ることで複数値の入力が可能です。各単語は異なる変数に格納されます。
ファイルから行を読み込む
ループを使用してファイルから行を抽出するには、コマンドを使用します read 。使用例 while read line; do echo $line; done < samplefile.txt:
ループで入力を収集する
継続的にデータを収集するには、+ while read を押して EOF 信号を受信するまで繰り返しプロンプトを実行します。 Ctrl D
カスタムプロンプトの作成
-p オプションを使用してプロンプトを作成し、ユーザー インタラクションを強化します read -p "Enter your name: "。
ユーザー入力の長さを制御する
-n :経由で受信した文字を制限する read -n 4 と、最初の 4 文字だけがキャプチャされます。
出力分離にIFSを使用する
内部フィールド区切り文字 (IFS) を変更して入力の分割方法を定義し、たとえば IFS をコロンに設定して入力の分離をカスタマイズします。
入力タイムアウトの設定
を使用して入力の時間枠を設定します -t。例: read -t 10 10 秒後に実行を継続します。
ユーザー入力を隠す
-s セキュリティのフラグを使用して、パスワードなどの機密入力を非表示にします read -s password。
まとめ
この read コマンドは、Linuxにおいてターミナル経由でユーザーとやり取りするための多用途ツールです。基本的な入力から高度なファイル読み取り、プロンプトのカスタマイズまで、このコマンドを習得することでスクリプト作成能力が大幅に向上します。
結論
このコマンドを理解し、活用することで read 、Linuxユーザーは入力を効率的に収集する能力を大幅に向上させることができます。ターミナルでこれらの例を練習して、この必須コマンドを使いこなせるようになりましょう。
FAQ(よくある質問)
Linux の read コマンドの目的は何ですか?
read コマンドは、ターミナルからユーザー入力をキャプチャしたり、ファイルから読み取ったりするため、対話型スクリプトにとって非常に重要です。
ユーザー入力を変数に保存せずに読み取ることはできますか?
はい、変数が指定されていない場合、入力はデフォルトの $REPLY 変数に入ります。