ZSH + MacOSでは、1024文字を超えて読み取ることができません。

ZSH + MacOSでは、1024文字を超えて読み取ることができません。

MacOSのZSHで変数への長い入力を読み取ろうとしています。

    echo "URL: "
    read URL

入力は常に1024文字に切り捨てられます。別の文字を入力しようとすると、何も起こりません。

  • 入力は、S3署名アップロードURLのPostManからコピー/貼り付けられます。

  • (貼り付け後)末尾から一部の文字を削除しようとすると、削除する文字数だけを手動で入力できます。

  • そのオプションを試してみましたが、-n何も役に立ちませんでした(何も変数に読み込まれませんでした)。

長い入力を読む方法は? 〜1,500文字

答え1

readそれ自体は端末からバイトを読み取るだけで、端末がそのバイトを読み取る方法を制御することはできません。そして、ターミナルは私が覚えている限り簡単に(またはまったく?)変更できない限られた回線長を持っています。端末の行エディタも非常に初歩的で、バックスペースキーのみをサポートし、他の編集コマンドはサポートしません。

使用vared逆に。これはやや似ていreadますが(オプションは異なります)、端末で読み取るように特別に設計されており、zshの行エディタを使用しています。これはよりユーザーフレンドリーで、行の長さに制限はありません。

URL=
vared -p "URL: " URL

vared必ず標準入力ではなく端末から読み取ってください。ファイルまたはパイプからリダイレクトされた入力の読み取りをサポートするには、次のコマンドを使用して標準入力が端末であることを確認します。-t 状況..

URL=
if [[ -t 0 ]]; then
  vared -p "URL: " URL
else
  read -r URL
fi

関連情報