0

このコードを開始するのに問題があります。どこから始めればよいか本当にわかりません。私は何をすべきかを理解しようとしています。私がしなければならないことのほとんどは、ファイルを実行すると、「履歴」を入力するだけで、使用したコマンドのすべての履歴が表示されるはずです。それを可能にするには、このファイルをどのようにコーディングすればよいでしょうか? ヒントや手がかりをいただければ幸いです。

4

1 に答える 1

3

基本は比較的簡単です。履歴に適したディスク上のフォーマットを設計する必要がありますが、おそらくファイルが無期限に大きくなりたくないことを念頭に置いてください (ただし、最初のバージョンでは問題ないかもしれません)。また、ファイルを操作するための一連の関数 (開く、閉じる、書き込む、検索する) が必要になります。

コマンド (完全なコマンド — パイプライン、ループなど) を読み取るたびforに、履歴メカニズムにも書き込みます。

履歴メカニズムでは、以前のコマンドを取得したり、一覧表示したり、内容や番号で検索したりすることもできます。

考慮すべき細心の注意には、他のコマンドが実行されたときに履歴ファイルが閉じられていること、およびサブシェルが履歴に書き込まれないことを確認することが含まれます (通常)。複数のシェルが同じ履歴ファイルにアクセスできるかどうかを検討する必要があります。あなたの履歴はセッション間で保持されますか? 2 つのターミナル ウィンドウを同時に開いているとどうなりますか?

GNU readlineライブラリには、履歴ライブラリとの統合を可能にするフックがあります。また、履歴ライブラリも提供します。

于 2013-10-28T06:30:41.957 に答える