端末に履歴を印刷するには?

端末に履歴を印刷するには?

編集する:@JdeBPのコメントに基づいて、対話型端末のコマンド履歴と通話履歴機能が異なる2つであることを理解しています。しかし、GNU readline履歴呼び出し関数が画面にどのように印刷されるかはまだ疑問に思っています。

私はbashコマンドが以前のコマンドをターミナルウィンドウに印刷するhistoryために使用されていないことに気づきましたstdout。別の問題(協会)今、私は正確にどのように動作するのだろうかと思います。

コマンドを入力してEnterキーを押すと、上矢印を使用して前のコマンドに移動できます。ただし、前のコマンドは経由で送信されませんでしたstdout。これは、すべてをstdout画面に印刷する前に出力を変更するコプロセスにリダイレクトすることで確認できます。以下のスクリプトがまさにそのことをします。入力した内容をエコーするだけでなく、事前にstdoutコマンドにリダイレクトすることもあります。sed

exec 4>&1
coproc out (sed 's/^/PREFIX /' >&4)
exec 1>&${out[1]}

while read -e x; do
   echo $x
done

このスクリプトが実行されると、入力した内容はすべて「PREFIX」プレフィックスで印刷されます。ただし、上矢印を使用して前のコマンドにアクセスすると、「PREFIX」は先頭には付けられません。

なぜこれですか? GNU履歴呼び出しは、どのように履歴ファイルのテキストを端末画面に配置しますか?使用しない場合はstdout使用しますかstderr、それとも別のものを使用しますか?同じ方法でリダイレクトしようとしましたが、stderrテキストが端末画面に表示されず、上下の矢印が何も印刷されませんでした。だから確認できません。私はこれがこの歴史的機能を表すことができると思います。はい使ったけどstderr確認したかったです。

ベストアンサー1

おすすめ記事