2

コマンドラインを使用すると、CPまたは上矢印を使用して履歴を呼び出すことができます。ただし、ヒアドキュメントへの入力を呼び戻そうとすると、これは機能しません。

# cat <<!
> a
> b
> c
> !
a
b
c
# cat <<! # C-p to get here, expected to see ! as last input. C-c to break out
# history 2
2053  cat <<!
2054  history 2

私はrxvtを使用しています。

PSこの機能は、shell内で使用する場合に正しく機能しますemacs

4

2 に答える 2

2
shopt -s cmdhist

cat <<!
a
b
c
!

history | tail ...
8580  cat <<!
a
b
c
!

cmdhistシェル オプションを有効にすると、シェルは複数行のコマンドの各行を同じ履歴エントリに保存しようとし、必要に応じてセミコロンを追加して構文の正確性を維持します。

lithistシェル オプションを使用すると、シェルはセミコロンの代わりに改行を埋め込んでコマンドを保存します。

マンバッシュから

于 2011-12-04T14:15:49.217 に答える
2

私も同じ問題を抱えてる。バッシュ 3.2.49(1) リリース

psql <<EOF
SELECT * FROM blah;
EOF

私の履歴は最初の行のみを保持します。私はcmdhist(およびlithist)を設定しましたが、他の複数行のコマンドでは正常に機能しますが、ヒアドキュメントでは機能しません。悲劇的。

回避策は次のとおりです。

echo "
SELECT *
FROM blah
" | psql
于 2013-08-08T12:59:38.217 に答える