2

c で単純な Linux シェルを実装しました。現在、いくつかの機能を追加していますが、すぐに考えたのは、上向き矢印で最後のコマンドを表示できるようにすることでした。

質問 1:
しかし、これを達成する方法がわかりません。あなたは?

質問 2:
「履歴」コマンドを保存する方法についてのコメントも歓迎します。すべての要素にアクセスできるキューのようなものは良い考えだと思います。私が間違っている?それを実装する必要がありますか、それとも知っておくべき優れた実装が既にありますか?

ありがとう。

4

3 に答える 3

5

libeditまたはreadlineサポートをシェルに組み込みます

于 2010-04-15T23:51:48.010 に答える
1

怠惰になりたい場合は、rlwrapを使用できます:

rlwrap prog
于 2010-04-15T23:58:04.093 に答える
0

HelenOSのシェルを書きました。bzr リポジトリをuspace/app/bdsh取得し、(bdsh は (b)rain (d)ead (sh)ell の略) に移動します。

その後、他の貢献者によって、入力を処理する関数に行編集/履歴/タブ補完が追加されました。純粋に ANSI C で書かれており、glibc にリンクせず、独自の機能を実装しています。コード (シェルと基礎となる HelenOS libc の両方) は 3 節 BSD であり、何にでも使用できます。

他に何もない場合でも、実装を調べて開始することが役立つ場合があります。

于 2010-04-16T06:26:51.110 に答える