私はbashの「history」コマンドが嫌いです。必要な履歴アイテムが見つかりません。時々私は私が欲しいものを'履歴で得ることができます| grep XXX'ですが、履歴が長すぎる(400以上のヒット!イェーイ)か、短すぎる(ヒットなし。ブー)ことがよくあります。
基本的に「スター」固有の履歴アイテムを作成し、グローバルスターリストとcwd固有のスターリストの両方を使用して、それらを常に履歴に表示できるようにする小さな「履歴ヘルパー」コマンドを作成しないでください。
素晴らしそうですね。だから私はこれを行うことによって歴史を素朴に読もうとしました:
system("history > blah")
FILE *fp = fopen("blah", "r")
ああ、それはうまくいきませんでした。ああ、わかりました。system()コマンドは独自のコンテキストで実行され、bashの履歴にアクセスできません。ドラッツ。では、 〜/.bash_historyを読んでみます
ba baaa〜いいえ。これは、a)history -w、またはb)シェルを終了するための呼び出しのいずれかへの最後の呼び出しまでの履歴のみを取得します。
それで、質問:Cの現在のbash履歴にプログラムでアクセスするにはどうすればよいですか?
(注:いいえ、〜/ .bash_historyの内容、現在の履歴、プロンプトから「history」と入力したときに表示される正確な出力ではありません。また、なぜCを尋ねるのですか?なぜですか...しかし、実際には、私はすでに便利なncursesラッパーを使用して、通常の端末で高度なオートコンプリートとサブ選択の履歴を検索できるようにします...)
編集:お願いします、貢献するのに役立つ何かがあれば、それを聞いてうれしいですが、「bashの履歴のマニュアルページを読むべきです」のようなコメントに少しうんざりします。
私はそれらを読みました。履歴アイテムに「スター」を付けて、常に履歴に表示させることはできません。また、ディレクトリごとの履歴コンテキストを維持することもできます。これらは、歴史がサポートしていないものです。これに感謝します。そのため、特定の目的のためにヘルパー関数を作成したいと思います。「履歴のマニュアルページをもう少し読む必要があるかもしれません」などのコメントがある場合は、そのままにして、応答しないでください。それは私の質問に実際には対応していません。:)