-eを読む代わりにPOSIXシェルはありますか? [コピー]

-eを読む代わりにPOSIXシェルはありますか? [コピー]

汎用(POSIX)シェルから効果を取得する方法read -e(行編集を有効にしreadlineて使用可能にする)?bash私はこのコマンドのためにPOSIXの互換性を失いたくありません。

ベストアンサー1

readlineGNUプロジェクトです(で開発されましたbash)。 BSD libeditなどの他の代替手段があり、すべてのPOSIXシェルには、シェル固有またはvi少なくとも1つの編集モード(POSIXで指定された唯一の編集モード、ほとんどのモードもサポートしていますemacs)を実装するライブラリベースの独自の行エディタがあります。 POSIX は RMS オブジェクトを指定しません)).

ただし、POSIXはシェルコマンドラインの行編集モードのみを指定しますread

ksh93ただし、これをサポートしますread(ただし、stdinとstderrが端末デバイスにある場合)。ここでは、次のことができます。

set -o emacs
IFS= read -r 'line?prompt: '

これに対応するのは(変数エディタ)組み込みですzshvared

line=; vared -p 'prompt: ' line

これは、記録処理とキーバインディングと仕上げの完全なカスタマイズ機能を備えた最も豊富な機能を提供します。

read -e具体的に言ってくださいbash

IFS= read -rep 'prompt: ' variable

POSIXに該当するものはありません。 POSIXlyでは(POSIXで指定されているように)一時ファイルの編集を開始し、viそのファイルの内容を変数として読み取ることができます。

zshまたは //bashまたは libreadline または (support で構築されたと仮定 ) 周辺の他のラッパーの 1 つの可用性を見つけて使用できる場合、そのラッパーの 1 つを使用して行を読んだり使用できない場合に戻すことがksh93できます。rlwrapsocatreadlinereadvi

またはそれを使用してくださいLEこの同様のQ&Aでラインエディタの機能を確認してください。同様の制限付き行エディタを実装しますemacs

おすすめ記事