shで履歴バッファにアクセスするには? (Bashではない)

shで履歴バッファにアクセスするには? (Bashではない)

コマンド履歴はありますか?シェン、アクセス方法と明確性を確保する方法など?

ここでシェルを明確にするために:GUIではなくLinuxシステムにログインしたとします。$シェルBashに設定する代わりに、DashやBourneに似たシェルに設定します。

マニュアルページには一部のBSDシステムで見た「history」コマンドが記載されていますが、これは実際には私のシェルにはありません。

記述子の説明この投稿おそらく、これはキーバインディングを理解する必要があるものとより関連性があるかもしれないと思いました。シェン実際、殻の違いと同じではありません。

将来の読者のために、ここにシェルの歴史に関する素晴らしい記事があります。

ベストアンサー1

すべてのシェルが履歴をサポートしているわけではありません。 libeditサポートにコンパイルされた場合、コマンドはdash制限された履歴サポートを提供しますが、fcそうでない場合は提供されません。dash履歴ファイルを保存できません。

通常、シェルが上矢印キーをサポートしていない場合、履歴ファイルも保存されないと想定できます。これは厳格で迅速なルールではありませんが、私が遭遇するすべての場合に当てはまります。

他のいくつかのシェル(bash特に他のシェル)は通常、履歴をホームディレクトリにファイルとして保存し、プログラム名に置き換えるreadlineを使用し~/.*_historyます*。たとえば、Python 3はreadlineを使用し、その履歴を~/.python_history

シェルによっては、保存場所を設定したり設定したりしない場合があります。bashそして(すべて大文字)変数をzsh使用してください。HISTFILEシェルが正しく設定されている場合してはいけないは環境変数なので、 で見ると間違いをしたことになります(ただしenvor の出力には引き続き表示する必要があります)。setprintf %s\\n "$HISTFILE"

プログラムが履歴をサポートしていない場合(edシェルスクリプトreadや以前のバージョンを使用するなど)、bashなどのタブを完了し、readlineを使用した矢印キーの処理と履歴の記録を提供するmysqlクロスプラットフォームアプリケーションが呼び出されます。rlwrap

おすすめ記事