shにコマンド履歴がありますか?たとえば、アクセス方法や、明確にする方法などはありますか?
ここでシェルを明確にするには:Gui以外のLinuxシステムにログオンしていて、$ ShellがBashに設定されておらず、ダッシュまたはBourneのようなシェル。
マニュアルページは、一部のBSDシステムで見た「履歴」コマンドを参照していましたが、これは実際には私のシェルにはなく、後続のshmanページと情報ページで答えを簡単に見つけることができませんでした。
この投稿 の記述子のコメントは、おそらくshのキーバインディングについて学ぶ必要があることと関係があるのではないかと考えました実際にはシェル間の違いのようなものよりも。
明示的に設定されていない限り、デフォルトのシェル履歴はありません。持っているかどうかを確認するには、コマンドenv|grep -i hist
を実行でき、histfile
などの変数(大文字の場合があります)が表示された場合は、シェル履歴が有効になっていることを意味し、履歴ファイルの場所を確認する必要があります。クリアするには、ファイルを削除する以外の適切な方法を実行できます
すべてのシェルが履歴をサポートしているわけではありません。 dash
は、libeditサポートを使用してコンパイルされた場合、fc
コマンドによる履歴サポートが制限されますが、それ以外の場合はサポートされません。 dash
は履歴ファイルを保存できません。
多くの場合、シェルが上矢印キーをサポートしていない場合は、履歴ファイルも保存されないと想定できます。これは厳格な規則ではありませんが、私が遭遇したすべての場合に当てはまります。
他のいくつかのシェル(特にbash
、その他も)はreadlineを使用します。これは通常、ホームディレクトリの下の履歴を~/.*_history
ファイルとして保存し、*
はプログラムの名前に置き換えられます。 Python 3は、たとえばreadlineを使用し、その履歴を~/.python_history
に格納します。
シェルによっては、保存場所を構成できる場合とできない場合があります。 bash
およびzsh
は、HISTFILE
(すべて大文字)変数を使用します。シェルが正しく構成されている場合、これはすべきではありません環境変数であるため、env
に表示されている場合は間違いです(ただし、set
またはprintf %s\\n "$HISTFILE"
の出力には表示されます。 )。
プログラムが履歴をサポートしていない場合(たとえば、ed
、read
を使用するシェルスクリプト、またはmysql
の古いバージョン)、readlineを使用してbashのようなタブ補完、矢印キーを提供するrlwrap
と呼ばれるクロスプラットフォームアプリケーションがあります。取り扱い、および歴史。
醜いですが、ESXiホストのようにshしか利用できない古いシステムでこれを使用します。
cat `printf %s $HISTFILE`